pkixattributecertificate.erl
来自「OTP是开放电信平台的简称」· ERL 代码 · 共 1,806 行 · 第 1/4 页
ERL
1,806 行
%% Target%%================================'enc_Target'(Val) -> 'enc_Target'(Val, []).'enc_Target'({'Target',Val}, TagIn) -> 'enc_Target'(Val, TagIn);'enc_Target'(Val, TagIn) -> {EncBytes,EncLen} = case element(1,Val) of targetName -> 'PKIX1Implicit88':'enc_GeneralName'(element(2,Val), [<<160>>]); targetGroup -> 'PKIX1Implicit88':'enc_GeneralName'(element(2,Val), [<<161>>]); targetCert -> 'enc_TargetCert'(element(2,Val), [<<162>>]); Else -> exit({error,{asn1,{invalid_choice_type,Else}}}) end,?RT_BER:encode_tags(TagIn, EncBytes, EncLen).'dec_Target'(Tlv) -> 'dec_Target'(Tlv, []).'dec_Target'(Tlv, TagIn) ->Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of%% 'targetName' {131072, V1} -> {targetName, 'PKIX1Implicit88':'dec_GeneralName'(V1, [])};%% 'targetGroup' {131073, V1} -> {targetGroup, 'PKIX1Implicit88':'dec_GeneralName'(V1, [])};%% 'targetCert' {131074, V1} -> {targetCert, 'dec_TargetCert'(V1, [])}; Else -> exit({error,{asn1,{invalid_choice_tag,Else}}}) end.%%================================%% TargetCert%%================================'enc_TargetCert'(Val) -> 'enc_TargetCert'(Val, [<<48>>]).'enc_TargetCert'(Val, TagIn) ->{_,Cindex1, Cindex2, Cindex3} = Val,%%-------------------------------------------------%% attribute targetCertificate(1) External PKIXAttributeCertificate:IssuerSerial%%------------------------------------------------- {EncBytes1,EncLen1} = 'enc_IssuerSerial'(Cindex1, [<<48>>]),%%-------------------------------------------------%% attribute targetName(2) External PKIX1Implicit88:GeneralName OPTIONAL%%------------------------------------------------- {EncBytes2,EncLen2} = case Cindex2 of asn1_NOVALUE -> {<<>>,0}; _ -> 'PKIX1Implicit88':'enc_GeneralName'(Cindex2, []) end,%%-------------------------------------------------%% attribute certDigestInfo(3) External PKIXAttributeCertificate:ObjectDigestInfo OPTIONAL%%------------------------------------------------- {EncBytes3,EncLen3} = case Cindex3 of asn1_NOVALUE -> {<<>>,0}; _ -> 'enc_ObjectDigestInfo'(Cindex3, [<<48>>]) end, BytesSoFar = [EncBytes1, EncBytes2, EncBytes3],LenSoFar = EncLen1 + EncLen2 + EncLen3,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).'dec_TargetCert'(Tlv) -> 'dec_TargetCert'(Tlv, [16]).'dec_TargetCert'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute targetCertificate(1) External PKIXAttributeCertificate:IssuerSerial%%-------------------------------------------------[V1|Tlv2] = Tlv1, Term1 = 'dec_IssuerSerial'(V1, [16]),%%-------------------------------------------------%% attribute targetName(2) External PKIX1Implicit88:GeneralName OPTIONAL%%-------------------------------------------------{Term2,Tlv3} = case Tlv2 of[V2 = {131072,_}|TempTlv3] -> {'PKIX1Implicit88':'dec_GeneralName'(V2, []), TempTlv3};[V2 = {131073,_}|TempTlv3] -> {'PKIX1Implicit88':'dec_GeneralName'(V2, []), TempTlv3};[V2 = {131074,_}|TempTlv3] -> {'PKIX1Implicit88':'dec_GeneralName'(V2, []), TempTlv3};[V2 = {131075,_}|TempTlv3] -> {'PKIX1Implicit88':'dec_GeneralName'(V2, []), TempTlv3};[V2 = {131076,_}|TempTlv3] -> {'PKIX1Implicit88':'dec_GeneralName'(V2, []), TempTlv3};[V2 = {131077,_}|TempTlv3] -> {'PKIX1Implicit88':'dec_GeneralName'(V2, []), TempTlv3};[V2 = {131078,_}|TempTlv3] -> {'PKIX1Implicit88':'dec_GeneralName'(V2, []), TempTlv3};[V2 = {131079,_}|TempTlv3] -> {'PKIX1Implicit88':'dec_GeneralName'(V2, []), TempTlv3};[V2 = {131080,_}|TempTlv3] -> {'PKIX1Implicit88':'dec_GeneralName'(V2, []), TempTlv3}; _ -> { asn1_NOVALUE, Tlv2}end,%%-------------------------------------------------%% attribute certDigestInfo(3) External PKIXAttributeCertificate:ObjectDigestInfo OPTIONAL%%-------------------------------------------------{Term3,Tlv4} = case Tlv3 of[{16,V3}|TempTlv4] -> {'dec_ObjectDigestInfo'(V3, []), TempTlv4}; _ -> { asn1_NOVALUE, Tlv3}end,case Tlv4 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowedend, {'TargetCert', Term1, Term2, Term3}.%%================================%% IetfAttrSyntax%%================================'enc_IetfAttrSyntax'(Val) -> 'enc_IetfAttrSyntax'(Val, [<<48>>]).'enc_IetfAttrSyntax'(Val, TagIn) ->{_,Cindex1, Cindex2} = Val,%%-------------------------------------------------%% attribute policyAuthority(1) External PKIX1Implicit88:GeneralNames OPTIONAL%%------------------------------------------------- {EncBytes1,EncLen1} = case Cindex1 of asn1_NOVALUE -> {<<>>,0}; _ -> 'PKIX1Implicit88':'enc_GeneralNames'(Cindex1, [<<160>>]) end,%%-------------------------------------------------%% attribute values(2) with type SEQUENCE OF%%------------------------------------------------- {EncBytes2,EncLen2} = 'enc_IetfAttrSyntax_values'(Cindex2, [<<48>>]), BytesSoFar = [EncBytes1, EncBytes2],LenSoFar = EncLen1 + EncLen2,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).%%================================%% IetfAttrSyntax_values%%================================'enc_IetfAttrSyntax_values'({'IetfAttrSyntax_values',Val}, TagIn) -> 'enc_IetfAttrSyntax_values'(Val, TagIn);'enc_IetfAttrSyntax_values'(Val, TagIn) -> {EncBytes,EncLen} = 'enc_IetfAttrSyntax_values_components'(Val,[],0), ?RT_BER:encode_tags(TagIn, EncBytes, EncLen).'enc_IetfAttrSyntax_values_components'([], AccBytes, AccLen) -> {lists:reverse(AccBytes),AccLen};'enc_IetfAttrSyntax_values_components'([H|T],AccBytes, AccLen) -> {EncBytes,EncLen} = 'enc_IetfAttrSyntax_values_SEQOF'(H, []), 'enc_IetfAttrSyntax_values_components'(T,[EncBytes|AccBytes], AccLen + EncLen).%%================================%% IetfAttrSyntax_values_SEQOF%%================================'enc_IetfAttrSyntax_values_SEQOF'({'IetfAttrSyntax_values_SEQOF',Val}, TagIn) -> 'enc_IetfAttrSyntax_values_SEQOF'(Val, TagIn);'enc_IetfAttrSyntax_values_SEQOF'(Val, TagIn) -> {EncBytes,EncLen} = case element(1,Val) of octets -> ?RT_BER:encode_octet_string([], element(2,Val), [<<4>>]); oid -> ?RT_BER:encode_object_identifier(element(2,Val), [<<6>>]); string -> ?RT_BER:encode_UTF8_string([], element(2,Val), [<<12>>]); Else -> exit({error,{asn1,{invalid_choice_type,Else}}}) end,?RT_BER:encode_tags(TagIn, EncBytes, EncLen).'dec_IetfAttrSyntax_values_SEQOF'(Tlv, TagIn) ->Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of%% 'octets' {4, V1} -> {octets, ?RT_BER:decode_octet_string(V1,[],[])};%% 'oid' {6, V1} -> {oid, ?RT_BER:decode_object_identifier(V1,[])};%% 'string' {12, V1} -> {string, ?RT_BER:decode_UTF8_string(V1,[])}; Else -> exit({error,{asn1,{invalid_choice_tag,Else}}}) end.'dec_IetfAttrSyntax_values'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), ['dec_IetfAttrSyntax_values_SEQOF'(V1, []) || V1 <- Tlv1].'dec_IetfAttrSyntax'(Tlv) -> 'dec_IetfAttrSyntax'(Tlv, [16]).'dec_IetfAttrSyntax'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute policyAuthority(1) External PKIX1Implicit88:GeneralNames OPTIONAL%%-------------------------------------------------{Term1,Tlv2} = case Tlv1 of[{131072,V1}|TempTlv2] -> {'PKIX1Implicit88':'dec_GeneralNames'(V1, []), TempTlv2}; _ -> { asn1_NOVALUE, Tlv1}end,%%-------------------------------------------------%% attribute values(2) with type SEQUENCE OF%%-------------------------------------------------[V2|Tlv3] = Tlv2, Term2 = 'dec_IetfAttrSyntax_values'(V2, [16]),case Tlv3 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowedend, {'IetfAttrSyntax', Term1, Term2}.%%================================%% SvceAuthInfo%%================================'enc_SvceAuthInfo'(Val) -> 'enc_SvceAuthInfo'(Val, [<<48>>]).'enc_SvceAuthInfo'(Val, TagIn) ->{_,Cindex1, Cindex2, Cindex3} = Val,%%-------------------------------------------------%% attribute service(1) External PKIX1Implicit88:GeneralName%%------------------------------------------------- {EncBytes1,EncLen1} = 'PKIX1Implicit88':'enc_GeneralName'(Cindex1, []),%%-------------------------------------------------%% attribute ident(2) External PKIX1Implicit88:GeneralName%%------------------------------------------------- {EncBytes2,EncLen2} = 'PKIX1Implicit88':'enc_GeneralName'(Cindex2, []),%%-------------------------------------------------%% attribute authInfo(3) with type OCTET STRING OPTIONAL%%------------------------------------------------- {EncBytes3,EncLen3} = case Cindex3 of asn1_NOVALUE -> {<<>>,0}; _ -> ?RT_BER:encode_octet_string([], Cindex3, [<<4>>]) end, BytesSoFar = [EncBytes1, EncBytes2, EncBytes3],LenSoFar = EncLen1 + EncLen2 + EncLen3,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).'dec_SvceAuthInfo'(Tlv) -> 'dec_SvceAuthInfo'(Tlv, [16]).'dec_SvceAuthInfo'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute service(1) External PKIX1Implicit88:GeneralName%%-------------------------------------------------[V1|Tlv2] = Tlv1, Term1 = 'PKIX1Implicit88':'dec_GeneralName'(V1, []),%%-------------------------------------------------%% attribute ident(2) External PKIX1Implicit88:GeneralName%%-------------------------------------------------[V2|Tlv3] = Tlv2, Term2 = 'PKIX1Implicit88':'dec_GeneralName'(V2, []),%%-------------------------------------------------%% attribute authInfo(3) with type OCTET STRING OPTIONAL%%-------------------------------------------------{Term3,Tlv4} = case Tlv3 of[{4,V3}|TempTlv4] -> {?RT_BER:decode_octet_string(V3,[],[]), TempTlv4}; _ -> { asn1_NOVALUE, Tlv3}end,case Tlv4 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowedend, {'SvceAuthInfo', Term1, Term2, Term3}.%%================================%% RoleSyntax%%================================'enc_RoleSyntax'(Val) -> 'enc_RoleSyntax'(Val, [<<48>>]).'enc_RoleSyntax'(Val, TagIn) ->{_,Cindex1, Cindex2} = Val,%%-------------------------------------------------%% attribute roleAuthority(1) External PKIX1Implicit88:GeneralNames OPTIONAL%%------------------------------------------------- {EncBytes1,EncLen1} = case Cindex1 of asn1_NOVALUE -> {<<>>,0}; _ -> 'PKIX1Implicit88':'enc_GeneralNames'(Cindex1, [<<160>>]) end,%%-------------------------------------------------%% attribute roleName(2) External PKIX1Implicit88:GeneralName%%------------------------------------------------- {EncBytes2,EncLen2} = 'PKIX1Implicit88':'enc_GeneralName'(Cindex2, [<<161>>]), BytesSoFar = [EncBytes1, EncBytes2],LenSoFar = EncLen1 + EncLen2,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).'dec_RoleSyntax'(Tlv) -> 'dec_RoleSyntax'(Tlv, [16]).'dec_RoleSyntax'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute roleAuthority(1) External PKIX1Implicit88:GeneralNames OPTIONAL%%-------------------------------------------------{Term1,Tlv2} = case Tlv1 of[{131072,V1}|TempTlv2] -> {'PKIX1Implicit88':'dec_GeneralNames'(V1, []), TempTlv2}; _ -> { asn1_NOVALUE, Tlv1}end,%%-------------------------------------------------%% attribute roleName(2) External PKIX1Implicit88:GeneralName%%-------------------------------------------------[V2|Tlv3] = Tlv2, Term2 = 'PKIX1Implicit88':'dec_GeneralName'(V2, [131073]),case Tlv3 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowedend, {'RoleSyntax', Term1, Term2}.%%================================%% Clearance%%================================'enc_Clearance'(Val) -> 'enc_Clearance'(Val, [<<48>>]).'enc_Clearance'(Val, TagIn) ->{_,Cindex1, Cindex2, Cindex3} = Val,%%-------------------------------------------------%% attribute policyId(1) with type OBJECT IDENTIFIER%%------------------------------------------------- {EncBytes1,EncLen1} = ?RT_BER:encode_object_identifier(Cindex1, [<<128>>]),%%-------------------------------------------------%% attribute classList(2) with type BIT STRING DEFAULT = [unclassified]%%------------------------------------------------- {EncBytes2,EncLen2} = case catch asn1rt_check:check_bitstring([unclassified], Cindex2, [{unmarked,0},{unclassified,1},{restricted,2},{confidential,3},{secret,4},{topSecret,5}]) of true -> {[],0}; _ -> ?RT_BER:encode_bit_string([], Cindex2, [{unmarked,0},{unclassified,1},{restricted,2},{confidential,3},{secret,4},{topSecret,5}], [<<129>>]) end,%%-------------------------------------------------%% attribute securityCategories(3) with type SET OF OPTIONAL%%------------------------------------------------- {EncBytes3,EncLen3} = case Cindex3 of asn1_NOVALUE -> {<<>>,0}; _ -> 'enc_Clearance_securityCategories'(Cindex3, [<<162>>]) end, BytesSoFar = [EncBytes1, EncBytes2, EncBytes3],LenSoFar = EncLen1 + EncLen2 + EncLen3,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?