📄 ssl-pkix.erl
字号:
Tmpterm1 = ?RT_BER:decode_open_type(V2,[131073]),DecObjextensionAttributeTypeTerm1 = 'getdec_SupportedExtensionAttributes'(id, Term1),Term2 = case (catch DecObjextensionAttributeTypeTerm1('Type', Tmpterm1, [])) of {'EXIT', Reason1} -> exit({'Type not compatible with table constraint',Reason1}); Tmpterm2 -> Tmpterm2 end,case Tlv3 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowedend, {'ExtensionAttribute', Term1, Term2}.%%================================%% Extensions%%================================'enc_Extensions'(Val) -> 'enc_Extensions'(Val, [<<48>>]).'enc_Extensions'({'Extensions',Val}, TagIn) -> 'enc_Extensions'(Val, TagIn);'enc_Extensions'(Val, TagIn) -> {EncBytes,EncLen} = 'enc_Extensions_components'(Val,[],0), ?RT_BER:encode_tags(TagIn, EncBytes, EncLen).'enc_Extensions_components'([], AccBytes, AccLen) -> {lists:reverse(AccBytes),AccLen};'enc_Extensions_components'([H|T],AccBytes, AccLen) -> {EncBytes,EncLen} = 'enc_Extension'(H, [<<48>>]), 'enc_Extensions_components'(T,[EncBytes|AccBytes], AccLen + EncLen).'dec_Extensions'(Tlv) -> 'dec_Extensions'(Tlv, [16]).'dec_Extensions'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), ['dec_Extension'(V1, [16]) || V1 <- Tlv1].%%================================%% Extension%%================================'enc_Extension'(Val) -> 'enc_Extension'(Val, [<<48>>]).'enc_Extension'(Val, TagIn) ->{_,Cindex1, Cindex2, Cindex3} = Val,ObjextnID = 'getenc_SupportedExtensions'(id, Cindex1),%%-------------------------------------------------%% attribute extnID(1) with type fixedtypevaluefieldidtypetagUNIVERSAL6IMPLICIT0OBJECT IDENTIFIERno%%------------------------------------------------- {EncBytes1,EncLen1} = ?RT_BER:encode_object_identifier(Cindex1, [<<6>>]),%%-------------------------------------------------%% attribute critical(2) with type BOOLEAN DEFAULT = false%%------------------------------------------------- {EncBytes2,EncLen2} = case catch asn1rt_check:check_bool(false, Cindex2) of true -> {[],0}; _ -> ?RT_BER:encode_boolean(Cindex2, [<<1>>]) end,%%-------------------------------------------------%% attribute extnValue(3) with type typefieldType%%------------------------------------------------- {TmpBytes1,_} = ObjextnID('Type', Cindex3, []), {EncBytes3,EncLen3} = ?RT_BER:encode_open_type(TmpBytes1,[]), BytesSoFar = [EncBytes1, EncBytes2, EncBytes3],LenSoFar = EncLen1 + EncLen2 + EncLen3,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).'dec_Extension'(Tlv) -> 'dec_Extension'(Tlv, [16]).'dec_Extension'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute extnID(1) with type fixedtypevaluefieldidtypetagUNIVERSAL6IMPLICIT0OBJECT IDENTIFIERno%%-------------------------------------------------[V1|Tlv2] = Tlv1, Term1 = ?RT_BER:decode_object_identifier(V1,[6]),%%-------------------------------------------------%% attribute critical(2) with type BOOLEAN DEFAULT = false%%-------------------------------------------------{Term2,Tlv3} = case Tlv2 of[{1,V2}|TempTlv3] -> {?RT_BER:decode_boolean(V2,[]), TempTlv3}; _ -> {false,Tlv2}end,%%-------------------------------------------------%% attribute extnValue(3) with type typefieldType%%-------------------------------------------------[V3|Tlv4] = Tlv3, Tmpterm1 = ?RT_BER:decode_open_type(V3,[]),DecObjextnIDTerm1 = 'getdec_SupportedExtensions'(id, Term1),Term3 = case (catch DecObjextnIDTerm1('Type', Tmpterm1, [])) of {'EXIT', Reason1} -> exit({'Type not compatible with table constraint',Reason1}); Tmpterm2 -> Tmpterm2 end,case Tlv4 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowedend, {'Extension', Term1, Term2, Term3}.%%================================%% ObjId%%================================'enc_ObjId'(Val) -> 'enc_ObjId'(Val, [<<6>>]).'enc_ObjId'({'ObjId',Val}, TagIn) -> 'enc_ObjId'(Val, TagIn);'enc_ObjId'(Val, TagIn) ->?RT_BER:encode_object_identifier(Val, TagIn).'dec_ObjId'(Tlv) -> 'dec_ObjId'(Tlv, [6]).'dec_ObjId'(Tlv, TagIn) ->?RT_BER:decode_object_identifier(Tlv,TagIn).%%================================%% Boolean%%================================'enc_Boolean'(Val) -> 'enc_Boolean'(Val, [<<1>>]).'enc_Boolean'({'Boolean',Val}, TagIn) -> 'enc_Boolean'(Val, TagIn);'enc_Boolean'(Val, TagIn) ->?RT_BER:encode_boolean(Val, TagIn).'dec_Boolean'(Tlv) -> 'dec_Boolean'(Tlv, [1]).'dec_Boolean'(Tlv, TagIn) ->?RT_BER:decode_boolean(Tlv,TagIn).%%================================%% Any%%================================'enc_Any'(Val) -> 'enc_Any'(Val, []).'enc_Any'({'Any',Val}, TagIn) -> 'enc_Any'(Val, TagIn);'enc_Any'(Val, TagIn) ->%% OPEN TYPE?RT_BER:encode_open_type(Val, TagIn).'dec_Any'(Tlv) -> 'dec_Any'(Tlv, []).'dec_Any'(Tlv, TagIn) ->?RT_BER:decode_open_type_as_binary(Tlv,TagIn).%%================================%% Extension-Any%%================================'enc_Extension-Any'(Val) -> 'enc_Extension-Any'(Val, [<<48>>]).'enc_Extension-Any'(Val, TagIn) ->{_,Cindex1, Cindex2, Cindex3} = Val,%%-------------------------------------------------%% attribute extnID(1) with type OBJECT IDENTIFIER%%------------------------------------------------- {EncBytes1,EncLen1} = ?RT_BER:encode_object_identifier(Cindex1, [<<6>>]),%%-------------------------------------------------%% attribute critical(2) with type BOOLEAN DEFAULT = false%%------------------------------------------------- {EncBytes2,EncLen2} = case catch asn1rt_check:check_bool(false, Cindex2) of true -> {[],0}; _ -> ?RT_BER:encode_boolean(Cindex2, [<<1>>]) end,%%-------------------------------------------------%% attribute extnValue(3) with type ASN1_OPEN_TYPE%%------------------------------------------------- {EncBytes3,EncLen3} = ?RT_BER:encode_open_type(Cindex3, []), BytesSoFar = [EncBytes1, EncBytes2, EncBytes3],LenSoFar = EncLen1 + EncLen2 + EncLen3,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).'dec_Extension-Any'(Tlv) -> 'dec_Extension-Any'(Tlv, [16]).'dec_Extension-Any'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute extnID(1) with type OBJECT IDENTIFIER%%-------------------------------------------------[V1|Tlv2] = Tlv1, Term1 = ?RT_BER:decode_object_identifier(V1,[6]),%%-------------------------------------------------%% attribute critical(2) with type BOOLEAN DEFAULT = false%%-------------------------------------------------{Term2,Tlv3} = case Tlv2 of[{1,V2}|TempTlv3] -> {?RT_BER:decode_boolean(V2,[]), TempTlv3}; _ -> {false,Tlv2}end,%%-------------------------------------------------%% attribute extnValue(3) with type ASN1_OPEN_TYPE%%-------------------------------------------------[V3|Tlv4] = Tlv3, Term3 = ?RT_BER:decode_open_type_as_binary(V3,[]),case Tlv4 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowedend, {'Extension-Any', Term1, Term2, Term3}.%%================================%% name%%================================'enc_name'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520name'(Val, []).'dec_name'('Type', Bytes,_) -> Tlv = tlv_format(Bytes), 'PKIX1Explicit88':'dec_X520name'(Tlv, []).tlv_format(Bytes) when binary(Bytes) -> {Tlv,_}=?RT_BER:decode(Bytes), Tlv;tlv_format(Bytes) -> Bytes.%%================================%% surname%%================================'enc_surname'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520name'(Val, []).'dec_surname'('Type', Bytes,_) -> Tlv = tlv_format(Bytes), 'PKIX1Explicit88':'dec_X520name'(Tlv, []).%%================================%% givenName%%================================'enc_givenName'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520name'(Val, []).'dec_givenName'('Type', Bytes,_) -> Tlv = tlv_format(Bytes), 'PKIX1Explicit88':'dec_X520name'(Tlv, []).%%================================%% initials%%================================'enc_initials'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520name'(Val, []).'dec_initials'('Type', Bytes,_) -> Tlv = tlv_format(Bytes), 'PKIX1Explicit88':'dec_X520name'(Tlv, []).%%================================%% generationQualifier%%================================'enc_generationQualifier'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520name'(Val, []).'dec_generationQualifier'('Type', Bytes,_) -> Tlv = tlv_format(Bytes), 'PKIX1Explicit88':'dec_X520name'(Tlv, []).%%================================%% commonName%%================================'enc_commonName'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520CommonName'(Val, []).'dec_commonName'('Type', Bytes,_) -> Tlv = tlv_format(Bytes), 'PKIX1Explicit88':'dec_X520CommonName'(Tlv, []).%%================================%% localityName%%================================'enc_localityName'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520LocalityName'(Val, []).'dec_localityName'('Type', Bytes,_) -> Tlv = tlv_format(Bytes), 'PKIX1Explicit88':'dec_X520LocalityName'(Tlv, []).%%================================%% stateOrProvinceName%%================================'enc_stateOrProvinceName'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520StateOrProvinceName'(Val, []).'dec_stateOrProvinceName'('Type', Bytes,_) -> Tlv = tlv_format(Bytes), 'PKIX1Explicit88':'dec_X520StateOrProvinceName'(Tlv, []).%%================================%% organizationName%%================================'enc_organizationName'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520OrganizationName'(Val, []).'dec_organizationName'('Type', Bytes,_) -> Tlv = tlv_format(Bytes), 'PKIX1Explicit88':'dec_X520OrganizationName'(Tlv, []).%%================================%% organizationalUnitName%%================================'enc_organizationalUnitName'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520OrganizationalUnitName'(Val, []).'dec_organizationalUnitName'('Type', Bytes,_) -> Tlv = tlv_format(Bytes), 'PKIX1Explicit88':'dec_X520OrganizationalUnitName'(Tlv, []).%%================================%% title%%================================'enc_title'('Type', Val, _RestPrimFieldName) -> 'PKIX1Explicit88':'enc_X520Title'(Val, []).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -