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 + -
显示快捷键?