pkix1implicit88.erl

来自「OTP是开放电信平台的简称」· ERL 代码 · 共 2,076 行 · 第 1/5 页

ERL
2,076
字号
end,case Tlv3 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowedend,   {'UserNotice', Term1, Term2}.%%================================%%  NoticeReference%%================================'enc_NoticeReference'(Val) ->    'enc_NoticeReference'(Val, [<<48>>]).'enc_NoticeReference'(Val, TagIn) ->{_,Cindex1, Cindex2} = Val,%%-------------------------------------------------%% attribute organization(1)   External PKIX1Implicit88:DisplayText%%-------------------------------------------------   {EncBytes1,EncLen1} = 'enc_DisplayText'(Cindex1, []),%%-------------------------------------------------%% attribute noticeNumbers(2) with type SEQUENCE OF%%-------------------------------------------------   {EncBytes2,EncLen2} = 'enc_NoticeReference_noticeNumbers'(Cindex2, [<<48>>]),   BytesSoFar = [EncBytes1, EncBytes2],LenSoFar = EncLen1 + EncLen2,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).%%================================%%  NoticeReference_noticeNumbers%%================================'enc_NoticeReference_noticeNumbers'({'NoticeReference_noticeNumbers',Val}, TagIn) ->   'enc_NoticeReference_noticeNumbers'(Val, TagIn);'enc_NoticeReference_noticeNumbers'(Val, TagIn) ->      {EncBytes,EncLen} = 'enc_NoticeReference_noticeNumbers_components'(Val,[],0),   ?RT_BER:encode_tags(TagIn, EncBytes, EncLen).'enc_NoticeReference_noticeNumbers_components'([], AccBytes, AccLen) ->    {lists:reverse(AccBytes),AccLen};'enc_NoticeReference_noticeNumbers_components'([H|T],AccBytes, AccLen) ->   {EncBytes,EncLen} = ?RT_BER:encode_integer([], H, [<<2>>]),   'enc_NoticeReference_noticeNumbers_components'(T,[EncBytes|AccBytes], AccLen + EncLen).'dec_NoticeReference_noticeNumbers'(Tlv, TagIn) ->   %%-------------------------------------------------   %% decode tag and length    %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), [?RT_BER:decode_integer(V1,[],[2]) || V1 <- Tlv1].'dec_NoticeReference'(Tlv) ->   'dec_NoticeReference'(Tlv, [16]).'dec_NoticeReference'(Tlv, TagIn) ->   %%-------------------------------------------------   %% decode tag and length    %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute organization(1)   External PKIX1Implicit88:DisplayText%%-------------------------------------------------[V1|Tlv2] = Tlv1, Term1 = 'dec_DisplayText'(V1, []),%%-------------------------------------------------%% attribute noticeNumbers(2) with type SEQUENCE OF%%-------------------------------------------------[V2|Tlv3] = Tlv2, Term2 = 'dec_NoticeReference_noticeNumbers'(V2, [16]),case Tlv3 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowedend,   {'NoticeReference', Term1, Term2}.%%================================%%  DisplayText%%================================'enc_DisplayText'(Val) ->    'enc_DisplayText'(Val, []).'enc_DisplayText'({'DisplayText',Val}, TagIn) ->   'enc_DisplayText'(Val, TagIn);'enc_DisplayText'(Val, TagIn) ->   {EncBytes,EncLen} = case element(1,Val) of      ia5String ->         ?RT_BER:encode_restricted_string([], element(2,Val), 22, [<<22>>]);      visibleString ->         ?RT_BER:encode_restricted_string([], element(2,Val), 26, [<<26>>]);      bmpString ->         ?RT_BER:encode_BMP_string([], element(2,Val), [<<30>>]);      utf8String ->         ?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_DisplayText'(Tlv) ->   'dec_DisplayText'(Tlv, []).'dec_DisplayText'(Tlv, TagIn) ->Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of%% 'ia5String'    {22, V1} ->         {ia5String, ?RT_BER:decode_restricted_string(V1,{1,200},22,[])};%% 'visibleString'    {26, V1} ->         {visibleString, ?RT_BER:decode_restricted_string(V1,{1,200},26,[])};%% 'bmpString'    {30, V1} ->         {bmpString, ?RT_BER:decode_BMP_string(V1,{1,200},[])};%% 'utf8String'    {12, V1} ->         {utf8String, ?RT_BER:decode_UTF8_string(V1,[])};      Else ->          exit({error,{asn1,{invalid_choice_tag,Else}}})   end.%%================================%%  PolicyMappings%%================================'enc_PolicyMappings'(Val) ->    'enc_PolicyMappings'(Val, [<<48>>]).'enc_PolicyMappings'({'PolicyMappings',Val}, TagIn) ->   'enc_PolicyMappings'(Val, TagIn);'enc_PolicyMappings'(Val, TagIn) ->   {EncBytes,EncLen} = 'enc_PolicyMappings_components'(Val,[],0),   ?RT_BER:encode_tags(TagIn, EncBytes, EncLen).'enc_PolicyMappings_components'([], AccBytes, AccLen) ->    {lists:reverse(AccBytes),AccLen};'enc_PolicyMappings_components'([H|T],AccBytes, AccLen) ->   {EncBytes,EncLen} = 'enc_PolicyMappings_SEQOF'(H, [<<48>>]),   'enc_PolicyMappings_components'(T,[EncBytes|AccBytes], AccLen + EncLen).%%================================%%  PolicyMappings_SEQOF%%================================'enc_PolicyMappings_SEQOF'(Val, TagIn) ->   {_,Cindex1, Cindex2} = Val,%%-------------------------------------------------%% attribute issuerDomainPolicy(1) with type OBJECT IDENTIFIER%%-------------------------------------------------   {EncBytes1,EncLen1} = ?RT_BER:encode_object_identifier(Cindex1, [<<6>>]),%%-------------------------------------------------%% attribute subjectDomainPolicy(2) with type OBJECT IDENTIFIER%%-------------------------------------------------   {EncBytes2,EncLen2} = ?RT_BER:encode_object_identifier(Cindex2, [<<6>>]),   BytesSoFar = [EncBytes1, EncBytes2],LenSoFar = EncLen1 + EncLen2,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).'dec_PolicyMappings_SEQOF'(Tlv, TagIn) ->   %%-------------------------------------------------   %% decode tag and length    %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute issuerDomainPolicy(1) with type OBJECT IDENTIFIER%%-------------------------------------------------[V1|Tlv2] = Tlv1, Term1 = ?RT_BER:decode_object_identifier(V1,[6]),%%-------------------------------------------------%% attribute subjectDomainPolicy(2) with type OBJECT IDENTIFIER%%-------------------------------------------------[V2|Tlv3] = Tlv2, Term2 = ?RT_BER:decode_object_identifier(V2,[6]),case Tlv3 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowedend,   {'PolicyMappings_SEQOF', Term1, Term2}.'dec_PolicyMappings'(Tlv) ->   'dec_PolicyMappings'(Tlv, [16]).'dec_PolicyMappings'(Tlv, TagIn) ->   %%-------------------------------------------------   %% decode tag and length    %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), ['dec_PolicyMappings_SEQOF'(V1, [16]) || V1 <- Tlv1].%%================================%%  SubjectAltName%%================================'enc_SubjectAltName'(Val) ->    'enc_SubjectAltName'(Val, [<<48>>]).'enc_SubjectAltName'({'SubjectAltName',Val}, TagIn) ->   'enc_SubjectAltName'(Val, TagIn);'enc_SubjectAltName'(Val, TagIn) ->   'enc_GeneralNames'(Val, TagIn).'dec_SubjectAltName'(Tlv) ->   'dec_SubjectAltName'(Tlv, [16]).'dec_SubjectAltName'(Tlv, TagIn) ->'dec_GeneralNames'(Tlv, TagIn).%%================================%%  GeneralNames%%================================'enc_GeneralNames'(Val) ->    'enc_GeneralNames'(Val, [<<48>>]).'enc_GeneralNames'({'GeneralNames',Val}, TagIn) ->   'enc_GeneralNames'(Val, TagIn);'enc_GeneralNames'(Val, TagIn) ->   {EncBytes,EncLen} = 'enc_GeneralNames_components'(Val,[],0),   ?RT_BER:encode_tags(TagIn, EncBytes, EncLen).'enc_GeneralNames_components'([], AccBytes, AccLen) ->    {lists:reverse(AccBytes),AccLen};'enc_GeneralNames_components'([H|T],AccBytes, AccLen) ->   {EncBytes,EncLen} = 'enc_GeneralName'(H, []),   'enc_GeneralNames_components'(T,[EncBytes|AccBytes], AccLen + EncLen).'dec_GeneralNames'(Tlv) ->   'dec_GeneralNames'(Tlv, [16]).'dec_GeneralNames'(Tlv, TagIn) ->   %%-------------------------------------------------   %% decode tag and length    %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), ['dec_GeneralName'(V1, []) || V1 <- Tlv1].%%================================%%  GeneralName%%================================'enc_GeneralName'(Val) ->    'enc_GeneralName'(Val, []).'enc_GeneralName'({'GeneralName',Val}, TagIn) ->   'enc_GeneralName'(Val, TagIn);'enc_GeneralName'(Val, TagIn) ->   {EncBytes,EncLen} = case element(1,Val) of      otherName ->         'enc_AnotherName'(element(2,Val), [<<160>>]);      rfc822Name ->         ?RT_BER:encode_restricted_string([], element(2,Val), 22, [<<129>>]);      dNSName ->         ?RT_BER:encode_restricted_string([], element(2,Val), 22, [<<130>>]);      x400Address ->         'PKIX1Explicit88':'enc_ORAddress'(element(2,Val), [<<163>>]);      directoryName ->         'PKIX1Explicit88':'enc_Name'(element(2,Val), [<<164>>]);      ediPartyName ->         'enc_EDIPartyName'(element(2,Val), [<<165>>]);      uniformResourceIdentifier ->         ?RT_BER:encode_restricted_string([], element(2,Val), 22, [<<134>>]);      iPAddress ->         ?RT_BER:encode_octet_string([], element(2,Val), [<<135>>]);      registeredID ->         ?RT_BER:encode_object_identifier(element(2,Val), [<<136>>]);      Else ->          exit({error,{asn1,{invalid_choice_type,Else}}})   end,?RT_BER:encode_tags(TagIn, EncBytes, EncLen).'dec_GeneralName'(Tlv) ->   'dec_GeneralName'(Tlv, []).'dec_GeneralName'(Tlv, TagIn) ->Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of%% 'otherName'    {131072, V1} ->         {otherName, 'dec_AnotherName'(V1, [])};%% 'rfc822Name'    {131073, V1} ->         {rfc822Name, ?RT_BER:decode_restricted_string(V1,[],22,[])};%% 'dNSName'    {131074, V1} ->         {dNSName, ?RT_BER:decode_restricted_string(V1,[],22,[])};%% 'x400Address'    {131075, V1} ->         {x400Address, 'PKIX1Explicit88':'dec_ORAddress'(V1, [])};%% 'directoryName'    {131076, V1} ->         {directoryName, 'PKIX1Explicit88':'dec_Name'(V1, [])};%% 'ediPartyName'    {131077, V1} ->         {ediPartyName, 'dec_EDIPartyName'(V1, [])};%% 'uniformResourceIdentifier'    {131078, V1} ->         {uniformResourceIdentifier, ?RT_BER:decode_restricted_string(V1,[],22,[])};%% 'iPAddress'    {131079, V1} ->         {iPAddress, ?RT_BER:decode_octet_string(V1,[],[])};%% 'registeredID'    {131080, V1} ->         {registeredID, ?RT_BER:decode_object_identifier(V1,[])};      Else ->          exit({error,{asn1,{invalid_choice_tag,Else}}})   end.%%================================%%  AnotherName%%================================'enc_AnotherName'(Val) ->    'enc_AnotherName'(Val, [<<48>>]).'enc_AnotherName'(Val, TagIn) ->{_,Cindex1, Cindex2} = Val,%%-------------------------------------------------%% attribute type-id(1) with type OBJECT IDENTIFIER%%-------------------------------------------------   {EncBytes1,EncLen1} = ?RT_BER:encode_object_identifier(Cindex1, [<<6>>]),%%-------------------------------------------------%% attribute value(2) with type ASN1_OPEN_TYPE%%-------------------------------------------------   {EncBytes2,EncLen2} = ?RT_BER:encode_open_type(Cindex2, [<<160>>]),   BytesSoFar = [EncBytes1, EncBytes2],LenSoFar = EncLen1 + EncLen2,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).'dec_AnotherName'(Tlv) ->   'dec_AnotherName'(Tlv, [16]).'dec_AnotherName'(Tlv, TagIn) ->   %%-------------------------------------------------   %% decode tag and length 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?