pkix1algorithms88.erl
来自「OTP是开放电信平台的简称」· ERL 代码 · 共 1,327 行 · 第 1/3 页
ERL
1,327 行
%% Generated by the Erlang ASN.1 BER_V2-compiler version, utilizing bit-syntax:1.4.5%% Purpose: encoder and decoder to the types in mod PKIX1Algorithms88-module('PKIX1Algorithms88').-include("PKIX1Algorithms88.hrl").-define('RT_BER',asn1rt_ber_bin_v2).-asn1_info([{vsn,'1.4.5'}, {module,'PKIX1Algorithms88'}, {options,[ber_bin_v2,report_errors,{cwd,[47,108,100,105,115,107,47,100,97,105,108,121,95,98,117,105,108,100,47,111,116,112,95,112,114,101,98,117,105,108,100,95,114,49,49,98,46,50,48,48,55,45,48,54,45,49,49,95,49,57,47,111,116,112,95,115,114,99,95,82,49,49,66,45,53,47,108,105,98,47,115,115,108,47,112,107,105,120]},{outdir,[47,108,100,105,115,107,47,100,97,105,108,121,95,98,117,105,108,100,47,111,116,112,95,112,114,101,98,117,105,108,100,95,114,49,49,98,46,50,48,48,55,45,48,54,45,49,49,95,49,57,47,111,116,112,95,115,114,99,95,82,49,49,66,45,53,47,108,105,98,47,115,115,108,47,112,107,105,120]},noobj,optimize,compact_bit_string,der,{i,[46]},{i,[47,108,100,105,115,107,47,100,97,105,108,121,95,98,117,105,108,100,47,111,116,112,95,112,114,101,98,117,105,108,100,95,114,49,49,98,46,50,48,48,55,45,48,54,45,49,49,95,49,57,47,111,116,112,95,115,114,99,95,82,49,49,66,45,53,47,108,105,98,47,115,115,108,47,112,107,105,120]}]}]).-export([encoding_rule/0]).-export(['enc_DSAPublicKey'/2,'enc_Dss-Parms'/2,'enc_Dss-Sig-Value'/2,'enc_RSAPublicKey'/2,'enc_DHPublicKey'/2,'enc_DomainParameters'/2,'enc_ValidationParms'/2,'enc_KEA-Parms-Id'/2,'enc_FieldID'/2,'enc_ECDSA-Sig-Value'/2,'enc_Prime-p'/2,'enc_Characteristic-two'/2,'enc_Trinomial'/2,'enc_Pentanomial'/2,'enc_FieldElement'/2,'enc_ECPoint'/2,'enc_EcpkParameters'/2,'enc_ECParameters'/2,'enc_ECPVer'/2,'enc_Curve'/2]).-export(['dec_DSAPublicKey'/2,'dec_Dss-Parms'/2,'dec_Dss-Sig-Value'/2,'dec_RSAPublicKey'/2,'dec_DHPublicKey'/2,'dec_DomainParameters'/2,'dec_ValidationParms'/2,'dec_KEA-Parms-Id'/2,'dec_FieldID'/2,'dec_ECDSA-Sig-Value'/2,'dec_Prime-p'/2,'dec_Characteristic-two'/2,'dec_Trinomial'/2,'dec_Pentanomial'/2,'dec_FieldElement'/2,'dec_ECPoint'/2,'dec_EcpkParameters'/2,'dec_ECParameters'/2,'dec_ECPVer'/2,'dec_Curve'/2]).-export(['md2'/0,'md5'/0,'id-sha1'/0,'id-dsa'/0,'id-dsa-with-sha1'/0,'pkcs-1'/0,'rsaEncryption'/0,'md2WithRSAEncryption'/0,'md5WithRSAEncryption'/0,'sha1WithRSAEncryption'/0,'dhpublicnumber'/0,'id-keyExchangeAlgorithm'/0,'ansi-X9-62'/0,'id-ecSigType'/0,'ecdsa-with-SHA1'/0,'id-fieldType'/0,'prime-field'/0,'characteristic-two-field'/0,'id-characteristic-two-basis'/0,'gnBasis'/0,'tpBasis'/0,'ppBasis'/0,'id-publicKeyType'/0,'id-ecPublicKey'/0,'ellipticCurve'/0,'c-TwoCurve'/0,'c2pnb163v1'/0,'c2pnb163v2'/0,'c2pnb163v3'/0,'c2pnb176w1'/0,'c2tnb191v1'/0,'c2tnb191v2'/0,'c2tnb191v3'/0,'c2onb191v4'/0,'c2onb191v5'/0,'c2pnb208w1'/0,'c2tnb239v1'/0,'c2tnb239v2'/0,'c2tnb239v3'/0,'c2onb239v4'/0,'c2onb239v5'/0,'c2pnb272w1'/0,'c2pnb304w1'/0,'c2tnb359v1'/0,'c2pnb368w1'/0,'c2tnb431r1'/0,'primeCurve'/0,'prime192v1'/0,'prime192v2'/0,'prime192v3'/0,'prime239v1'/0,'prime239v2'/0,'prime239v3'/0,'prime256v1'/0]).-export([info/0]).-export([encode/2,decode/2,encode_disp/2,decode_disp/2]).encoding_rule() -> ber_bin_v2.encode(Type,Data) ->case catch encode_disp(Type,Data) of {'EXIT',{error,Reason}} -> {error,Reason}; {'EXIT',Reason} -> {error,{asn1,Reason}}; {Bytes,_Len} -> {ok,Bytes}; Bytes -> {ok,Bytes}end.decode(Type,Data) ->case catch decode_disp(Type,element(1,?RT_BER:decode(Data))) of {'EXIT',{error,Reason}} -> {error,Reason}; {'EXIT',Reason} -> {error,{asn1,Reason}}; Result -> {ok,Result}end.encode_disp('DSAPublicKey',Data) -> 'enc_DSAPublicKey'(Data);encode_disp('Dss-Parms',Data) -> 'enc_Dss-Parms'(Data);encode_disp('Dss-Sig-Value',Data) -> 'enc_Dss-Sig-Value'(Data);encode_disp('RSAPublicKey',Data) -> 'enc_RSAPublicKey'(Data);encode_disp('DHPublicKey',Data) -> 'enc_DHPublicKey'(Data);encode_disp('DomainParameters',Data) -> 'enc_DomainParameters'(Data);encode_disp('ValidationParms',Data) -> 'enc_ValidationParms'(Data);encode_disp('KEA-Parms-Id',Data) -> 'enc_KEA-Parms-Id'(Data);encode_disp('FieldID',Data) -> 'enc_FieldID'(Data);encode_disp('ECDSA-Sig-Value',Data) -> 'enc_ECDSA-Sig-Value'(Data);encode_disp('Prime-p',Data) -> 'enc_Prime-p'(Data);encode_disp('Characteristic-two',Data) -> 'enc_Characteristic-two'(Data);encode_disp('Trinomial',Data) -> 'enc_Trinomial'(Data);encode_disp('Pentanomial',Data) -> 'enc_Pentanomial'(Data);encode_disp('FieldElement',Data) -> 'enc_FieldElement'(Data);encode_disp('ECPoint',Data) -> 'enc_ECPoint'(Data);encode_disp('EcpkParameters',Data) -> 'enc_EcpkParameters'(Data);encode_disp('ECParameters',Data) -> 'enc_ECParameters'(Data);encode_disp('ECPVer',Data) -> 'enc_ECPVer'(Data);encode_disp('Curve',Data) -> 'enc_Curve'(Data);encode_disp(Type,_Data) -> exit({error,{asn1,{undefined_type,Type}}}).decode_disp('DSAPublicKey',Data) -> 'dec_DSAPublicKey'(Data);decode_disp('Dss-Parms',Data) -> 'dec_Dss-Parms'(Data);decode_disp('Dss-Sig-Value',Data) -> 'dec_Dss-Sig-Value'(Data);decode_disp('RSAPublicKey',Data) -> 'dec_RSAPublicKey'(Data);decode_disp('DHPublicKey',Data) -> 'dec_DHPublicKey'(Data);decode_disp('DomainParameters',Data) -> 'dec_DomainParameters'(Data);decode_disp('ValidationParms',Data) -> 'dec_ValidationParms'(Data);decode_disp('KEA-Parms-Id',Data) -> 'dec_KEA-Parms-Id'(Data);decode_disp('FieldID',Data) -> 'dec_FieldID'(Data);decode_disp('ECDSA-Sig-Value',Data) -> 'dec_ECDSA-Sig-Value'(Data);decode_disp('Prime-p',Data) -> 'dec_Prime-p'(Data);decode_disp('Characteristic-two',Data) -> 'dec_Characteristic-two'(Data);decode_disp('Trinomial',Data) -> 'dec_Trinomial'(Data);decode_disp('Pentanomial',Data) -> 'dec_Pentanomial'(Data);decode_disp('FieldElement',Data) -> 'dec_FieldElement'(Data);decode_disp('ECPoint',Data) -> 'dec_ECPoint'(Data);decode_disp('EcpkParameters',Data) -> 'dec_EcpkParameters'(Data);decode_disp('ECParameters',Data) -> 'dec_ECParameters'(Data);decode_disp('ECPVer',Data) -> 'dec_ECPVer'(Data);decode_disp('Curve',Data) -> 'dec_Curve'(Data);decode_disp(Type,_Data) -> exit({error,{asn1,{undefined_type,Type}}}).info() -> case ?MODULE:module_info() of MI when is_list(MI) -> case lists:keysearch(attributes,1,MI) of {value,{_,Attributes}} when is_list(Attributes) -> case lists:keysearch(asn1_info,1,Attributes) of {value,{_,Info}} when is_list(Info) -> Info; _ -> [] end; _ -> [] end end.%%================================%% DSAPublicKey%%================================'enc_DSAPublicKey'(Val) -> 'enc_DSAPublicKey'(Val, [<<2>>]).'enc_DSAPublicKey'({'DSAPublicKey',Val}, TagIn) -> 'enc_DSAPublicKey'(Val, TagIn);'enc_DSAPublicKey'(Val, TagIn) ->?RT_BER:encode_integer([], Val, TagIn).'dec_DSAPublicKey'(Tlv) -> 'dec_DSAPublicKey'(Tlv, [2]).'dec_DSAPublicKey'(Tlv, TagIn) ->?RT_BER:decode_integer(Tlv,[],TagIn).%%================================%% Dss-Parms%%================================'enc_Dss-Parms'(Val) -> 'enc_Dss-Parms'(Val, [<<48>>]).'enc_Dss-Parms'(Val, TagIn) ->{_,Cindex1, Cindex2, Cindex3} = Val,%%-------------------------------------------------%% attribute p(1) with type INTEGER%%------------------------------------------------- {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], Cindex1, [<<2>>]),%%-------------------------------------------------%% attribute q(2) with type INTEGER%%------------------------------------------------- {EncBytes2,EncLen2} = ?RT_BER:encode_integer([], Cindex2, [<<2>>]),%%-------------------------------------------------%% attribute g(3) with type INTEGER%%------------------------------------------------- {EncBytes3,EncLen3} = ?RT_BER:encode_integer([], Cindex3, [<<2>>]), BytesSoFar = [EncBytes1, EncBytes2, EncBytes3],LenSoFar = EncLen1 + EncLen2 + EncLen3,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).'dec_Dss-Parms'(Tlv) -> 'dec_Dss-Parms'(Tlv, [16]).'dec_Dss-Parms'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute p(1) with type INTEGER%%-------------------------------------------------[V1|Tlv2] = Tlv1, Term1 = ?RT_BER:decode_integer(V1,[],[2]),%%-------------------------------------------------%% attribute q(2) with type INTEGER%%-------------------------------------------------[V2|Tlv3] = Tlv2, Term2 = ?RT_BER:decode_integer(V2,[],[2]),%%-------------------------------------------------%% attribute g(3) with type INTEGER%%-------------------------------------------------[V3|Tlv4] = Tlv3, Term3 = ?RT_BER:decode_integer(V3,[],[2]),case Tlv4 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowedend, {'Dss-Parms', Term1, Term2, Term3}.%%================================%% Dss-Sig-Value%%================================'enc_Dss-Sig-Value'(Val) -> 'enc_Dss-Sig-Value'(Val, [<<48>>]).'enc_Dss-Sig-Value'(Val, TagIn) ->{_,Cindex1, Cindex2} = Val,%%-------------------------------------------------%% attribute r(1) with type INTEGER%%------------------------------------------------- {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], Cindex1, [<<2>>]),%%-------------------------------------------------%% attribute s(2) with type INTEGER%%------------------------------------------------- {EncBytes2,EncLen2} = ?RT_BER:encode_integer([], Cindex2, [<<2>>]), BytesSoFar = [EncBytes1, EncBytes2],LenSoFar = EncLen1 + EncLen2,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).'dec_Dss-Sig-Value'(Tlv) -> 'dec_Dss-Sig-Value'(Tlv, [16]).'dec_Dss-Sig-Value'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute r(1) with type INTEGER%%-------------------------------------------------[V1|Tlv2] = Tlv1, Term1 = ?RT_BER:decode_integer(V1,[],[2]),%%-------------------------------------------------%% attribute s(2) with type INTEGER%%-------------------------------------------------[V2|Tlv3] = Tlv2, Term2 = ?RT_BER:decode_integer(V2,[],[2]),case Tlv3 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowedend, {'Dss-Sig-Value', Term1, Term2}.%%================================%% RSAPublicKey%%================================'enc_RSAPublicKey'(Val) -> 'enc_RSAPublicKey'(Val, [<<48>>]).'enc_RSAPublicKey'(Val, TagIn) ->{_,Cindex1, Cindex2} = Val,%%-------------------------------------------------%% attribute modulus(1) with type INTEGER%%------------------------------------------------- {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], Cindex1, [<<2>>]),%%-------------------------------------------------%% attribute publicExponent(2) with type INTEGER%%------------------------------------------------- {EncBytes2,EncLen2} = ?RT_BER:encode_integer([], Cindex2, [<<2>>]), BytesSoFar = [EncBytes1, EncBytes2],LenSoFar = EncLen1 + EncLen2,?RT_BER:encode_tags(TagIn, BytesSoFar, LenSoFar).'dec_RSAPublicKey'(Tlv) -> 'dec_RSAPublicKey'(Tlv, [16]).'dec_RSAPublicKey'(Tlv, TagIn) -> %%------------------------------------------------- %% decode tag and length %%-------------------------------------------------Tlv1 = ?RT_BER:match_tags(Tlv,TagIn), %%-------------------------------------------------%% attribute modulus(1) with type INTEGER%%-------------------------------------------------[V1|Tlv2] = Tlv1, Term1 = ?RT_BER:decode_integer(V1,[],[2]),%%-------------------------------------------------%% attribute publicExponent(2) with type INTEGER%%-------------------------------------------------[V2|Tlv3] = Tlv2, Term2 = ?RT_BER:decode_integer(V2,[],[2]),case Tlv3 of[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowedend, {'RSAPublicKey', Term1, Term2}.%%================================%% DHPublicKey%%================================'enc_DHPublicKey'(Val) -> 'enc_DHPublicKey'(Val, [<<2>>]).'enc_DHPublicKey'({'DHPublicKey',Val}, TagIn) -> 'enc_DHPublicKey'(Val, TagIn);'enc_DHPublicKey'(Val, TagIn) ->?RT_BER:encode_integer([], Val, TagIn).'dec_DHPublicKey'(Tlv) -> 'dec_DHPublicKey'(Tlv, [2]).'dec_DHPublicKey'(Tlv, TagIn) ->?RT_BER:decode_integer(Tlv,[],TagIn).%%================================%% DomainParameters%%================================'enc_DomainParameters'(Val) -> 'enc_DomainParameters'(Val, [<<48>>]).'enc_DomainParameters'(Val, TagIn) ->{_,Cindex1, Cindex2, Cindex3, Cindex4, Cindex5} = Val,%%-------------------------------------------------%% attribute p(1) with type INTEGER%%------------------------------------------------- {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], Cindex1, [<<2>>]),%%-------------------------------------------------%% attribute g(2) with type INTEGER%%------------------------------------------------- {EncBytes2,EncLen2} = ?RT_BER:encode_integer([], Cindex2, [<<2>>]),%%-------------------------------------------------%% attribute q(3) with type INTEGER
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?