=> Bootstrap dependency digest>=20211023: found digest-20220214 ===> Skipping vulnerability checks. WARNING: No /usr/pkg/pkgdb/pkg-vulnerabilities file found. WARNING: To fix run: `/usr/sbin/pkg_admin -K /usr/pkg/pkgdb fetch-pkg-vulnerabilities'. ===> Building for erlang-p1_mysql-1.0.20 /usr/pkg/bin/rebar compile ==> p1_mysql-1.0.20 (compile) Compiled src/p1_mysql_sup.erl Compiled src/p1_mysql_app.erl src/p1_mysql_auth.erl:161:19: Warning: public_key:encrypt_public/3 is deprecated; do not use Compiled src/p1_mysql_auth.erl Compiled src/p1_mysql_conn.erl Compiled src/p1_mysql.erl /usr/pkg/bin/rebar xref ==> p1_mysql-1.0.20 (xref) ERROR: xref failed while processing /pbulk/work/databases/erlang-p1_mysql/work/p1_mysql-1.0.20: {'EXIT', {{badmatch, [{attribute,{1,1},file,{"public_key.erl",1}}, {attribute,{23,2},module,public_key}, {attribute,{23,2},app_vsn,"public_key-1.16.1"}, {attribute, {1,1}, file, {"/pbulk/work/lang/erlang/work/otp-OTP-27.0.1/lib/public_key/src/../include/public_key.hrl", 1}}, {attribute, {1,1}, file, {"/pbulk/work/lang/erlang/work/otp-OTP-27.0.1/lib/public_key/src/../include/OTP-PUB-KEY.hrl", 1}}, {attribute, {9,2}, record, {'AlgorithmIdentifier-PKCS1', [{record_field,{10,3},{atom,{10,3},algorithm}}, {record_field, {11,3}, {atom,{11,3},parameters}, {atom,{11,16},asn1_NOVALUE}}]}}, {attribute, {14,2}, record, {'AttributePKCS-7', [{record_field,{15,3},{atom,{15,3},type}}, {record_field,{16,3},{atom,{16,3},values}}]}}, {attribute, {19,2}, record, {'AlgorithmIdentifierPKCS-7', [{record_field,{20,3},{atom,{20,3},algorithm}}, {record_field, {21,3}, {atom,{21,3},parameters}, {atom,{21,16},asn1_NOVALUE}}]}}, {attribute, {24,2}, record, {'AlgorithmIdentifierPKCS-10', [{record_field,{25,3},{atom,{25,3},algorithm}}, {record_field, {26,3}, {atom,{26,3},parameters}, {atom,{26,16},asn1_NOVALUE}}]}}, {attribute, {29,2}, record, {'AttributePKCS-10', [{record_field,{30,3},{atom,{30,3},type}}, {record_field,{31,3},{atom,{31,3},values}}]}}, {attribute, {34,2}, record, {'SubjectPublicKeyInfo-PKCS-10', [{record_field,{35,3},{atom,{35,3},algorithm}}, {record_field,{36,3},{atom,{36,3},subjectPublicKey}}]}}, {attribute, {39,2}, record, {'ECPrivateKey', [{record_field,{40,3},{atom,{40,3},version}}, {record_field,{41,3},{atom,{41,3},privateKey}}, {record_field, {42,3}, {atom,{42,3},parameters}, {atom,{42,16},asn1_NOVALUE}}, {record_field, {43,3}, {atom,{43,3},publicKey}, {atom,{43,15},asn1_NOVALUE}}, {record_field, {44,3}, {atom,{44,3},attributes}, {atom,{44,16},asn1_NOVALUE}}]}}, {attribute, {47,2}, record, {'DSAPrivateKey', [{record_field,{48,3},{atom,{48,3},version}}, {record_field,{49,3},{atom,{49,3},p}}, {record_field,{50,3},{atom,{50,3},q}}, {record_field,{51,3},{atom,{51,3},g}}, {record_field,{52,3},{atom,{52,3},y}}, {record_field,{53,3},{atom,{53,3},x}}]}}, {attribute, {56,2}, record, {'DHParameter', [{record_field,{57,3},{atom,{57,3},prime}}, {record_field,{58,3},{atom,{58,3},base}}, {record_field, {59,3}, {atom,{59,3},privateValueLength}, {atom,{59,24},asn1_NOVALUE}}]}}, {attribute, {62,2}, record, {'DigestAlgorithm', [{record_field,{63,3},{atom,{63,3},algorithm}}, {record_field, {64,3}, {atom,{64,3},parameters}, {atom,{64,16},asn1_NOVALUE}}]}}, {attribute, {67,2}, record, {'DigestInfoPKCS-1', [{record_field,{68,3},{atom,{68,3},digestAlgorithm}}, {record_field,{69,3},{atom,{69,3},digest}}]}}, {attribute, {72,2}, record, {'RSASSA-AlgorithmIdentifier', [{record_field,{73,3},{atom,{73,3},algorithm}}, {record_field, {74,3}, {atom,{74,3},parameters}, {atom,{74,16},asn1_NOVALUE}}]}}, {attribute, {77,2}, record, {'RSASSA-PSS-params', [{record_field, {78,3}, {atom,{78,3},hashAlgorithm}, {atom,{78,19},asn1_DEFAULT}}, {record_field, {79,3}, {atom,{79,3},maskGenAlgorithm}, {atom,{79,22},asn1_DEFAULT}}, {record_field, {80,3}, {atom,{80,3},saltLength}, {atom,{80,16},asn1_DEFAULT}}, {record_field, {81,3}, {atom,{81,3},trailerField}, {atom,{81,18},asn1_DEFAULT}}]}}, {attribute, {84,2}, record, {'RSAES-AlgorithmIdentifier', [{record_field,{85,3},{atom,{85,3},algorithm}}, {record_field, {86,3}, {atom,{86,3},parameters}, {atom,{86,16},asn1_NOVALUE}}]}}, {attribute, {89,2}, record, {'RSAES-OAEP-params', [{record_field, {90,3}, {atom,{90,3},hashAlgorithm}, {atom,{90,19},asn1_DEFAULT}}, {record_field, {91,3}, {atom,{91,3},maskGenAlgorithm}, {atom,{91,22},asn1_DEFAULT}}, {record_field, {92,3}, {atom,{92,3},pSourceAlgorithm}, {atom,{92,22},asn1_DEFAULT}}]}}, {attribute, {95,2}, record, {'OtherPrimeInfo', [{record_field,{96,3},{atom,{96,3},prime}}, {record_field,{97,3},{atom,{97,3},exponent}}, {record_field,{98,3},{atom,{98,3},coefficient}}]}}, {attribute, {101,2}, record, {'RSAPrivateKey', [{record_field,{102,3},{atom,{102,3},version}}, {record_field,{103,3},{atom,{103,3},modulus}}, {record_field,{104,3},{atom,{104,3},publicExponent}}, {record_field,{105,3},{atom,{105,3},privateExponent}}, {record_field,{106,3},{atom,{106,3},prime1}}, {record_field,{107,3},{atom,{107,3},prime2}}, {record_field,{108,3},{atom,{108,3},exponent1}}, {record_field,{109,3},{atom,{109,3},exponent2}}, {record_field,{110,3},{atom,{110,3},coefficient}}, {record_field, {111,3}, {atom,{111,3},otherPrimeInfos}, {atom,{111,21},asn1_NOVALUE}}]}}, {attribute, {114,2}, record, {'RSAPublicKey', [{record_field,{115,3},{atom,{115,3},modulus}}, {record_field,{116,3},{atom,{116,3},publicExponent}}]}}, {attribute, {119,2}, record, {'PSourceAlgorithm', [{record_field,{120,3},{atom,{120,3},algorithm}}, {record_field, {121,3}, {atom,{121,3},parameters}, {atom,{121,16},asn1_NOVALUE}}]}}, {attribute, {124,2}, record, {'MaskGenAlgorithm', [{record_field,{125,3},{atom,{125,3},algorithm}}, {record_field, {126,3}, {atom,{126,3},parameters}, {atom,{126,16},asn1_NOVALUE}}]}}, {attribute, {129,2}, record, {'HashAlgorithm', [{record_field,{130,3},{atom,{130,3},algorithm}}, {record_field, {131,3}, {atom,{131,3},parameters}, {atom,{131,16},asn1_NOVALUE}}]}}, {attribute, {134,2}, record, {'Curve', [{record_field,{135,3},{atom,{135,3},a}}, {record_field,{136,3},{atom,{136,3},b}}, {record_field, {137,3}, {atom,{137,3},seed}, {atom,{137,10},asn1_NOVALUE}}]}}, {attribute, {140,2}, record, {'ECParameters', [{record_field,{141,3},{atom,{141,3},version}}, {record_field,{142,3},{atom,{142,3},fieldID}}, {record_field,{143,3},{atom,{143,3},curve}}, {record_field,{144,3},{atom,{144,3},base}}, {record_field,{145,3},{atom,{145,3},order}}, {record_field, {146,3}, {atom,{146,3},cofactor}, {atom,{146,14},asn1_NOVALUE}}]}}, {attribute, {149,2}, record, {'Pentanomial', [{record_field,{150,3},{atom,{150,3},k1}}, {record_field,{151,3},{atom,{151,3},k2}}, {record_field,{152,3},{atom,{152,3},k3}}]}}, {attribute, {155,2}, record, {'Characteristic-two', [{record_field,{156,3},{atom,{156,3},m}}, {record_field,{157,3},{atom,{157,3},basis}}, {record_field,{158,3},{atom,{158,3},parameters}}]}}, {attribute, {161,2}, record, {'ECDSA-Sig-Value', [{record_field,{162,3},{atom,{162,3},r}}, {record_field,{163,3},{atom,{163,3},s}}]}}, {attribute, {166,2}, record, {'FieldID', [{record_field,{167,3},{atom,{167,3},fieldType}}, {record_field,{168,3},{atom,{168,3},parameters}}]}}, {attribute, {171,2}, record, {'ValidationParms', [{record_field,{172,3},{atom,{172,3},seed}}, {record_field,{173,3},{atom,{173,3},pgenCounter}}]}}, {attribute, {176,2}, record, {'DomainParameters', [{record_field,{177,3},{atom,{177,3},p}}, {record_field,{178,3},{atom,{178,3},g}}, {record_field,{179,3},{atom,{179,3},q}}, {record_field,{180,3},{atom,{180,3},j},{atom,{180,7},asn1_NOVALUE}}, {record_field, {181,3}, {atom,{181,3},validationParms}, {atom,{181,21},asn1_NOVALUE}}]}}, {attribute, {184,2}, record, {'Dss-Sig-Value', [{record_field,{185,3},{atom,{185,3},r}}, {record_field,{186,3},{atom,{186,3},s}}]}}, {attribute, {189,2}, record, {'Dss-Parms', [{record_field,{190,3},{atom,{190,3},p}}, {record_field,{191,3},{atom,{191,3},q}}, {record_field,{192,3},{atom,{192,3},g}}]}}, {attribute, {195,2}, record, {'ACClearAttrs', [{record_field,{196,3},{atom,{196,3},acIssuer}}, {record_field,{197,3},{atom,{197,3},acSerial}}, {record_field,{198,3},{atom,{198,3},attrs}}]}}, {attribute, {201,2}, record, {'AAControls', [{record_field, {202,3}, {atom,{202,3},pathLenConstraint}, {atom,{202,23},asn1_NOVALUE}}, {record_field, {203,3}, {atom,{203,3},permittedAttrs}, {atom,{203,20},asn1_NOVALUE}}, {record_field, {204,3}, {atom,{204,3},excludedAttrs}, {atom,{204,19},asn1_NOVALUE}}, {record_field, {205,3}, {atom,{205,3},permitUnSpecified}, {atom,{205,23},asn1_DEFAULT}}]}}, {attribute, {208,2}, record, {'SecurityCategory', [{record_field,{209,3},{atom,{209,3},type}}, {record_field,{210,3},{atom,{210,3},value}}]}}, {attribute, {213,2}, record, {'Clearance', [{record_field,{214,3},{atom,{214,3},policyId}}, {record_field, {215,3}, {atom,{215,3},classList}, {atom,{215,15},asn1_DEFAULT}}, {record_field, {216,3}, {atom,{216,3},securityCategories}, {atom,{216,24},asn1_NOVALUE}}]}}, {attribute, {219,2}, record, {'RoleSyntax', [{record_field, {220,3}, {atom,{220,3},roleAuthority}, {atom,{220,19},asn1_NOVALUE}}, {record_field,{221,3},{atom,{221,3},roleName}}]}}, {attribute, {224,2}, record, {'SvceAuthInfo', [{record_field,{225,3},{atom,{225,3},service}}, {record_field,{226,3},{atom,{226,3},ident}}, {record_field, {227,3}, {atom,{227,3},authInfo}, {atom,{227,14},asn1_NOVALUE}}]}}, {attribute, {230,2}, record, {'IetfAttrSyntax', [{record_field, {231,3}, {atom,{231,3},policyAuthority}, {atom,{231,21},asn1_NOVALUE}}, {record_field,{232,3},{atom,{232,3},values}}]}}, {attribute, {235,2}, record, {'TargetCert', [{record_field,{236,3},{atom,{236,3},targetCertificate}}, {record_field, {237,3}, {atom,{237,3},targetName}, {atom,{237,16},asn1_NOVALUE}}, {record_field, {238,3}, {atom,{238,3},certDigestInfo}, {atom,{238,20},asn1_NOVALUE}}]}}, {attribute, {241,2}, record, {'AttCertValidityPeriod', [{record_field,{242,3},{atom,{242,3},notBeforeTime}}, {record_field,{243,3},{atom,{243,3},notAfterTime}}]}}, {attribute, {246,2}, record, {'IssuerSerial', [{record_field,{247,3},{atom,{247,3},issuer}}, {record_field,{248,3},{atom,{248,3},serial}}, {record_field, {249,3}, {atom,{249,3},issuerUID}, {atom,{249,15},asn1_NOVALUE}}]}}, {attribute, {252,2}, record, {'V2Form', [{record_field, {253,3}, {atom,{253,3},issuerName}, {atom,{253,16},asn1_NOVALUE}}, {record_field, {254,3}, {atom,{254,3},baseCertificateID}, {atom,{254,23},asn1_NOVALUE}}, {record_field, {255,3}, {atom,{255,3},objectDigestInfo}, {atom,{255,22},asn1_NOVALUE}}]}}, {attribute, {258,2}, record, {'ObjectDigestInfo', [{record_field,{259,3},{atom,{259,3},digestedObjectType}}, {record_field, {260,3}, {atom,{260,3},otherObjectTypeID}, {atom,{260,23},asn1_NOVALUE}}, {record_field,{261,3},{atom,{261,3},digestAlgorithm}}, {record_field,{262,3},{atom,{262,3},objectDigest}}]}}, {attribute, {265,2}, record, {'Holder', [{record_field, {266,3}, {atom,{266,3},baseCertificateID}, {atom,{266,23},asn1_NOVALUE}}, {record_field, {267,3}, {atom,{267,3},entityName}, {atom,{267,16},asn1_NOVALUE}}, {record_field, {268,3}, {atom,{268,3},objectDigestInfo}, {atom,{268,22},asn1_NOVALUE}}]}}, {attribute, {271,2}, record, {'AttributeCertificateInfo', [{record_field,{272,3},{atom,{272,3},version}}, {record_field,{273,3},{atom,{273,3},holder}}, {record_field,{274,3},{atom,{274,3},issuer}}, {record_field,{275,3},{atom,{275,3},signature}}, {record_field,{276,3},{atom,{276,3},serialNumber}}, {record_field,{277,3},{atom,{277,3},attrCertValidityPeriod}}, {record_field,{278,3},{atom,{278,3},attributes}}, {record_field, {279,3}, {atom,{279,3},issuerUniqueID}, {atom,{279,20},asn1_NOVALUE}}, {record_field, {280,3}, {atom,{280,3},extensions}, {atom,{280,16},asn1_NOVALUE}}]}}, {attribute, {283,2}, record, {'AttributeCertificate', [{record_field,{284,3},{atom,{284,3},acinfo}}, {record_field,{285,3},{atom,{285,3},signatureAlgorithm}}, {record_field,{286,3},{atom,{286,3},signatureValue}}]}}, {attribute, {289,2}, record, {'IssuingDistributionPoint', [{record_field, {290,3}, {atom,{290,3},distributionPoint}, {atom,{290,23},asn1_NOVALUE}}, {record_field, {291,3}, {atom,{291,3},onlyContainsUserCerts}, {atom,{291,27},asn1_DEFAULT}}, {record_field, {292,3}, {atom,{292,3},onlyContainsCACerts}, {atom,{292,25},asn1_DEFAULT}}, {record_field, {293,3}, {atom,{293,3},onlySomeReasons}, {atom,{293,21},asn1_NOVALUE}}, {record_field, {294,3}, {atom,{294,3},indirectCRL}, {atom,{294,17},asn1_DEFAULT}}, {record_field, {295,3}, {atom,{295,3},onlyContainsAttributeCerts}, {atom,{295,32},asn1_DEFAULT}}]}}, {attribute, {298,2}, record, {'AccessDescription', [{record_field,{299,3},{atom,{299,3},accessMethod}}, {record_field,{300,3},{atom,{300,3},accessLocation}}]}}, {attribute, {303,2}, record, {'DistributionPoint', [{record_field, {304,3}, {atom,{304,3},distributionPoint}, {atom,{304,23},asn1_NOVALUE}}, {record_field, {305,3}, {atom,{305,3},reasons}, {atom,{305,13},asn1_NOVALUE}}, {record_field, {306,3}, {atom,{306,3},cRLIssuer}, {atom,{306,15},asn1_NOVALUE}}]}}, {attribute, {309,2}, record, {'PolicyConstraints', [{record_field, {310,3}, {atom,{310,3},requireExplicitPolicy}, {atom,{310,27},asn1_NOVALUE}}, {record_field, {311,3}, {atom,{311,3},inhibitPolicyMapping}, {atom,{311,26},asn1_NOVALUE}}]}}, {attribute, {314,2}, record, {'GeneralSubtree', [{record_field,{315,3},{atom,{315,3},base}}, {record_field, {316,3}, {atom,{316,3},minimum}, {atom,{316,13},asn1_DEFAULT}}, {record_field, {317,3}, {atom,{317,3},maximum}, {atom,{317,13},asn1_NOVALUE}}]}}, {attribute, {320,2}, record, {'NameConstraints', [{record_field, {321,3}, {atom,{321,3},permittedSubtrees}, {atom,{321,23},asn1_NOVALUE}}, {record_field, {322,3}, {atom,{322,3},excludedSubtrees}, {atom,{322,22},asn1_NOVALUE}}]}}, {attribute, {325,2}, record, {'BasicConstraints', [{record_field,{326,3},{atom,{326,3},cA},{atom,{326,8},asn1_DEFAULT}}, {record_field, {327,3}, {atom,{327,3},pathLenConstraint}, {atom,{327,23},asn1_NOVALUE}}]}}, {attribute, {330,2}, record, {'EDIPartyName', [{record_field, {331,3}, {atom,{331,3},nameAssigner}, {atom,{331,18},asn1_NOVALUE}}, {record_field,{332,3},{atom,{332,3},partyName}}]}}, {attribute, {335,2}, record, {'AnotherName', [{record_field,{336,3},{atom,{336,3},'type-id'}}, {record_field,{337,3},{atom,{337,3},value}}]}}, {attribute, {340,2}, record, {'PolicyMappings_SEQOF', [{record_field,{341,3},{atom,{341,3},issuerDomainPolicy}}, {record_field,{342,3},{atom,{342,3},subjectDomainPolicy}}]}}, {attribute, {345,2}, record, {'NoticeReference', [{record_field,{346,3},{atom,{346,3},organization}}, {record_field,{347,3},{atom,{347,3},noticeNumbers}}]}}, {attribute, {350,2}, record, {'UserNotice', [{record_field, {351,3}, {atom,{351,3},noticeRef}, {atom,{351,15},asn1_NOVALUE}}, {record_field, {352,3}, {atom,{352,3},explicitText}, {atom,{352,18},asn1_NOVALUE}}]}}, {attribute, {355,2}, record, {'PolicyQualifierInfo', [{record_field,{356,3},{atom,{356,3},policyQualifierId}}, {record_field,{357,3},{atom,{357,3},qualifier}}]}}, {attribute, {360,2}, record, {'PolicyInformation', [{record_field,{361,3},{atom,{361,3},policyIdentifier}}, {record_field, {362,3}, {atom,{362,3},policyQualifiers}, {atom,{362,22},asn1_NOVALUE}}]}}, {attribute, {365,2}, record, {'PrivateKeyUsagePeriod', [{record_field, {366,3}, {atom,{366,3},notBefore}, {atom,{366,15},asn1_NOVALUE}}, {record_field, {367,3}, {atom,{367,3},notAfter}, {atom,{367,14},asn1_NOVALUE}}]}}, {attribute, {370,2}, record, {'AuthorityKeyIdentifier', [{record_field, {371,3}, {atom,{371,3},keyIdentifier}, {atom,{371,19},asn1_NOVALUE}}, {record_field, {372,3}, {atom,{372,3},authorityCertIssuer}, {atom,{372,25},asn1_NOVALUE}}, {record_field, {373,3}, {atom,{373,3},authorityCertSerialNumber}, {atom,{373,31},asn1_NOVALUE}}]}}, {attribute, {376,2}, record, {'EncryptedData', [{record_field,{377,3},{atom,{377,3},version}}, {record_field,{378,3},{atom,{378,3},encryptedContentInfo}}]}}, {attribute, {381,2}, record, {'DigestedData', [{record_field,{382,3},{atom,{382,3},version}}, {record_field,{383,3},{atom,{383,3},digestAlgorithm}}, {record_field,{384,3},{atom,{384,3},contentInfo}}, {record_field,{385,3},{atom,{385,3},digest}}]}}, {attribute, {388,2}, record, {'SignedAndEnvelopedData', [{record_field,{389,3},{atom,{389,3},version}}, {record_field,{390,3},{atom,{390,3},recipientInfos}}, {record_field,{391,3},{atom,{391,3},digestAlgorithms}}, {record_field,{392,3},{atom,{392,3},encryptedContentInfo}}, {record_field, {393,3}, {atom,{393,3},certificates}, {atom,{393,18},asn1_NOVALUE}}, {record_field,{394,3},{atom,{394,3},crls},{atom,{394,10},asn1_NOVALUE}}, {record_field,{395,3},{atom,{395,3},signerInfos}}]}}, {attribute, {398,2}, record, {'RecipientInfo', [{record_field,{399,3},{atom,{399,3},version}}, {record_field,{400,3},{atom,{400,3},issuerAndSerialNumber}}, {record_field,{401,3},{atom,{401,3},keyEncryptionAlgorithm}}, {record_field,{402,3},{atom,{402,3},encryptedKey}}]}}, {attribute, {405,2}, record, {'EncryptedContentInfo', [{record_field,{406,3},{atom,{406,3},contentType}}, {record_field,{407,3},{atom,{407,3},contentEncryptionAlgorithm}}, {record_field, {408,3}, {atom,{408,3},encryptedContent}, {atom,{408,22},asn1_NOVALUE}}]}}, {attribute, {411,2}, record, {'EnvelopedData', [{record_field,{412,3},{atom,{412,3},version}}, {record_field,{413,3},{atom,{413,3},recipientInfos}}, {record_field,{414,3},{atom,{414,3},encryptedContentInfo}}]}}, {attribute, {417,2}, record, {'DigestInfoPKCS-7', [{record_field,{418,3},{atom,{418,3},digestAlgorithm}}, {record_field,{419,3},{atom,{419,3},digest}}]}}, {attribute, {422,2}, record, {'SignerInfo', [{record_field,{423,3},{atom,{423,3},version}}, {record_field,{424,3},{atom,{424,3},issuerAndSerialNumber}}, {record_field,{425,3},{atom,{425,3},digestAlgorithm}}, {record_field, {426,3}, {atom,{426,3},authenticatedAttributes}, {atom,{426,29},asn1_NOVALUE}}, {record_field,{427,3},{atom,{427,3},digestEncryptionAlgorithm}}, {record_field,{428,3},{atom,{428,3},encryptedDigest}}, {record_field, {429,3}, {atom,{429,3},unauthenticatedAttributes}, {atom,{429,31},asn1_NOVALUE}}]}}, {attribute, {432,2}, record, {'SignerInfo_unauthenticatedAttributes_uaSet_SETOF', [{record_field,{433,3},{atom,{433,3},type}}, {record_field,{434,3},{atom,{434,3},values}}]}}, {attribute, {437,2}, record, {'SignerInfo_unauthenticatedAttributes_uaSequence_SEQOF', [{record_field,{438,3},{atom,{438,3},type}}, {record_field,{439,3},{atom,{439,3},values}}]}}, {attribute, {442,2}, record, {'SignedData', [{record_field,{443,3},{atom,{443,3},version}}, {record_field,{444,3},{atom,{444,3},digestAlgorithms}}, {record_field,{445,3},{atom,{445,3},contentInfo}}, {record_field, {446,3}, {atom,{446,3},certificates}, {atom,{446,18},asn1_NOVALUE}}, {record_field,{447,3},{atom,{447,3},crls},{atom,{447,10},asn1_NOVALUE}}, {record_field,{448,3},{atom,{448,3},signerInfos}}]}}, {attribute, {451,2}, record, {'ContentInfo', [{record_field,{452,3},{atom,{452,3},contentType}}, {record_field, {453,3}, {atom,{453,3},content}, {atom,{453,13},asn1_NOVALUE}}]}}, {attribute, {456,2}, record, {'KeyEncryptionAlgorithmIdentifier', [{record_field,{457,3},{atom,{457,3},algorithm}}, {record_field, {458,3}, {atom,{458,3},parameters}, {atom,{458,16},asn1_NOVALUE}}]}}, {attribute, {461,2}, record, {'IssuerAndSerialNumber', [{record_field,{462,3},{atom,{462,3},issuer}}, {record_field,{463,3},{atom,{463,3},serialNumber}}]}}, {attribute, {466,2}, record, {'DigestEncryptionAlgorithmIdentifier', [{record_field,{467,3},{atom,{467,3},algorithm}}, {record_field, {468,3}, {atom,{468,3},parameters}, {atom,{468,16},asn1_NOVALUE}}]}}, {attribute, {471,2}, record, {'DigestAlgorithmIdentifier', [{record_field,{472,3},{atom,{472,3},algorithm}}, {record_field, {473,3}, {atom,{473,3},parameters}, {atom,{473,16},asn1_NOVALUE}}]}}, {attribute, {476,2}, record, {'ContentEncryptionAlgorithmIdentifier', [{record_field,{477,3},{atom,{477,3},algorithm}}, {record_field, {478,3}, {atom,{478,3},parameters}, {atom,{478,16},asn1_NOVALUE}}]}}, {attribute, {481,2}, record, {'SignerInfoAuthenticatedAttributes_aaSet_SETOF', [{record_field,{482,3},{atom,{482,3},type}}, {record_field,{483,3},{atom,{483,3},values}}]}}, {attribute, {486,2}, record, {'SignerInfoAuthenticatedAttributes_aaSequence_SEQOF', [{record_field,{487,3},{atom,{487,3},type}}, {record_field,{488,3},{atom,{488,3},values}}]}}, {attribute, {491,2}, record, {'CertificationRequest', [{record_field,{492,3},{atom,{492,3},certificationRequestInfo}}, {record_field,{493,3},{atom,{493,3},signatureAlgorithm}}, {record_field,{494,3},{atom,{494,3},signature}}]}}, {attribute, {497,2}, record, {'CertificationRequest_signatureAlgorithm', [{record_field,{498,3},{atom,{498,3},algorithm}}, {record_field, {499,3}, {atom,{499,3},parameters}, {atom,{499,16},asn1_NOVALUE}}]}}, {attribute, {502,2}, record, {'CertificationRequestInfo', [{record_field,{503,3},{atom,{503,3},version}}, {record_field,{504,3},{atom,{504,3},subject}}, {record_field,{505,3},{atom,{505,3},subjectPKInfo}}, {record_field,{506,3},{atom,{506,3},attributes}}]}}, {attribute, {509,2}, record, {'CertificationRequestInfo_subjectPKInfo', [{record_field,{510,3},{atom,{510,3},algorithm}}, {record_field,{511,3},{atom,{511,3},subjectPublicKey}}]}}, {attribute, {514,2}, record, {'CertificationRequestInfo_subjectPKInfo_algorithm', [{record_field,{515,3},{atom,{515,3},algorithm}}, {record_field, {516,3}, {atom,{516,3},parameters}, {atom,{516,16},asn1_NOVALUE}}]}}, {attribute, {519,2}, record, {'CertificationRequestInfo_attributes_SETOF', [{record_field,{520,3},{atom,{520,3},type}}, {record_field,{521,3},{atom,{521,3},values}}]}}, {attribute, {524,2}, record, {'PreferredSignatureAlgorithm', [{record_field,{525,3},{atom,{525,3},sigIdentifier}}, {record_field, {526,3}, {atom,{526,3},certIdentifier}, {atom,{526,20},asn1_NOVALUE}}]}}, {attribute, {529,2}, record, {'CrlID', [{record_field, {530,3}, {atom,{530,3},crlUrl}, {atom,{530,12},asn1_NOVALUE}}, {record_field, {531,3}, {atom,{531,3},crlNum}, {atom,{531,12},asn1_NOVALUE}}, {record_field, {532,3}, {atom,{532,3},crlTime}, {atom,{532,13},asn1_NOVALUE}}]}}, {attribute, {535,2}, record, {'ServiceLocator', [{record_field,{536,3},{atom,{536,3},issuer}}, {record_field,{537,3},{atom,{537,3},locator}}]}}, {attribute, {540,2}, record, {'RevokedInfo', [{record_field,{541,3},{atom,{541,3},revocationTime}}, {record_field, {542,3}, {atom,{542,3},revocationReason}, {atom,{542,22},asn1_NOVALUE}}]}}, {attribute, {545,2}, record, {'SingleResponse', [{record_field,{546,3},{atom,{546,3},certID}}, {record_field,{547,3},{atom,{547,3},certStatus}}, {record_field,{548,3},{atom,{548,3},thisUpdate}}, {record_field, {549,3}, {atom,{549,3},nextUpdate}, {atom,{549,16},asn1_NOVALUE}}, {record_field, {550,3}, {atom,{550,3},singleExtensions}, {atom,{550,22},asn1_NOVALUE}}]}}, {attribute, {553,2}, record, {'ResponseData', [{record_field, {554,3}, {atom,{554,3},version}, {atom,{554,13},asn1_DEFAULT}}, {record_field,{555,3},{atom,{555,3},responderID}}, {record_field,{556,3},{atom,{556,3},producedAt}}, {record_field,{557,3},{atom,{557,3},responses}}, {record_field, {558,3}, {atom,{558,3},responseExtensions}, {atom,{558,24},asn1_NOVALUE}}]}}, {attribute, {561,2}, record, {'BasicOCSPResponse', [{record_field,{562,3},{atom,{562,3},tbsResponseData}}, {record_field,{563,3},{atom,{563,3},signatureAlgorithm}}, {record_field,{564,3},{atom,{564,3},signature}}, {record_field, {565,3}, {atom,{565,3},certs}, {atom,{565,11},asn1_NOVALUE}}]}}, {attribute, {568,2}, record, {'ResponseBytes', [{record_field,{569,3},{atom,{569,3},responseType}}, {record_field,{570,3},{atom,{570,3},response}}]}}, {attribute, {573,2}, record, {'OCSPResponse', [{record_field,{574,3},{atom,{574,3},responseStatus}}, {record_field, {575,3}, {atom,{575,3},responseBytes}, {atom,{575,19},asn1_NOVALUE}}]}}, {attribute, {578,2}, record, {'CertID', [{record_field,{579,3},{atom,{579,3},hashAlgorithm}}, {record_field,{580,3},{atom,{580,3},issuerNameHash}}, {record_field,{581,3},{atom,{581,3},issuerKeyHash}}, {record_field,{582,3},{atom,{582,3},serialNumber}}]}}, {attribute, {585,2}, record, {'Request', [{record_field,{586,3},{atom,{586,3},reqCert}}, {record_field, {587,3}, {atom,{587,3},singleRequestExtensions}, {atom,{587,29},asn1_NOVALUE}}]}}, {attribute, {590,2}, record, {'Signature', [{record_field,{591,3},{atom,{591,3},signatureAlgorithm}}, {record_field,{592,3},{atom,{592,3},signature}}, {record_field, {593,3}, {atom,{593,3},certs}, {atom,{593,11},asn1_NOVALUE}}]}}, {attribute, {596,2}, record, {'TBSRequest', [{record_field, {597,3}, {atom,{597,3},version}, {atom,{597,13},asn1_DEFAULT}}, {record_field, {598,3}, {atom,{598,3},requestorName}, {atom,{598,19},asn1_NOVALUE}}, {record_field,{599,3},{atom,{599,3},requestList}}, {record_field, {600,3}, {atom,{600,3},requestExtensions}, {atom,{600,23},asn1_NOVALUE}}]}}, {attribute, {603,2}, record, {'OCSPRequest', [{record_field,{604,3},{atom,{604,3},tbsRequest}}, {record_field, {605,3}, {atom,{605,3},optionalSignature}, {atom,{605,23},asn1_NOVALUE}}]}}, {attribute, {608,2}, record, {'TeletexDomainDefinedAttribute', [{record_field,{609,3},{atom,{609,3},type}}, {record_field,{610,3},{atom,{610,3},value}}]}}, {attribute, {613,2}, record, {'PresentationAddress', [{record_field, {614,3}, {atom,{614,3},pSelector}, {atom,{614,15},asn1_NOVALUE}}, {record_field, {615,3}, {atom,{615,3},sSelector}, {atom,{615,15},asn1_NOVALUE}}, {record_field, {616,3}, {atom,{616,3},tSelector}, {atom,{616,15},asn1_NOVALUE}}, {record_field,{617,3},{atom,{617,3},nAddresses}}]}}, {attribute, {620,2}, record, {'ExtendedNetworkAddress_e163-4-address', [{record_field,{621,3},{atom,{621,3},number}}, {record_field, {622,3}, {atom,{622,3},'sub-address'}, {atom,{622,19},asn1_NOVALUE}}]}}, {attribute, {625,2}, record, {'PDSParameter', [{record_field, {626,3}, {atom,{626,3},'printable-string'}, {atom,{626,24},asn1_NOVALUE}}, {record_field, {627,3}, {atom,{627,3},'teletex-string'}, {atom,{627,22},asn1_NOVALUE}}]}}, {attribute, {630,2}, record, {'UnformattedPostalAddress', [{record_field, {631,3}, {atom,{631,3},'printable-address'}, {atom,{631,25},asn1_NOVALUE}}, {record_field, {632,3}, {atom,{632,3},'teletex-string'}, {atom,{632,22},asn1_NOVALUE}}]}}, {attribute, {635,2}, record, {'TeletexPersonalName', [{record_field,{636,3},{atom,{636,3},surname}}, {record_field, {637,3}, {atom,{637,3},'given-name'}, {atom,{637,18},asn1_NOVALUE}}, {record_field, {638,3}, {atom,{638,3},initials}, {atom,{638,14},asn1_NOVALUE}}, {record_field, {639,3}, {atom,{639,3},'generation-qualifier'}, {atom,{639,28},asn1_NOVALUE}}]}}, {attribute, {642,2}, record, {'ExtensionAttribute', [{record_field,{643,3},{atom,{643,3},'extension-attribute-type'}}, {record_field,{644,3},{atom,{644,3},'extension-attribute-value'}}]}}, {attribute, {647,2}, record, {'BuiltInDomainDefinedAttribute', [{record_field,{648,3},{atom,{648,3},type}}, {record_field,{649,3},{atom,{649,3},value}}]}}, {attribute, {652,2}, record, {'PersonalName', [{record_field,{653,3},{atom,{653,3},surname}}, {record_field, {654,3}, {atom,{654,3},'given-name'}, {atom,{654,18},asn1_NOVALUE}}, {record_field, {655,3}, {atom,{655,3},initials}, {atom,{655,14},asn1_NOVALUE}}, {record_field, {656,3}, {atom,{656,3},'generation-qualifier'}, {atom,{656,28},asn1_NOVALUE}}]}}, {attribute, {659,2}, record, {'BuiltInStandardAttributes', [{record_field, {660,3}, {atom,{660,3},'country-name'}, {atom,{660,20},asn1_NOVALUE}}, {record_field, {661,3}, {atom,{661,3},'administration-domain-name'}, {atom,{661,34},asn1_NOVALUE}}, {record_field, {662,3}, {atom,{662,3},'network-address'}, {atom,{662,23},asn1_NOVALUE}}, {record_field, {663,3}, {atom,{663,3},'terminal-identifier'}, {atom,{663,27},asn1_NOVALUE}}, {record_field, {664,3}, {atom,{664,3},'private-domain-name'}, {atom,{664,27},asn1_NOVALUE}}, {record_field, {665,3}, {atom,{665,3},'organization-name'}, {atom,{665,25},asn1_NOVALUE}}, {record_field, {666,3}, {atom,{666,3},'numeric-user-identifier'}, {atom,{666,31},asn1_NOVALUE}}, {record_field, {667,3}, {atom,{667,3},'personal-name'}, {atom,{667,21},asn1_NOVALUE}}, {record_field, {668,3}, {atom,{668,3},'organizational-unit-names'}, {atom,{668,33},asn1_NOVALUE}}]}}, {attribute, {671,2}, record, {'ORAddress', [{record_field,{672,3},{atom,{672,3},'built-in-standard-attributes'}}, {record_field, {673,3}, {atom,{673,3},'built-in-domain-defined-attributes'}, {atom,{673,42},asn1_NOVALUE}}, {record_field, {674,3}, {atom,{674,3},'extension-attributes'}, {atom,{674,28},asn1_NOVALUE}}]}}, {attribute, {677,2}, record, {'AlgorithmIdentifier', [{record_field,{678,3},{atom,{678,3},algorithm}}, {record_field, {679,3}, {atom,{679,3},parameters}, {atom,{679,16},asn1_NOVALUE}}]}}, {attribute, {682,2}, record, {'TBSCertList', [{record_field, {683,3}, {atom,{683,3},version}, {atom,{683,13},asn1_NOVALUE}}, {record_field,{684,3},{atom,{684,3},signature}}, {record_field,{685,3},{atom,{685,3},issuer}}, {record_field,{686,3},{atom,{686,3},thisUpdate}}, {record_field, {687,3}, {atom,{687,3},nextUpdate}, {atom,{687,16},asn1_NOVALUE}}, {record_field, {688,3}, {atom,{688,3},revokedCertificates}, {atom,{688,25},asn1_NOVALUE}}, {record_field, {689,3}, {atom,{689,3},crlExtensions}, {atom,{689,19},asn1_NOVALUE}}]}}, {attribute, {692,2}, record, {'TBSCertList_revokedCertificates_SEQOF', [{record_field,{693,3},{atom,{693,3},userCertificate}}, {record_field,{694,3},{atom,{694,3},revocationDate}}, {record_field, {695,3}, {atom,{695,3},crlEntryExtensions}, {atom,{695,24},asn1_NOVALUE}}]}}, {attribute, {698,2}, record, {'CertificateList', [{record_field,{699,3},{atom,{699,3},tbsCertList}}, {record_field,{700,3},{atom,{700,3},signatureAlgorithm}}, {record_field,{701,3},{atom,{701,3},signature}}]}}, {attribute, {704,2}, record, {'Extension', [{record_field,{705,3},{atom,{705,3},extnID}}, {record_field, {706,3}, {atom,{706,3},critical}, {atom,{706,14},asn1_DEFAULT}}, {record_field,{707,3},{atom,{707,3},extnValue}}]}}, {attribute, {710,2}, record, {'SubjectPublicKeyInfo', [{record_field,{711,3},{atom,{711,3},algorithm}}, {record_field,{712,3},{atom,{712,3},subjectPublicKey}}]}}, {attribute, {715,2}, record, {'Validity', [{record_field,{716,3},{atom,{716,3},notBefore}}, {record_field,{717,3},{atom,{717,3},notAfter}}]}}, {attribute, {720,2}, record, {'TBSCertificate', [{record_field, {721,3}, {atom,{721,3},version}, {atom,{721,13},asn1_DEFAULT}}, {record_field,{722,3},{atom,{722,3},serialNumber}}, {record_field,{723,3},{atom,{723,3},signature}}, {record_field,{724,3},{atom,{724,3},issuer}}, {record_field,{725,3},{atom,{725,3},validity}}, {record_field,{726,3},{atom,{726,3},subject}}, {record_field,{727,3},{atom,{727,3},subjectPublicKeyInfo}}, {record_field, {728,3}, {atom,{728,3},issuerUniqueID}, {atom,{728,20},asn1_NOVALUE}}, {record_field, {729,3}, {atom,{729,3},subjectUniqueID}, {atom,{729,21},asn1_NOVALUE}}, {record_field, {730,3}, {atom,{730,3},extensions}, {atom,{730,16},asn1_NOVALUE}}]}}, {attribute, {733,2}, record, {'Certificate', [{record_field,{734,3},{atom,{734,3},tbsCertificate}}, {record_field,{735,3},{atom,{735,3},signatureAlgorithm}}, {record_field,{736,3},{atom,{736,3},signature}}]}}, {attribute, {739,2}, record, {'AttributeTypeAndValue', [{record_field,{740,3},{atom,{740,3},type}}, {record_field,{741,3},{atom,{741,3},value}}]}}, {attribute, {744,2}, record, {'Attribute', [{record_field,{745,3},{atom,{745,3},type}}, {record_field,{746,3},{atom,{746,3},values}}]}}, {attribute, {749,2}, record, {'OTPNoticeReference', [{record_field,{750,3},{atom,{750,3},organization}}, {record_field,{751,3},{atom,{751,3},noticeNumbers}}]}}, {attribute, {754,2}, record, {'OTPUserNotice', [{record_field, {755,3}, {atom,{755,3},noticeRef}, {atom,{755,15},asn1_NOVALUE}}, {record_field, {756,3}, {atom,{756,3},explicitText}, {atom,{756,18},asn1_NOVALUE}}]}}, {attribute, {759,2}, record, {'Extension-Any', [{record_field,{760,3},{atom,{760,3},extnID}}, {record_field, {761,3}, {atom,{761,3},critical}, {atom,{761,14},asn1_DEFAULT}}, {record_field,{762,3},{atom,{762,3},extnValue}}]}}, {attribute, {765,2}, record, {'OTPExtension', [{record_field,{766,3},{atom,{766,3},extnID}}, {record_field, {767,3}, {atom,{767,3},critical}, {atom,{767,14},asn1_DEFAULT}}, {record_field,{768,3},{atom,{768,3},extnValue}}]}}, {attribute, {771,2}, record, {'OTPExtensionAttribute', [{record_field,{772,3},{atom,{772,3},extensionAttributeType}}, {record_field,{773,3},{atom,{773,3},extensionAttributeValue}}]}}, {attribute, {776,2}, record, {'OTPCharacteristic-two', [{record_field,{777,3},{atom,{777,3},m}}, {record_field,{778,3},{atom,{778,3},basis}}, {record_field,{779,3},{atom,{779,3},parameters}}]}}, {attribute, {782,2}, record, {'OTPFieldID', [{record_field,{783,3},{atom,{783,3},fieldType}}, {record_field,{784,3},{atom,{784,3},parameters}}]}}, {attribute, {787,2}, record, {'PublicKeyAlgorithm', [{record_field,{788,3},{atom,{788,3},algorithm}}, {record_field, {789,3}, {atom,{789,3},parameters}, {atom,{789,16},asn1_NOVALUE}}]}}, {attribute, {792,2}, record, {'SignatureAlgorithm-Any', [{record_field,{793,3},{atom,{793,3},algorithm}}, {record_field, {794,3}, {atom,{794,3},parameters}, {atom,{794,16},asn1_NOVALUE}}]}}, {attribute, {797,2}, record, {'SignatureAlgorithm', [{record_field,{798,3},{atom,{798,3},algorithm}}, {record_field, {799,3}, {atom,{799,3},parameters}, {atom,{799,16},asn1_NOVALUE}}]}}, {attribute, {802,2}, record, {'OTPSubjectPublicKeyInfo-Any', [{record_field,{803,3},{atom,{803,3},algorithm}}, {record_field,{804,3},{atom,{804,3},subjectPublicKey}}]}}, {attribute, {807,2}, record, {'OTPSubjectPublicKeyInfo', [{record_field,{808,3},{atom,{808,3},algorithm}}, {record_field,{809,3},{atom,{809,3},subjectPublicKey}}]}}, {attribute, {812,2}, record, {'OTPOLDSubjectPublicKeyInfo', [{record_field,{813,3},{atom,{813,3},algorithm}}, {record_field,{814,3},{atom,{814,3},subjectPublicKey}}]}}, {attribute, {817,2}, record, {'OTPOLDSubjectPublicKeyInfo_algorithm', [{record_field,{818,3},{atom,{818,3},algo}}, {record_field, {819,3}, {atom,{819,3},parameters}, {atom,{819,16},asn1_NOVALUE}}]}}, {attribute, {822,2}, record, {'OTPAttributeTypeAndValue', [{record_field,{823,3},{atom,{823,3},type}}, {record_field,{824,3},{atom,{824,3},value}}]}}, {attribute, {827,2}, record, {'OTPTBSCertificate', [{record_field, {828,3}, {atom,{828,3},version}, {atom,{828,13},asn1_DEFAULT}}, {record_field,{829,3},{atom,{829,3},serialNumber}}, {record_field,{830,3},{atom,{830,3},signature}}, {record_field,{831,3},{atom,{831,3},issuer}}, {record_field,{832,3},{atom,{832,3},validity}}, {record_field,{833,3},{atom,{833,3},subject}}, {record_field,{834,3},{atom,{834,3},subjectPublicKeyInfo}}, {record_field, {835,3}, {atom,{835,3},issuerUniqueID}, {atom,{835,20},asn1_NOVALUE}}, {record_field, {836,3}, {atom,{836,3},subjectUniqueID}, {atom,{836,21},asn1_NOVALUE}}, {record_field, {837,3}, {atom,{837,3},extensions}, {atom,{837,16},asn1_NOVALUE}}]}}, {attribute, {840,2}, record, {'OTPCertificate', [{record_field,{841,3},{atom,{841,3},tbsCertificate}}, {record_field,{842,3},{atom,{842,3},signatureAlgorithm}}, {record_field,{843,3},{atom,{843,3},signature}}]}}, {attribute, {27,1}, file, {"/pbulk/work/lang/erlang/work/otp-OTP-27.0.1/lib/public_key/src/../include/public_key.hrl", 27}}, {attribute, {1,1}, file, {"/pbulk/work/lang/erlang/work/otp-OTP-27.0.1/lib/public_key/src/../include/PKCS-FRAME.hrl", 1}}, {attribute, {9,2}, record, {'AlgorithmIdentifierPKCS5v2-0', [{record_field,{10,3},{atom,{10,3},algorithm}}, {record_field, {11,3}, {atom,{11,3},parameters}, {atom,{11,16},asn1_NOVALUE}}]}}, {attribute, {14,2}, record, {'PKAttribute', [{record_field,{15,3},{atom,{15,3},type}}, {record_field,{16,3},{atom,{16,3},values}}, {record_field, {17,3}, {atom,{17,3},valuesWithContext}, {atom,{17,23},asn1_NOVALUE}}]}}, {attribute, {20,2}, record, {'PKAttribute_valuesWithContext_SETOF', [{record_field,{21,3},{atom,{21,3},value}}, {record_field,{22,3},{atom,{22,3},contextList}}]}}, {attribute, {25,2}, record, {'AlgorithmIdentifierPKCS-8', [{record_field,{26,3},{atom,{26,3},algorithm}}, {record_field, {27,3}, {atom,{27,3},parameters}, {atom,{27,16},asn1_NOVALUE}}]}}, {attribute, {30,2}, record, {'RC5-CBC-Parameters', [{record_field,{31,3},{atom,{31,3},version}}, {record_field,{32,3},{atom,{32,3},rounds}}, {record_field,{33,3},{atom,{33,3},blockSizeInBits}}, {record_field,{34,3},{atom,{34,3},iv},{atom,{34,8},asn1_NOVALUE}}]}}, {attribute, {37,2}, record, {'RC2-CBC-Parameter', [{record_field, {38,3}, {atom,{38,3},rc2ParameterVersion}, {atom,{38,25},asn1_NOVALUE}}, {record_field,{39,3},{atom,{39,3},iv}}]}}, {attribute, {42,2}, record, {'PBMAC1-params', [{record_field,{43,3},{atom,{43,3},keyDerivationFunc}}, {record_field,{44,3},{atom,{44,3},messageAuthScheme}}]}}, {attribute, {47,2}, record, {'PBMAC1-params_keyDerivationFunc', [{record_field,{48,3},{atom,{48,3},algorithm}}, {record_field, {49,3}, {atom,{49,3},parameters}, {atom,{49,16},asn1_NOVALUE}}]}}, {attribute, {52,2}, record, {'PBMAC1-params_messageAuthScheme', [{record_field,{53,3},{atom,{53,3},algorithm}}, {record_field, {54,3}, {atom,{54,3},parameters}, {atom,{54,16},asn1_NOVALUE}}]}}, {attribute, {57,2}, record, {'PBES2-params', [{record_field,{58,3},{atom,{58,3},keyDerivationFunc}}, {record_field,{59,3},{atom,{59,3},encryptionScheme}}]}}, {attribute, {62,2}, record, {'PBES2-params_keyDerivationFunc', [{record_field,{63,3},{atom,{63,3},algorithm}}, {record_field, {64,3}, {atom,{64,3},parameters}, {atom,{64,16},asn1_NOVALUE}}]}}, {attribute, {67,2}, record, {'PBES2-params_encryptionScheme', [{record_field,{68,3},{atom,{68,3},algorithm}}, {record_field, {69,3}, {atom,{69,3},parameters}, {atom,{69,16},asn1_NOVALUE}}]}}, {attribute, {72,2}, record, {'PBEParameter', [{record_field,{73,3},{atom,{73,3},salt}}, {record_field,{74,3},{atom,{74,3},iterationCount}}]}}, {attribute, {77,2}, record, {'PBKDF2-params', [{record_field,{78,3},{atom,{78,3},salt}}, {record_field,{79,3},{atom,{79,3},iterationCount}}, {record_field, {80,3}, {atom,{80,3},keyLength}, {atom,{80,15},asn1_NOVALUE}}, {record_field,{81,3},{atom,{81,3},prf},{atom,{81,9},asn1_DEFAULT}}]}}, {attribute, {84,2}, record, {'PBKDF2-params_salt_otherSource', [{record_field,{85,3},{atom,{85,3},algorithm}}, {record_field, {86,3}, {atom,{86,3},parameters}, {atom,{86,16},asn1_NOVALUE}}]}}, {attribute, {89,2}, record, {'PBKDF2-params_prf', [{record_field,{90,3},{atom,{90,3},algorithm}}, {record_field, {91,3}, {atom,{91,3},parameters}, {atom,{91,16},asn1_NOVALUE}}]}}, {attribute, {94,2}, record, {'Context', [{record_field,{95,3},{atom,{95,3},contextType}}, {record_field,{96,3},{atom,{96,3},contextValues}}, {record_field, {97,3}, {atom,{97,3},fallback}, {atom,{97,14},asn1_DEFAULT}}]}}, {attribute, {100,2}, record, {'EncryptedPrivateKeyInfo', [{record_field,{101,3},{atom,{101,3},encryptionAlgorithm}}, {record_field,{102,3},{atom,{102,3},encryptedData}}]}}, {attribute, {105,2}, record, {'EncryptedPrivateKeyInfo_encryptionAlgorithm', [{record_field,{106,3},{atom,{106,3},algorithm}}, {record_field, {107,3}, {atom,{107,3},parameters}, {atom,{107,16},asn1_NOVALUE}}]}}, {attribute, {110,2}, record, {'Attributes_SETOF', [{record_field,{111,3},{atom,{111,3},type}}, {record_field,{112,3},{atom,{112,3},values}}, {record_field, {113,3}, {atom,{113,3},valuesWithContext}, {atom,{113,23},asn1_NOVALUE}}]}}, {attribute, {116,2}, record, {'Attributes_SETOF_valuesWithContext_SETOF', [{record_field,{117,3},{atom,{117,3},value}}, {record_field,{118,3},{atom,{118,3},contextList}}]}}, {attribute, {121,2}, record, {'OneAsymmetricKey', [{record_field,{122,3},{atom,{122,3},version}}, {record_field,{123,3},{atom,{123,3},privateKeyAlgorithm}}, {record_field,{124,3},{atom,{124,3},privateKey}}, {record_field, {125,3}, {atom,{125,3},attributes}, {atom,{125,16},asn1_NOVALUE}}, {record_field, {127,3}, {atom,{127,3},publicKey}, {atom,{127,15},asn1_NOVALUE}}]}}, {attribute, {131,2}, record, {'OneAsymmetricKey_privateKeyAlgorithm', [{record_field,{132,3},{atom,{132,3},algorithm}}, {record_field, {133,3}, {atom,{133,3},parameters}, {atom,{133,16},asn1_NOVALUE}}]}}, {attribute, {136,2}, record, {'PrivateKeyInfo', [{record_field,{137,3},{atom,{137,3},version}}, {record_field,{138,3},{atom,{138,3},privateKeyAlgorithm}}, {record_field,{139,3},{atom,{139,3},privateKey}}, {record_field, {140,3}, {atom,{140,3},attributes}, {atom,{140,16},asn1_NOVALUE}}]}}, {attribute, {143,2}, record, {'PrivateKeyInfo_privateKeyAlgorithm', [{record_field,{144,3},{atom,{144,3},algorithm}}, {record_field, {145,3}, {atom,{145,3},parameters}, {atom,{145,16},asn1_NOVALUE}}]}}, {attribute, {28,1}, file, {"/pbulk/work/lang/erlang/work/otp-OTP-27.0.1/lib/public_key/src/../include/public_key.hrl", 28}}, {attribute, {29,2}, record, {'SubjectPublicKeyInfoAlgorithm', [{record_field,{30,5},{atom,{30,5},algorithm}}, {record_field, {31,5}, {atom,{31,5},parameters}, {atom,{31,18},asn1_NOVALUE}}]}}, {attribute, {44,2}, record, {path_validation_state, [{record_field,{46,10},{atom,{46,10},valid_policy_tree}}, {record_field,{47,10},{atom,{47,10},user_initial_policy_set}}, {record_field,{48,10},{atom,{48,10},explicit_policy}}, {record_field,{49,10},{atom,{49,10},inhibit_any_policy}}, {record_field,{50,10},{atom,{50,10},inhibit_policy_mapping}}, {record_field,{51,10},{atom,{51,10},policy_mapping_ext}}, {record_field,{52,10},{atom,{52,10},policy_constraint_ext}}, {record_field,{53,10},{atom,{53,10},policy_inhibitany_ext}}, {record_field,{54,10},{atom,{54,10},policy_ext_present}}, {record_field,{55,10},{atom,{55,10},policy_ext_any}}, {record_field,{56,10},{atom,{56,10},current_any_policy_qualifiers}}, {record_field,{57,10},{atom,{57,10},cert_num}}, {record_field,{58,10},{atom,{58,10},last_cert},{atom,{58,22},false}}, {record_field, {59,10}, {atom,{59,10},permitted_subtrees}, {atom,{59,31},no_constraints}}, {record_field,{60,10},{atom,{60,10},excluded_subtrees},{nil,{60,30}}}, {record_field,{61,10},{atom,{61,10},working_public_key_algorithm}}, {record_field,{62,10},{atom,{62,10},working_public_key}}, {record_field,{63,10},{atom,{63,10},working_public_key_parameters}}, {record_field,{64,10},{atom,{64,10},working_issuer_name}}, {record_field,{65,10},{atom,{65,10},max_path_length}}, {record_field,{66,10},{atom,{66,10},verify_fun}}, {record_field,{67,10},{atom,{67,10},user_state}}]}}, {attribute, {70,2}, record, {revoke_state, [{record_field,{72,10},{atom,{72,10},reasons_mask}}, {record_field,{73,10},{atom,{73,10},cert_status}}, {record_field,{74,10},{atom,{74,10},interim_reasons_mask}}, {record_field,{75,10},{atom,{75,10},valid_ext}}, {record_field,{76,10},{atom,{76,10},details}}]}}, {attribute, {79,2}, record, {'ECPoint',[{record_field,{81,10},{atom,{81,10},point}}]}}, {attribute, {84,2}, record, {cert, [{typed_record_field, {record_field,{86,10},{atom,{86,10},der}}, {remote_type, {86,17}, [{atom,{86,17},public_key},{atom,{86,28},der_encoded},[]]}}, {typed_record_field, {record_field,{87,10},{atom,{87,10},otp}}, {type,{87,17},record,[{atom,{87,18},'OTPCertificate'}]}}]}}, {attribute,{63,1},file,{"public_key.erl",63}}, {attribute, {64,2}, export, [{pem_decode,1}, {pem_encode,1}, {der_decode,2}, {der_encode,2}, {pem_entry_decode,1}, {pem_entry_decode,2}, {pem_entry_encode,2}, {pem_entry_encode,3}, {pkix_decode_cert,2}, {pkix_encode,3}, {encrypt_private,2}, {encrypt_private,3}, {decrypt_private,2}, {decrypt_private,3}, {encrypt_public,2}, {encrypt_public,3}, {decrypt_public,2}, {decrypt_public,3}, {dh_gex_group,4}, {dh_gex_group_sizes,0}, {sign,3}, {sign,4}, {verify,4}, {verify,5}, {generate_key,1}, {compute_key,2}, {compute_key,3}, {pkix_sign,2}, {pkix_verify,2}, {pkix_hash_type,1}, {pkix_sign_types,1}, {pkix_is_self_signed,1}, {pkix_is_fixed_dh_cert,1}, {pkix_is_issuer,2}, {pkix_issuer_id,2}, {pkix_subject_id,1}, {pkix_normalize_name,1}, {pkix_path_validation,3}, {pkix_verify_hostname,2}, {pkix_verify_hostname,3}, {pkix_verify_hostname_match_fun,1}, {pkix_crls_validate,3}, {pkix_dist_point,1}, {pkix_dist_points,1}, {pkix_match_dist_point,2}, {pkix_crl_verify,2}, {pkix_crl_issuer,1}, {short_name_hash,1}, {pkix_test_data,1}, {pkix_test_root_cert,2}, {pkix_ocsp_validate,5}, {ocsp_extensions,1}, {cacerts_get,0}, {cacerts_load,0}, {cacerts_load,1}, {cacerts_clear,0}]}, {attribute,{109,2},export,[{handle_trace,3}]}, {attribute, {114,2}, deprecated, [{encrypt_private,2,"use public_key:sign/3 instead"}, {encrypt_private,3,"use public_key:sign 4 instead"}, {decrypt_private,2,"do not use"}, {decrypt_private,3,"do not use"}, {encrypt_public,2,"do not use"}, {encrypt_public,3,"do not use"}, {decrypt_public,2,"use public_key:verify/4 instead"}, {decrypt_public,3,"use public_key:verify/5 instead"}]}, {attribute, {124,2}, removed, [{ssh_decode,2,"use ssh_file:decode/2 instead"}, {ssh_encode,2,"use ssh_file:encode/2 instead"}, {ssh_hostkey_fingerprint,1,"use ssh:hostkey_fingerprint/1 instead"}, {ssh_hostkey_fingerprint,2,"use ssh:hostkey_fingerprint/2 instead"}]}, {attribute,{129,2},export,[{ssh_curvename2oid,1},{oid2ssh_curvename,1}]}, {attribute, {140,2}, export_type, [{asn1_type,0}, {bad_cert_reason,0}, {cert,0}, {cert_id,0}, {cert_opt,0}, {chain_opts,0}, {combined_cert,0}, {conf_opt,0}, {der_encoded,0}, {digest_type,0}, {issuer_name,0}, {key_params,0}, {oid,0}, {pem_entry,0}, {pki_asn1_type,0}, {policy_node,0}, {private_key,0}, {public_key,0}, {rsa_public_key,0}, {rsa_private_key,0}, {rsa_pss_public_key,0}, {rsa_pss_private_key,0}, {dsa_public_key,0}, {dsa_private_key,0}, {ecdsa_public_key,0}, {ecdsa_private_key,0}, {eddsa_public_key,0}, {eddsa_private_key,0}, {custom_key_opts,0}, {public_key_info,0}, {test_config,0}, {test_root_cert,0}]}, {attribute, {176,2}, compile, {nowarn_deprecated_function, [{crypto,private_encrypt,4}, {crypto,private_decrypt,4}, {crypto,public_encrypt,4}, {crypto,public_decrypt,4}]}}, {attribute, {184,2}, type, {public_key, {type, {184,34}, union, [{user_type,{184,34},rsa_public_key,[]}, {user_type,{185,34},rsa_pss_public_key,[]}, {user_type,{186,34},dsa_public_key,[]}, {user_type,{187,34},ecdsa_public_key,[]}, {user_type,{188,34},eddsa_public_key,[]}]}, []}}, {attribute, {191,2}, type, {private_key, {type, {191,34}, union, [{user_type,{191,34},rsa_private_key,[]}, {user_type,{192,34},rsa_pss_private_key,[]}, {user_type,{193,34},dsa_private_key,[]}, {user_type,{194,34},ecdsa_private_key,[]}, {user_type,{195,34},eddsa_private_key,[]}, {type, {196,34}, map, [{type, {196,46}, map_field_exact, [{atom,{196,36},algorithm}, {type, {196,49}, union, [{atom,{196,49},eddsa}, {atom,{196,57},rsa_pss_pss}, {atom,{196,71},ecdsa}, {atom,{196,79},rsa}, {atom,{196,85},dsa}]}]}, {type, {197,45}, map_field_assoc, [{atom,{197,36},sign_fun},{type,{197,48},'fun',[]}]}]}]}, []}}, {attribute, {203,2}, type, {custom_key_opts,{type,{203,33},list,[{type,{203,34},term,[]}]},[]}}, {attribute, {207,2}, type, {rsa_public_key, {type,{207,34},record,[{atom,{207,35},'RSAPublicKey'}]}, []}}, {attribute, {211,2}, type, {rsa_private_key, {type, {211,34}, union, [{type,{211,34},record,[{atom,{211,35},'RSAPrivateKey'}]}, {type, {211,55}, map, [{type, {211,67}, map_field_exact, [{atom,{211,57},algorithm},{atom,{211,70},rsa}]}, {type, {212,69}, map_field_assoc, [{atom,{212,57},encrypt_fun},{type,{212,72},'fun',[]}]}]}]}, []}}, {attribute, {215,2}, type, {rsa_pss_public_key, {type, {215,34}, tuple, [{user_type,{215,35},rsa_public_key,[]}, {type,{215,53},record,[{atom,{215,54},'RSASSA-PSS-params'}]}]}, []}}, {attribute, {219,2}, type, {rsa_pss_private_key, {type, {219,34}, tuple, [{type,{219,36},record,[{atom,{219,37},'RSAPrivateKey'}]}, {type,{219,56},record,[{atom,{219,57},'RSASSA-PSS-params'}]}]}, []}}, {attribute, {223,2}, type, {dsa_private_key, {type,{223,34},record,[{atom,{223,35},'DSAPrivateKey'}]}, []}}, {attribute, {227,2}, type, {dsa_public_key, {type, {227,33}, tuple, [{user_type,{227,34},dss_public_key,[]}, {type,{227,52},record,[{atom,{227,53},'Dss-Parms'}]}]}, []}}, {attribute, {231,2}, type, {dss_public_key,{type,{231,33},pos_integer,[]},[]}}, {attribute, {235,2}, type, {ecdsa_public_key, {type, {235,36}, tuple, [{type,{235,37},record,[{atom,{235,38},'ECPoint'}]}, {type, {235,50}, union, [{type, {235,50}, tuple, [{atom,{235,51},namedCurve},{user_type,{235,63},oid,[]}]}, {type,{235,72},record,[{atom,{235,73},'ECParameters'}]}]}]}, []}}, {attribute, {239,2}, type, {ecdsa_private_key, {type,{239,36},record,[{atom,{239,37},'ECPrivateKey'}]}, []}}, {attribute, {245,2}, type, {eddsa_public_key, {type, {245,36}, tuple, [{type,{245,37},record,[{atom,{245,38},'ECPoint'}]}, {type, {245,51}, tuple, [{atom,{245,52},namedCurve},{user_type,{245,64},oid,[]}]}]}, []}}, {attribute, {251,2}, type, {eddsa_private_key, {type, {251,36}, record, [{atom,{251,37},'ECPrivateKey'}, {type, {251,52}, field_type, [{atom,{251,52},parameters}, {type, {251,66}, tuple, [{atom,{251,67},namedCurve},{user_type,{251,79},oid,[]}]}]}]}, []}}, {attribute, {255,2}, type, {key_params, {type, {255,26}, union, [{atom,{255,26},'NULL'}, {type,{255,35},record,[{atom,{255,36},'RSASSA-PSS-params'}]}, {type, {255,61}, tuple, [{atom,{255,62},namedCurve},{user_type,{255,74},oid,[]}]}, {type,{255,83},record,[{atom,{255,84},'ECParameters'}]}, {type,{255,103},record,[{atom,{255,104},'Dss-Parms'}]}]}, []}}, {attribute,{261,2},type,{der_encoded,{type,{261,33},binary,[]},[]}}, {attribute, {267,2}, type, {pki_asn1_type, {type, {267,34}, union, [{atom,{267,34},'Certificate'}, {atom,{267,50},'RSAPrivateKey'}, {atom,{267,68},'RSAPublicKey'}, {atom,{268,13},'SubjectPublicKeyInfo'}, {atom,{268,38},'DSAPrivateKey'}, {atom,{269,34},'DHParameter'}, {atom,{269,50},'PrivateKeyInfo'}, {atom,{270,6},'CertificationRequest'}, {atom,{270,31},'ContentInfo'}, {atom,{270,47},'CertificateList'}, {atom,{271,6},'ECPrivateKey'}, {atom,{271,23},'OneAsymmetricKey'}, {atom,{271,43},'EcpkParameters'}]}, []}}, {attribute, {278,2}, type, {pem_entry, {type, {278,33}, tuple, [{user_type,{278,34},pki_asn1_type,[]}, {ann_type, {279,6}, [{var,{279,6},'DerOrDerEncrypted'},{type,{279,25},binary,[]}]}, {type, {280,6}, union, [{atom,{280,6},not_encrypted}, {type, {280,22}, tuple, [{ann_type, {280,23}, [{var,{280,23},'Cipher'},{type,{280,31},iodata,[]}]}, {ann_type, {280,41}, [{var,{280,41},'Salt'}, {type, {280,47}, union, [{type,{280,47},binary,[]}, {type, {281,35}, tuple, [{type,{281,36},record,[{atom,{281,37},'PBEParameter'}]}, {user_type,{281,55},digest_type,[]}]}, {type, {282,35}, record, [{atom,{282,36},'PBES2-params'}]}]}]}]}]}]}, []}}, {attribute,{287,2},type,{asn1_type,{type,{287,33},atom,[]},[]}}, {attribute, {291,2}, type, {digest_type, {type, {291,34}, union, [{remote_type, {291,34}, [{atom,{291,34},crypto},{atom,{291,41},sha2},[]]}, {remote_type, {291,50}, [{atom,{291,50},crypto},{atom,{291,57},sha1},[]]}, {atom,{291,66},md5}, {atom,{291,72},none}]}, []}}, {attribute, {297,2}, type, {crl_reason, {type, {297,34}, union, [{atom,{297,34},unspecified}, {atom,{297,48},keyCompromise}, {atom,{297,64},cACompromise}, {atom,{297,79},affiliationChanged}, {atom,{297,100},superseded}, {atom,{298,13},cessationOfOperation}, {atom,{298,36},certificateHold}, {atom,{298,54},privilegeWithdrawn}, {atom,{298,76},aACompromise}]}, []}}, {attribute,{302,2},type,{oid,{type,{302,33},tuple,any},[]}}, {attribute, {308,2}, type, {cert_id, {type, {308,33}, tuple, [{ann_type, {308,34}, [{var,{308,34},'SerialNr'},{type,{308,44},integer,[]}]}, {user_type,{308,55},issuer_name,[]}]}, []}}, {attribute, {314,2}, type, {issuer_name, {type, {314,33}, tuple, [{atom,{314,34},rdnSequence}, {type, {314,46}, list, [{type, {314,47}, list, [{type, {314,48}, record, [{atom,{314,49},'AttributeTypeAndValue'}]}]}]}]}, []}}, {attribute, {320,2}, type, {bad_cert_reason, {type, {320,33}, union, [{atom,{320,33},cert_expired}, {atom,{320,48},invalid_issuer}, {atom,{320,65},invalid_signature}, {atom,{320,85},name_not_permitted}, {atom,{321,33},missing_basic_constraint}, {atom,{321,60},invalid_key_usage}, {atom,{321,80},duplicate_cert_in_path}, {type, {322,33}, tuple, [{atom,{322,34},policy_requirement_not_met},{type,{322,64},term,[]}]}, {type, {322,74}, tuple, [{atom,{322,75},invalid_policy_mapping},{type,{322,101},term,[]}]}, {type, {323,33}, tuple, [{atom,{323,34},revoked},{user_type,{323,43},crl_reason,[]}]}, {atom,{323,59},invalid_validity_dates}, {type, {324,33}, tuple, [{atom,{324,34},revocation_status_undetermined}, {type,{324,66},term,[]}]}, {type,{324,76},atom,[]}]}, []}}, {attribute, {332,2}, type, {combined_cert,{type,{332,33},record,[{atom,{332,34},cert}]},[]}}, {attribute, {336,2}, type, {cert, {type, {336,33}, union, [{user_type,{336,33},der_encoded,[]}, {type,{336,49},record,[{atom,{336,50},'OTPCertificate'}]}]}, []}}, {attribute, {340,2}, type, {policy_node, {type, {341,9}, map, [{type, {341,24}, map_field_exact, [{atom,{341,11},valid_policy},{user_type,{341,27},oid,[]}]}, {type, {342,25}, map_field_exact, [{atom,{342,11},qualifier_set}, {type, {342,28}, list, [{type, {342,29}, union, [{type,{342,29},record,[{atom,{342,30},'UserNotice'}]}, {type, {342,46}, tuple, [{atom,{342,47},uri},{type,{342,52},string,[]}]}]}]}]}, {type, {343,31}, map_field_exact, [{atom,{343,11},expected_policy_set}, {type,{343,34},list,[{user_type,{343,35},oid,[]}]}]}]}, []}}, {attribute, {351,2}, type, {public_key_info, {type, {351,33}, tuple, [{user_type,{351,34},oid,[]}, {type, {351,42}, union, [{user_type,{351,42},rsa_public_key,[]}, {type,{351,61},record,[{atom,{351,62},'ECPoint'}]}, {user_type,{351,76},dss_public_key,[]}]}, {user_type,{351,95},key_params,[]}]}, []}}, {attribute, {357,2}, type, {cert_opt, {type, {357,22}, union, [{type, {357,22}, tuple, [{atom,{357,23},digest},{user_type,{357,31},digest_type,[]}]}, {type, {358,22}, tuple, [{atom,{358,23},key}, {type, {358,29}, union, [{type, {358,29}, tuple, [{atom,{358,30},namedCurve},{user_type,{358,42},oid,[]}]}, {type,{358,51},record,[{atom,{358,52},'ECParameters'}]}, {type, {358,71}, tuple, [{atom,{358,72},rsa}, {ann_type, {358,77}, [{var,{358,77},'Size'},{type,{358,83},pos_integer,[]}]}, {ann_type, {358,98}, [{var,{358,98},'Prime'},{type,{358,105},pos_integer,[]}]}]}, {user_type,{358,123},private_key,[]}]}]}, {type, {359,22}, tuple, [{atom,{359,23},validity}, {type, {359,33}, tuple, [{ann_type, {359,34}, [{var,{359,34},'From'}, {remote_type, {359,40}, [{atom,{359,40},erlang},{atom,{359,47},timestamp},[]]}]}, {ann_type, {359,60}, [{var,{359,60},'To'}, {remote_type, {359,64}, [{atom,{359,64},erlang},{atom,{359,71},timestamp},[]]}]}]}]}, {type, {360,22}, tuple, [{atom,{360,23},extensions}, {type, {360,35}, list, [{type,{360,36},record,[{atom,{360,37},'Extension'}]}]}]}]}, []}}, {attribute, {366,2}, type, {chain_opts, {type, {366,24}, map, [{type, {366,31}, map_field_exact, [{atom,{366,26},root}, {type,{366,35},list,[{user_type,{366,36},cert_opt,[]}]}]}, {type, {366,64}, map_field_assoc, [{atom,{366,50},intermediates}, {type, {366,68}, list, [{type,{366,69},list,[{user_type,{366,70},cert_opt,[]}]}]}]}, {type, {367,31}, map_field_exact, [{atom,{367,26},peer}, {type,{367,35},list,[{user_type,{367,36},cert_opt,[]}]}]}]}, []}}, {attribute, {374,2}, type, {conf_opt, {type, {374,24}, union, [{type, {374,24}, tuple, [{atom,{374,25},cert},{user_type,{374,31},der_encoded,[]}]}, {type, {375,24}, tuple, [{atom,{375,25},key},{user_type,{375,31},private_key,[]}]}, {type, {376,24}, tuple, [{atom,{376,25},cacerts}, {type,{376,34},list,[{user_type,{376,35},der_encoded,[]}]}]}]}, []}}, {attribute, {379,2}, type, {test_config, {type, {380,9}, map, [{type, {380,25}, map_field_exact, [{atom,{380,11},server_config}, {type,{380,28},list,[{user_type,{380,29},conf_opt,[]}]}]}, {type, {380,57}, map_field_exact, [{atom,{380,43},client_config}, {type,{380,61},list,[{user_type,{380,62},conf_opt,[]}]}]}]}, []}}, {attribute, {383,2}, type, {test_root_cert, {type, {384,9}, map, [{type, {384,16}, map_field_exact, [{atom,{384,11},cert},{user_type,{384,19},der_encoded,[]}]}, {type, {384,38}, map_field_exact, [{atom,{384,34},key},{user_type,{384,41},private_key,[]}]}]}, []}}, {attribute, {402,2}, spec, {{pem_decode,1}, [{type, {402,17}, 'fun', [{type,{402,17},product,[{type,{402,18},binary,[]}]}, {type,{402,31},list,[{user_type,{402,32},pem_entry,[]}]}]}]}}, {function, {405,1}, pem_decode,1, [{clause, {405,1}, [{var,{405,12},'PemBin'}], [[{call,{405,25},{atom,{405,25},is_binary},[{var,{405,35},'PemBin'}]}]], [{call, {406,5}, {remote,{406,15},{atom,{406,5},pubkey_pem},{atom,{406,16},decode}}, [{var,{406,23},'PemBin'}]}]}]}, {attribute, {413,2}, spec, {{pem_encode,1}, [{type, {413,17}, 'fun', [{type, {413,17}, product, [{type,{413,18},list,[{user_type,{413,19},pem_entry,[]}]}]}, {type,{413,36},binary,[]}]}]}}, {function, {415,1}, pem_encode,1, [{clause, {415,1}, [{var,{415,12},'PemEntries'}], [[{call, {415,29}, {atom,{415,29},is_list}, [{var,{415,37},'PemEntries'}]}]], [{call, {416,5}, {atom,{416,5},iolist_to_binary}, [{call, {416,22}, {remote,{416,32},{atom,{416,22},pubkey_pem},{atom,{416,33},encode}}, [{var,{416,40},'PemEntries'}]}]}]}]}, {attribute, {422,2}, spec, {{pem_entry_decode,1}, [{type, {422,23}, bounded_fun, [{type, {422,23}, 'fun', [{type,{422,23},product,[{var,{422,24},'PemEntry'}]}, {type,{422,37},term,[]}]}, [{type, {422,49}, constraint, [{atom,{422,49},is_subtype}, [{var,{422,49},'PemEntry'}, {user_type,{422,61},pem_entry,[]}]]}]]}]}}, {function, {424,1}, pem_entry_decode,1, [{clause, {424,1}, [{tuple, {424,18}, [{atom,{424,19},'SubjectPublicKeyInfo'}, {var,{424,43},'Der'}, {var,{424,48},'_'}]}], [], [{match, {425,5}, {tuple, {425,5}, [{var,{425,6},'_'}, {tuple, {425,9}, [{atom,{425,10},'AlgorithmIdentifier'}, {var,{425,33},'AlgId'}, {var,{425,40},'Params'}]}, {var,{425,49},'Key0'}]}, {call, {426,11}, {atom,{426,11},der_decode}, [{atom,{426,22},'SubjectPublicKeyInfo'},{var,{426,46},'Der'}]}}, {match, {427,5}, {var,{427,5},'KeyType'}, {call, {427,15}, {remote, {427,34}, {atom,{427,15},pubkey_cert_records}, {atom,{427,35},supportedPublicKeyAlgorithms}}, [{var,{427,64},'AlgId'}]}}, {'case', {428,5}, {var,{428,10},'KeyType'}, [{clause, {429,9}, [{atom,{429,9},'RSAPublicKey'}], [], [{call, {430,13}, {atom,{430,13},der_decode}, [{var,{430,24},'KeyType'},{var,{430,33},'Key0'}]}]}, {clause, {431,9}, [{atom,{431,9},'DSAPublicKey'}], [], [{match, {432,13}, {tuple, {432,13}, [{atom,{432,14},params},{var,{432,22},'DssParams'}]}, {call, {432,35}, {atom,{432,35},der_decode}, [{atom,{432,46},'DSAParams'},{var,{432,59},'Params'}]}}, {tuple, {433,13}, [{call, {433,14}, {atom,{433,14},der_decode}, [{var,{433,25},'KeyType'},{var,{433,34},'Key0'}]}, {var,{433,41},'DssParams'}]}]}, {clause, {434,9}, [{atom,{434,9},'ECPoint'}], [], [{match, {435,6}, {var,{435,6},'ECCParams'}, {call, {435,18}, {atom,{435,18},der_decode}, [{atom,{435,29},'EcpkParameters'},{var,{435,47},'Params'}]}}, {tuple, {436,13}, [{record, {436,14}, 'ECPoint', [{record_field, {436,25}, {atom,{436,25},point}, {var,{436,33},'Key0'}}]}, {var,{436,40},'ECCParams'}]}]}]}]}, {clause, {438,1}, [{tuple, {438,18}, [{var,{438,19},'Asn1Type'}, {var,{438,29},'Der'}, {atom,{438,34},not_encrypted}]}], [[{call,{438,55},{atom,{438,55},is_atom},[{var,{438,63},'Asn1Type'}]}, {call,{439,13},{atom,{439,13},is_binary},[{var,{439,23},'Der'}]}]], [{call, {440,5}, {atom,{440,5},der_decode}, [{var,{440,16},'Asn1Type'},{var,{440,26},'Der'}]}]}]}, {attribute, {451,2}, spec, {{pem_entry_decode,2}, [{type, {451,23}, bounded_fun, [{type, {451,23}, 'fun', [{type, {451,23}, product, [{var,{451,24},'PemEntry'},{var,{451,34},'Password'}]}, {type,{451,47},term,[]}]}, [{type, {452,7}, constraint, [{atom,{452,7},is_subtype}, [{var,{452,7},'PemEntry'},{user_type,{452,19},pem_entry,[]}]]}, {type, {453,7}, constraint, [{atom,{453,7},is_subtype}, [{var,{453,7},'Password'}, {type, {453,19}, union, [{type,{453,19},iodata,[]}, {type, {453,34}, 'fun', [{type,{453,34},product,[]}, {type,{453,40},iodata,[]}]}]}]]}]]}]}}, {function, {454,1}, pem_entry_decode,2, [{clause, {454,1}, [{var,{454,18},'PemEntry'},{var,{454,28},'PasswordFun'}], [[{call, {454,46}, {atom,{454,46},is_function}, [{var,{454,58},'PasswordFun'}]}]], [{call, {455,6}, {atom,{455,6},pem_entry_decode}, [{var,{455,23},'PemEntry'}, {call,{455,33},{var,{455,33},'PasswordFun'},[]}]}]}, {clause, {456,1}, [{tuple, {456,18}, [{var,{456,19},'Asn1Type'}, {var,{456,29},'Der'}, {atom,{456,34},not_encrypted}]}, {var,{456,50},'_'}], [[{call,{456,58},{atom,{456,58},is_atom},[{var,{456,66},'Asn1Type'}]}, {call,{457,9},{atom,{457,9},is_binary},[{var,{457,19},'Der'}]}]], [{call, {458,5}, {atom,{458,5},der_decode}, [{var,{458,16},'Asn1Type'},{var,{458,26},'Der'}]}]}, {clause, {459,1}, [{match, {459,18}, {tuple, {459,18}, [{var,{459,19},'Asn1Type'}, {var,{459,29},'CryptDer'}, {tuple, {459,39}, [{var,{459,40},'Cipher'},{record,{459,48},'PBES2-params',[]}]}]}, {var,{459,70},'PemEntry'}}, {var,{460,4},'Password'}], [[{op, {460,37}, 'andalso', {call,{460,19},{atom,{460,19},is_atom},[{var,{460,27},'Asn1Type'}]}, {op, {461,25}, 'andalso', {call,{461,5},{atom,{461,5},is_binary},[{var,{461,15},'CryptDer'}]}, {call,{462,5},{atom,{462,5},is_list},[{var,{462,13},'Cipher'}]}}}]], [{call, {463,5}, {atom,{463,5},do_pem_entry_decode}, [{var,{463,25},'PemEntry'},{var,{463,35},'Password'}]}]}, {clause, {464,1}, [{match, {464,18}, {tuple, {464,18}, [{var,{464,19},'Asn1Type'}, {var,{464,29},'CryptDer'}, {tuple, {464,39}, [{var,{464,40},'Cipher'}, {tuple, {464,48}, [{record,{464,49},'PBEParameter',[]},{var,{464,67},'_'}]}]}]}, {var,{464,74},'PemEntry'}}, {var,{465,5},'Password'}], [[{op, {465,38}, 'andalso', {call,{465,20},{atom,{465,20},is_atom},[{var,{465,28},'Asn1Type'}]}, {op, {466,26}, 'andalso', {call,{466,6},{atom,{466,6},is_binary},[{var,{466,16},'CryptDer'}]}, {op, {467,22}, 'andalso', {call,{467,6},{atom,{467,6},is_list},[{var,{467,14},'Cipher'}]}, {call, {468,5}, {atom,{468,5},is_list}, [{var,{468,13},'Password'}]}}}}]], [{call, {469,5}, {atom,{469,5},do_pem_entry_decode}, [{var,{469,25},'PemEntry'},{var,{469,35},'Password'}]}]}, {clause, {470,1}, [{match, {470,18}, {tuple, {470,18}, [{var,{470,19},'Asn1Type'}, {var,{470,29},'CryptDer'}, {tuple,{470,39},[{var,{470,40},'Cipher'},{var,{470,48},'Salt'}]}]}, {var,{470,57},'PemEntry'}}, {var,{471,4},'Password'}], [[{op, {471,37}, 'andalso', {call,{471,19},{atom,{471,19},is_atom},[{var,{471,27},'Asn1Type'}]}, {op, {472,25}, 'andalso', {call,{472,5},{atom,{472,5},is_binary},[{var,{472,15},'CryptDer'}]}, {op, {473,21}, 'andalso', {call,{473,5},{atom,{473,5},is_list},[{var,{473,13},'Cipher'}]}, {op, {474,21}, 'andalso', {call,{474,5},{atom,{474,5},is_binary},[{var,{474,15},'Salt'}]}, {op, {475,71}, 'andalso', {op, {475,36}, 'or', {op, {475,30}, '==', {call, {475,7}, {remote, {475,13}, {atom,{475,7},erlang}, {atom,{475,14},byte_size}}, [{var,{475,24},'Salt'}]}, {integer,{475,33},8}}, {op, {475,63}, '==', {call, {475,40}, {remote, {475,46}, {atom,{475,40},erlang}, {atom,{475,47},byte_size}}, [{var,{475,57},'Salt'}]}, {integer,{475,66},16}}}, {call, {476,5}, {atom,{476,5},is_list}, [{var,{476,13},'Password'}]}}}}}}]], [{call, {477,5}, {atom,{477,5},do_pem_entry_decode}, [{var,{477,25},'PemEntry'},{var,{477,35},'Password'}]}]}]}, {attribute, {483,2}, spec, {{pem_entry_encode,2}, [{type, {483,23}, bounded_fun, [{type, {483,23}, 'fun', [{type, {483,23}, product, [{var,{483,24},'Asn1Type'},{var,{483,34},'Entity'}]}, {user_type,{483,45},pem_entry,[]}]}, [{type, {483,62}, constraint, [{atom,{483,62},is_subtype}, [{var,{483,62},'Asn1Type'}, {user_type,{483,74},pki_asn1_type,[]}]]}, {type, {484,62}, constraint, [{atom,{484,62},is_subtype}, [{var,{484,62},'Entity'},{type,{484,72},term,[]}]]}]]}]}}, {function, {486,1}, pem_entry_encode,2, [{clause, {486,1}, [{atom,{486,18},'SubjectPublicKeyInfo'}, {match, {486,42}, {var,{486,42},'Entity'}, {record,{486,49},'RSAPublicKey',[]}}], [], [{match, {487,5}, {var,{487,5},'KeyDer'}, {call, {487,14}, {atom,{487,14},der_encode}, [{atom,{487,25},'RSAPublicKey'},{var,{487,41},'Entity'}]}}, {match, {488,5}, {var,{488,5},'Spki'}, {call, {488,12}, {atom,{488,12},subject_public_key_info}, [{record, {488,36}, 'AlgorithmIdentifier', [{record_field, {488,59}, {atom,{488,59},algorithm}, {tuple, {488,72}, [{integer,{488,72},1}, {integer,{488,72},2}, {integer,{488,72},840}, {integer,{488,72},113549}, {integer,{488,72},1}, {integer,{488,72},1}, {integer,{488,72},1}]}}, {record_field, {489,59}, {atom,{489,59},parameters}, {bin, {489,72}, [{bin_element,{489,72},{integer,{489,72},5},default,default}, {bin_element, {489,72}, {integer,{489,72},0}, default,default}]}}]}, {var,{489,83},'KeyDer'}]}}, {call, {490,5}, {atom,{490,5},pem_entry_encode}, [{atom,{490,22},'SubjectPublicKeyInfo'},{var,{490,46},'Spki'}]}]}, {clause, {491,1}, [{atom,{491,18},'SubjectPublicKeyInfo'}, {tuple, {492,18}, [{var,{492,19},'DsaInt'}, {match, {492,27}, {var,{492,27},'Params'}, {record,{492,34},'Dss-Parms',[]}}]}], [[{call, {492,56}, {atom,{492,56},is_integer}, [{var,{492,67},'DsaInt'}]}]], [{match, {493,5}, {var,{493,5},'KeyDer'}, {call, {493,14}, {atom,{493,14},der_encode}, [{atom,{493,25},'DSAPublicKey'},{var,{493,41},'DsaInt'}]}}, {match, {494,5}, {var,{494,5},'ParamDer'}, {call, {494,16}, {atom,{494,16},der_encode}, [{atom,{494,27},'DSAParams'}, {tuple, {494,40}, [{atom,{494,41},params},{var,{494,49},'Params'}]}]}}, {match, {495,5}, {var,{495,5},'Spki'}, {call, {495,12}, {atom,{495,12},subject_public_key_info}, [{record, {495,36}, 'AlgorithmIdentifier', [{record_field, {495,59}, {atom,{495,59},algorithm}, {tuple, {495,71}, [{integer,{495,71},1}, {integer,{495,71},2}, {integer,{495,71},840}, {integer,{495,71},10040}, {integer,{495,71},4}, {integer,{495,71},1}]}}, {record_field, {496,59}, {atom,{496,59},parameters}, {var,{496,72},'ParamDer'}}]}, {var,{497,36},'KeyDer'}]}}, {call, {498,5}, {atom,{498,5},pem_entry_encode}, [{atom,{498,22},'SubjectPublicKeyInfo'},{var,{498,46},'Spki'}]}]}, {clause, {499,1}, [{atom,{499,18},'SubjectPublicKeyInfo'}, {tuple, {500,4}, [{record, {500,5}, 'ECPoint', [{record_field, {500,16}, {atom,{500,16},point}, {var,{500,24},'Key'}}]}, {tuple, {500,30}, [{atom,{500,31},namedCurve}, {match, {500,44}, {tuple, {500,44}, [{integer,{500,44},1}, {integer,{500,44},3}, {integer,{500,44},101}, {integer,{500,44},112}]}, {var,{500,59},'ID'}}]}]}], [[{call,{500,70},{atom,{500,70},is_binary},[{var,{500,80},'Key'}]}]], [{match, {501,5}, {var,{501,5},'Spki'}, {call, {501,12}, {atom,{501,12},subject_public_key_info}, [{record, {501,36}, 'AlgorithmIdentifier', [{record_field, {501,59}, {atom,{501,59},algorithm}, {var,{501,71},'ID'}}]}, {var,{501,76},'Key'}]}}, {call, {502,5}, {atom,{502,5},pem_entry_encode}, [{atom,{502,22},'SubjectPublicKeyInfo'},{var,{502,46},'Spki'}]}]}, {clause, {503,1}, [{atom,{503,18},'SubjectPublicKeyInfo'}, {tuple, {504,4}, [{record, {504,5}, 'ECPoint', [{record_field, {504,16}, {atom,{504,16},point}, {var,{504,24},'Key'}}]}, {tuple, {504,30}, [{atom,{504,31},namedCurve}, {match, {504,44}, {tuple, {504,44}, [{integer,{504,44},1}, {integer,{504,44},3}, {integer,{504,44},101}, {integer,{504,44},113}]}, {var,{504,57},'ID'}}]}]}], [[{call,{504,68},{atom,{504,68},is_binary},[{var,{504,78},'Key'}]}]], [{match, {505,5}, {var,{505,5},'Spki'}, {call, {505,12}, {atom,{505,12},subject_public_key_info}, [{record, {505,36}, 'AlgorithmIdentifier', [{record_field, {505,59}, {atom,{505,59},algorithm}, {var,{505,71},'ID'}}]}, {var,{505,76},'Key'}]}}, {call, {506,5}, {atom,{506,5},pem_entry_encode}, [{atom,{506,22},'SubjectPublicKeyInfo'},{var,{506,46},'Spki'}]}]}, {clause, {507,1}, [{atom,{507,18},'SubjectPublicKeyInfo'}, {tuple, {508,4}, [{record, {508,5}, 'ECPoint', [{record_field, {508,16}, {atom,{508,16},point}, {var,{508,24},'Key'}}]}, {var,{508,30},'ECParam'}]}], [[{call,{508,45},{atom,{508,45},is_binary},[{var,{508,55},'Key'}]}]], [{match, {509,5}, {var,{509,5},'Params'}, {call, {509,14}, {atom,{509,14},der_encode}, [{atom,{509,25},'EcpkParameters'},{var,{509,42},'ECParam'}]}}, {match, {510,5}, {var,{510,5},'Spki'}, {call, {510,12}, {atom,{510,12},subject_public_key_info}, [{record, {510,36}, 'AlgorithmIdentifier', [{record_field, {510,59}, {atom,{510,59},algorithm}, {tuple, {510,71}, [{integer,{510,71},1}, {integer,{510,71},2}, {integer,{510,71},840}, {integer,{510,71},10045}, {integer,{510,71},2}, {integer,{510,71},1}]}}, {record_field, {511,59}, {atom,{511,59},parameters}, {var,{511,72},'Params'}}]}, {var,{512,36},'Key'}]}}, {call, {513,5}, {atom,{513,5},pem_entry_encode}, [{atom,{513,22},'SubjectPublicKeyInfo'},{var,{513,46},'Spki'}]}]}, {clause, {514,1}, [{var,{514,18},'Asn1Type'},{var,{514,28},'Entity'}], [[{call,{514,42},{atom,{514,42},is_atom},[{var,{514,50},'Asn1Type'}]}]], [{match, {515,5}, {var,{515,5},'Der'}, {call, {515,11}, {atom,{515,11},der_encode}, [{var,{515,22},'Asn1Type'},{var,{515,32},'Entity'}]}}, {tuple, {516,5}, [{var,{516,6},'Asn1Type'}, {var,{516,16},'Der'}, {atom,{516,21},not_encrypted}]}]}]}, {attribute, {527,2}, spec, {{pem_entry_encode,3}, [{type, {527,23}, bounded_fun, [{type, {527,23}, 'fun', [{type, {527,23}, product, [{var,{527,24},'Asn1Type'}, {var,{527,34},'Entity'}, {var,{527,42},'InfoPwd'}]}, {user_type,{528,31},pem_entry,[]}]}, [{type, {528,48}, constraint, [{atom,{528,48},is_subtype}, [{var,{528,48},'Asn1Type'}, {user_type,{528,60},pki_asn1_type,[]}]]}, {type, {529,48}, constraint, [{atom,{529,48},is_subtype}, [{var,{529,48},'Entity'},{type,{529,58},term,[]}]]}, {type, {530,48}, constraint, [{atom,{530,48},is_subtype}, [{var,{530,48},'InfoPwd'}, {type, {530,59}, tuple, [{var,{530,60},'CipherInfo'},{var,{530,71},'Password'}]}]]}, {type, {531,48}, constraint, [{atom,{531,48},is_subtype}, [{var,{531,48},'CipherInfo'}, {type, {531,62}, tuple, [{ann_type, {531,63}, [{var,{531,63},'Cipher'},{type,{531,71},iodata,[]}]}, {ann_type, {531,81}, [{var,{531,81},'Salt'}, {type, {531,87}, union, [{type,{531,87},binary,[]}, {type, {532,88}, tuple, [{type,{532,89},record,[{atom,{532,90},'PBEParameter'}]}, {user_type,{532,108},digest_type,[]}]}, {type, {533,88}, record, [{atom,{533,89},'PBES2-params'}]}]}]}]}]]}, {type, {534,48}, constraint, [{atom,{534,48},is_subtype}, [{var,{534,48},'Password'},{type,{534,60},iodata,[]}]]}]]}]}}, {function, {535,1}, pem_entry_encode,3, [{clause, {535,1}, [{var,{535,18},'Asn1Type'}, {var,{535,28},'Entity'}, {tuple, {535,36}, [{match, {535,37}, {tuple, {535,37}, [{var,{535,38},'Cipher'},{record,{535,46},'PBES2-params',[]}]}, {var,{535,67},'CipherInfo'}}, {var,{536,9},'Password'}]}], [[{op, {536,43}, 'andalso', {call,{536,25},{atom,{536,25},is_atom},[{var,{536,33},'Asn1Type'}]}, {op, {537,29}, 'andalso', {call,{537,11},{atom,{537,11},is_list},[{var,{537,19},'Password'}]}, {call, {538,11}, {atom,{538,11},is_list}, [{var,{538,19},'Cipher'}]}}}]], [{call, {539,5}, {atom,{539,5},do_pem_entry_encode}, [{var,{539,25},'Asn1Type'}, {var,{539,35},'Entity'}, {var,{539,43},'CipherInfo'}, {var,{539,55},'Password'}]}]}, {clause, {540,1}, [{var,{540,18},'Asn1Type'}, {var,{540,28},'Entity'}, {tuple, {540,36}, [{match, {540,37}, {tuple, {540,37}, [{var,{540,38},'Cipher'}, {tuple, {541,11}, [{record,{541,12},'PBEParameter',[]},{var,{541,31},'_'}]}]}, {var,{541,37},'CipherInfo'}}, {var,{542,10},'Password'}]}], [[{op, {542,44}, 'andalso', {call,{542,26},{atom,{542,26},is_atom},[{var,{542,34},'Asn1Type'}]}, {op, {543,30}, 'andalso', {call,{543,12},{atom,{543,12},is_list},[{var,{543,20},'Password'}]}, {call, {544,12}, {atom,{544,12},is_list}, [{var,{544,20},'Cipher'}]}}}]], [{call, {545,5}, {atom,{545,5},do_pem_entry_encode}, [{var,{545,25},'Asn1Type'}, {var,{545,35},'Entity'}, {var,{545,43},'CipherInfo'}, {var,{545,55},'Password'}]}]}, {clause, {546,1}, [{var,{546,18},'Asn1Type'}, {var,{546,28},'Entity'}, {tuple, {546,36}, [{match, {546,37}, {tuple,{546,37},[{var,{546,38},'Cipher'},{var,{546,46},'Salt'}]}, {var,{546,54},'CipherInfo'}}, {var,{547,9},'Password'}]}], [[{op, {547,43}, 'andalso', {call,{547,25},{atom,{547,25},is_atom},[{var,{547,33},'Asn1Type'}]}, {op, {548,29}, 'andalso', {call,{548,11},{atom,{548,11},is_list},[{var,{548,19},'Password'}]}, {op, {549,27}, 'andalso', {call,{549,11},{atom,{549,11},is_list},[{var,{549,19},'Cipher'}]}, {op, {550,27}, 'andalso', {call,{550,11},{atom,{550,11},is_binary},[{var,{550,21},'Salt'}]}, {op, {551,42}, 'or', {op, {551,36}, '==', {call, {551,13}, {remote, {551,19}, {atom,{551,13},erlang}, {atom,{551,20},byte_size}}, [{var,{551,30},'Salt'}]}, {integer,{551,39},8}}, {op, {552,36}, '==', {call, {552,13}, {remote, {552,19}, {atom,{552,13},erlang}, {atom,{552,20},byte_size}}, [{var,{552,30},'Salt'}]}, {integer,{552,39},16}}}}}}}]], [{call, {553,5}, {atom,{553,5},do_pem_entry_encode}, [{var,{553,25},'Asn1Type'}, {var,{553,35},'Entity'}, {var,{553,43},'CipherInfo'}, {var,{553,55},'Password'}]}]}]}, {attribute, {560,2}, spec, {{der_decode,2}, [{type, {560,17}, bounded_fun, [{type, {560,17}, 'fun', [{type, {560,17}, product, [{var,{560,18},'Asn1Type'},{var,{560,28},'Der'}]}, {var,{560,36},'Entity'}]}, [{type, {560,48}, constraint, [{atom,{560,48},is_subtype}, [{var,{560,48},'Asn1Type'},{user_type,{560,60},asn1_type,[]}]]}, {type, {561,48}, constraint, [{atom,{561,48},is_subtype}, [{var,{561,48},'Der'},{user_type,{561,55},der_encoded,[]}]]}, {type, {562,48}, constraint, [{atom,{562,48},is_subtype}, [{var,{562,48},'Entity'},{type,{562,58},term,[]}]]}]]}]}}, {function, {566,1}, der_decode,2, [{clause, {566,1}, [{var,{566,12},'Asn1Type'},{var,{566,22},'Der'}], [[{op, {569,33}, 'andalso', {op, {567,34}, 'orelse', {op, {566,44}, '==', {var,{566,35},'Asn1Type'}, {atom,{566,47},'PrivateKeyInfo'}}, {op, {568,46}, '==', {var,{568,37},'Asn1Type'}, {atom,{568,49},'EncryptedPrivateKeyInfo'}}}, {call,{569,41},{atom,{569,41},is_binary},[{var,{569,51},'Der'}]}}]], [{'try', {570,5}, [{match, {571,2}, {tuple,{571,2},[{atom,{571,3},ok},{var,{571,7},'Decoded'}]}, {call, {571,18}, {remote, {571,30}, {atom,{571,18},'PKCS-FRAME'}, {atom,{571,31},decode}}, [{var,{571,38},'Asn1Type'},{var,{571,48},'Der'}]}}, {call, {572,2}, {atom,{572,2},der_priv_key_decode}, [{var,{572,22},'Decoded'}]}], [], [{clause, {574,2}, [{tuple, {574,2}, [{atom,{574,2},error}, {match, {574,8}, {tuple, {574,8}, [{atom,{574,9},badmatch}, {tuple,{574,19},[{atom,{574,20},error},{var,{574,27},'_'}]}]}, {var,{574,33},'Error'}}, {var,{574,33},'_'}]}], [], [{call, {575,13}, {atom,{575,13},handle_pkcs_frame_error}, [{var,{575,37},'Asn1Type'}, {var,{575,47},'Der'}, {var,{575,52},'Error'}]}]}], []}]}, {clause, {578,1}, [{var,{578,12},'Asn1Type'},{var,{578,22},'Der'}], [[{call,{578,32},{atom,{578,32},is_atom},[{var,{578,40},'Asn1Type'}]}, {call,{578,51},{atom,{578,51},is_binary},[{var,{578,61},'Der'}]}]], [{'try', {579,5}, [{match, {580,2}, {tuple,{580,2},[{atom,{580,3},ok},{var,{580,7},'Decoded'}]}, {call, {580,18}, {remote, {580,31}, {atom,{580,18},'OTP-PUB-KEY'}, {atom,{580,32},decode}}, [{var,{580,39},'Asn1Type'},{var,{580,49},'Der'}]}}, {var,{581,2},'Decoded'}], [], [{clause, {583,2}, [{tuple, {583,2}, [{atom,{583,2},error}, {match, {583,8}, {tuple, {583,8}, [{atom,{583,9},badmatch}, {tuple,{583,19},[{atom,{583,20},error},{var,{583,27},'_'}]}]}, {var,{583,33},'Error'}}, {var,{583,33},'_'}]}], [], [{call, {584,6}, {remote,{584,12},{atom,{584,6},erlang},{atom,{584,13},error}}, [{var,{584,19},'Error'}]}]}], []}]}]}, {function, {587,1}, handle_pkcs_frame_error,3, [{clause, {587,1}, [{atom,{587,25},'PrivateKeyInfo'}, {var,{587,43},'Der'}, {var,{587,48},'_'}], [], [{'try', {588,5}, [{match, {589,2}, {tuple,{589,2},[{atom,{589,3},ok},{var,{589,7},'Decoded'}]}, {call, {589,18}, {remote, {589,30}, {atom,{589,18},'PKCS-FRAME'}, {atom,{589,31},decode}}, [{atom,{589,38},'OneAsymmetricKey'},{var,{589,58},'Der'}]}}, {call, {590,2}, {atom,{590,2},der_priv_key_decode}, [{var,{590,22},'Decoded'}]}], [], [{clause, {592,2}, [{tuple, {592,2}, [{atom,{592,2},error}, {match, {592,8}, {tuple, {592,8}, [{atom,{592,9},badmatch}, {tuple,{592,19},[{atom,{592,20},error},{var,{592,27},'_'}]}]}, {var,{592,33},'Error'}}, {var,{592,33},'_'}]}], [], [{call, {593,6}, {remote,{593,12},{atom,{593,6},erlang},{atom,{593,13},error}}, [{var,{593,19},'Error'}]}]}], []}]}, {clause, {595,1}, [{var,{595,25},'_'},{var,{595,28},'_'},{var,{595,31},'Error'}], [], [{call, {596,5}, {remote,{596,11},{atom,{596,5},erlang},{atom,{596,12},error}}, [{var,{596,18},'Error'}]}]}]}, {function, {598,1}, der_priv_key_decode,1, [{clause, {598,1}, [{record, {598,21}, 'PrivateKeyInfo', [{record_field,{598,39},{atom,{598,39},version},{atom,{598,49},v1}}, {record_field, {599,39}, {atom,{599,39},privateKeyAlgorithm}, {record, {600,43}, 'PrivateKeyInfo_privateKeyAlgorithm', [{record_field, {600,81}, {atom,{600,81},algorithm}, {tuple, {600,94}, [{integer,{600,94},1}, {integer,{600,94},2}, {integer,{600,94},840}, {integer,{600,94},10045}, {integer,{600,94},2}, {integer,{600,94},1}]}}, {record_field, {601,81}, {atom,{601,81},parameters}, {tuple, {601,94}, [{atom,{601,95},asn1_OPENTYPE}, {var,{601,110},'Parameters'}]}}]}}, {record_field, {602,39}, {atom,{602,39},privateKey}, {var,{602,52},'PrivKey'}}]}], [], [{match, {603,5}, {var,{603,5},'EcPrivKey'}, {call, {603,17}, {atom,{603,17},der_decode}, [{atom,{603,28},'ECPrivateKey'},{var,{603,44},'PrivKey'}]}}, {record, {604,14}, {var,{604,5},'EcPrivKey'}, 'ECPrivateKey', [{record_field, {604,30}, {atom,{604,30},parameters}, {call, {604,43}, {atom,{604,43},der_decode}, [{atom,{604,54},'EcpkParameters'}, {var,{604,72},'Parameters'}]}}]}]}, {clause, {605,1}, [{record, {605,21}, 'PrivateKeyInfo', [{record_field,{605,39},{atom,{605,39},version},{atom,{605,49},v1}}, {record_field, {606,39}, {atom,{606,39},privateKeyAlgorithm}, {record, {606,60}, 'PrivateKeyInfo_privateKeyAlgorithm', [{record_field, {606,98}, {atom,{606,98},algorithm}, {var,{606,110},'CurveOId'}}]}}, {record_field, {607,39}, {atom,{607,39},privateKey}, {var,{607,52},'CurvePrivKey'}}]}], [[{op, {608,32}, 'orelse', {op, {608,16}, '==', {var,{608,7},'CurveOId'}, {tuple, {608,20}, [{integer,{608,20},1}, {integer,{608,20},3}, {integer,{608,20},101}, {integer,{608,20},112}]}}, {op, {609,16}, '==', {var,{609,7},'CurveOId'}, {tuple, {609,20}, [{integer,{609,20},1}, {integer,{609,20},3}, {integer,{609,20},101}, {integer,{609,20},113}]}}}]], [{match, {610,5}, {var,{610,5},'PrivKey'}, {call, {610,15}, {atom,{610,15},der_decode}, [{atom,{610,26},'CurvePrivateKey'},{var,{610,45},'CurvePrivKey'}]}}, {record, {611,5}, 'ECPrivateKey', [{record_field,{611,21},{atom,{611,21},version},{integer,{611,31},1}}, {record_field, {611,34}, {atom,{611,34},parameters}, {tuple, {611,47}, [{atom,{611,48},namedCurve},{var,{611,60},'CurveOId'}]}}, {record_field, {611,71}, {atom,{611,71},privateKey}, {var,{611,84},'PrivKey'}}]}]}, {clause, {612,1}, [{record, {612,21}, 'OneAsymmetricKey', [{record_field, {613,24}, {atom,{613,24},privateKeyAlgorithm}, {record, {613,46}, 'OneAsymmetricKey_privateKeyAlgorithm', [{record_field, {613,86}, {atom,{613,86},algorithm}, {var,{613,98},'CurveOId'}}]}}, {record_field, {614,24}, {atom,{614,24},privateKey}, {var,{614,37},'CurvePrivKey'}}, {record_field, {615,24}, {atom,{615,24},attributes}, {var,{615,37},'Attr'}}, {record_field, {616,24}, {atom,{616,24},publicKey}, {var,{616,36},'PubKey'}}]}], [[{op, {617,32}, 'orelse', {op, {617,16}, '==', {var,{617,7},'CurveOId'}, {tuple, {617,20}, [{integer,{617,20},1}, {integer,{617,20},3}, {integer,{617,20},101}, {integer,{617,20},112}]}}, {op, {618,16}, '==', {var,{618,7},'CurveOId'}, {tuple, {618,20}, [{integer,{618,20},1}, {integer,{618,20},3}, {integer,{618,20},101}, {integer,{618,20},113}]}}}]], [{match, {619,5}, {var,{619,5},'PrivKey'}, {call, {619,15}, {atom,{619,15},der_decode}, [{atom,{619,26},'CurvePrivateKey'},{var,{619,45},'CurvePrivKey'}]}}, {record, {620,5}, 'ECPrivateKey', [{record_field,{620,21},{atom,{620,21},version},{integer,{620,31},2}}, {record_field, {620,34}, {atom,{620,34},parameters}, {tuple, {620,47}, [{atom,{620,48},namedCurve},{var,{620,60},'CurveOId'}]}}, {record_field, {620,71}, {atom,{620,71},privateKey}, {var,{620,84},'PrivKey'}}, {record_field, {621,21}, {atom,{621,21},attributes}, {var,{621,34},'Attr'}}, {record_field, {622,21}, {atom,{622,21},publicKey}, {var,{622,33},'PubKey'}}]}]}, {clause, {623,1}, [{tuple, {623,21}, [{atom,{623,22},'PrivateKeyInfo'}, {atom,{623,40},v1}, {tuple, {624,2}, [{atom,{624,3},'PrivateKeyInfo_privateKeyAlgorithm'}, {tuple, {624,42}, [{integer,{624,42},1}, {integer,{624,42},2}, {integer,{624,42},840}, {integer,{624,42},113549}, {integer,{624,42},1}, {integer,{624,42},1}, {integer,{624,42},1}]}, {var,{624,59},'_'}]}, {var,{624,63},'PrivKey'}, {var,{624,72},'_'}]}], [], [{call, {625,2}, {atom,{625,2},der_decode}, [{atom,{625,13},'RSAPrivateKey'},{var,{625,30},'PrivKey'}]}]}, {clause, {626,1}, [{tuple, {626,21}, [{atom,{626,22},'PrivateKeyInfo'}, {atom,{626,40},v1}, {tuple, {627,22}, [{atom,{627,23},'PrivateKeyInfo_privateKeyAlgorithm'}, {tuple, {627,62}, [{integer,{627,62},1}, {integer,{627,62},2}, {integer,{627,62},840}, {integer,{627,62},113549}, {integer,{627,62},1}, {integer,{627,62},1}, {integer,{627,62},10}]}, {tuple, {628,23}, [{atom,{628,24},asn1_OPENTYPE},{var,{628,39},'Parameters'}]}]}, {var,{628,53},'PrivKey'}, {var,{628,62},'_'}]}], [], [{match, {629,5}, {var,{629,5},'Key'}, {call, {629,11}, {atom,{629,11},der_decode}, [{atom,{629,22},'RSAPrivateKey'},{var,{629,39},'PrivKey'}]}}, {match, {630,5}, {var,{630,5},'Params'}, {call, {630,14}, {atom,{630,14},der_decode}, [{atom,{630,25},'RSASSA-PSS-params'},{var,{630,46},'Parameters'}]}}, {tuple,{631,5},[{var,{631,6},'Key'},{var,{631,11},'Params'}]}]}, {clause, {632,1}, [{record, {632,21}, 'PrivateKeyInfo', [{record_field,{632,39},{atom,{632,39},version},{atom,{632,49},v1}}, {record_field, {633,39}, {atom,{633,39},privateKeyAlgorithm}, {record, {633,61}, 'PrivateKeyInfo_privateKeyAlgorithm', [{record_field, {633,99}, {atom,{633,99},algorithm}, {tuple, {633,112}, [{integer,{633,112},1}, {integer,{633,112},2}, {integer,{633,112},840}, {integer,{633,112},10040}, {integer,{633,112},4}, {integer,{633,112},1}]}}, {record_field, {634,99}, {atom,{634,99},parameters}, {tuple, {635,103}, [{atom,{635,104},asn1_OPENTYPE}, {var,{635,119},'Parameters'}]}}]}}, {record_field, {636,39}, {atom,{636,39},privateKey}, {var,{636,52},'PrivKey'}}]}], [], [{match, {637,5}, {tuple, {637,5}, [{atom,{637,6},params}, {record, {637,14}, 'Dss-Parms', [{record_field,{637,27},{atom,{637,27},p},{var,{637,29},'P'}}, {record_field,{637,32},{atom,{637,32},q},{var,{637,34},'Q'}}, {record_field,{637,37},{atom,{637,37},g},{var,{637,39},'G'}}]}]}, {call, {637,45}, {atom,{637,45},der_decode}, [{atom,{637,56},'DSAParams'},{var,{637,69},'Parameters'}]}}, {match, {638,5}, {var,{638,5},'X'}, {call, {638,9}, {atom,{638,9},der_decode}, [{atom,{638,20},'Prime-p'},{var,{638,31},'PrivKey'}]}}, {record, {639,5}, 'DSAPrivateKey', [{record_field,{639,22},{atom,{639,22},p},{var,{639,24},'P'}}, {record_field,{639,27},{atom,{639,27},q},{var,{639,29},'Q'}}, {record_field,{639,32},{atom,{639,32},g},{var,{639,34},'G'}}, {record_field,{639,37},{atom,{639,37},x},{var,{639,39},'X'}}]}]}, {clause, {640,1}, [{var,{640,21},'PKCS8Key'}], [], [{var,{641,5},'PKCS8Key'}]}]}, {attribute, {647,2}, spec, {{der_encode,2}, [{type, {647,17}, bounded_fun, [{type, {647,17}, 'fun', [{type, {647,17}, product, [{var,{647,18},'Asn1Type'},{var,{647,28},'Entity'}]}, {var,{647,39},'Der'}]}, [{type, {647,48}, constraint, [{atom,{647,48},is_subtype}, [{var,{647,48},'Asn1Type'},{user_type,{647,60},asn1_type,[]}]]}, {type, {648,48}, constraint, [{atom,{648,48},is_subtype}, [{var,{648,48},'Entity'},{type,{648,58},term,[]}]]}, {type, {649,48}, constraint, [{atom,{649,48},is_subtype}, [{var,{649,48},'Der'},{type,{649,55},binary,[]}]]}]]}]}}, {function, {651,1}, der_encode,2, [{clause, {651,1}, [{atom,{651,12},'PrivateKeyInfo'}, {record, {651,30}, 'DSAPrivateKey', [{record_field,{651,47},{atom,{651,47},p},{var,{651,49},'P'}}, {record_field,{651,52},{atom,{651,52},q},{var,{651,54},'Q'}}, {record_field,{651,57},{atom,{651,57},g},{var,{651,59},'G'}}, {record_field,{651,62},{atom,{651,62},x},{var,{651,64},'X'}}]}], [], [{match, {652,5}, {var,{652,5},'Params'}, {call, {652,14}, {atom,{652,14},der_encode}, [{atom,{652,25},'Dss-Parms'}, {record, {652,38}, 'Dss-Parms', [{record_field,{652,51},{atom,{652,51},p},{var,{652,53},'P'}}, {record_field,{652,56},{atom,{652,56},q},{var,{652,58},'Q'}}, {record_field,{652,61},{atom,{652,61},g},{var,{652,63},'G'}}]}]}}, {match, {653,5}, {var,{653,5},'Alg'}, {record, {653,12}, 'PrivateKeyInfo_privateKeyAlgorithm', [{record_field, {653,50}, {atom,{653,50},algorithm}, {tuple, {653,63}, [{integer,{653,63},1}, {integer,{653,63},2}, {integer,{653,63},840}, {integer,{653,63},10040}, {integer,{653,63},4}, {integer,{653,63},1}]}}, {record_field, {654,50}, {atom,{654,50},parameters}, {tuple, {655,54}, [{atom,{655,55},asn1_OPENTYPE},{var,{655,70},'Params'}]}}]}}, {match, {656,5}, {var,{656,5},'Key'}, {call, {656,11}, {atom,{656,11},der_encode}, [{atom,{656,22},'Prime-p'},{var,{656,33},'X'}]}}, {call, {657,5}, {atom,{657,5},der_encode}, [{atom,{657,16},'PrivateKeyInfo'}, {record, {658,16}, 'PrivateKeyInfo', [{record_field,{658,34},{atom,{658,34},version},{atom,{658,44},v1}}, {record_field, {659,34}, {atom,{659,34},privateKeyAlgorithm}, {var,{659,56},'Alg'}}, {record_field, {660,34}, {atom,{660,34},privateKey}, {var,{660,47},'Key'}}]}]}]}, {clause, {661,1}, [{atom,{661,12},'PrivateKeyInfo'}, {match, {661,30}, {record,{661,30},'RSAPrivateKey',[]}, {var,{661,51},'PrivKey'}}], [], [{match, {662,5}, {var,{662,5},'Parms'}, {bin, {662,14}, [{bin_element,{662,14},{integer,{662,14},5},default,default}, {bin_element,{662,14},{integer,{662,14},0},default,default}]}}, {match, {663,5}, {var,{663,5},'Alg'}, {record, {663,11}, 'PrivateKeyInfo_privateKeyAlgorithm', [{record_field, {663,49}, {atom,{663,49},algorithm}, {tuple, {663,62}, [{integer,{663,62},1}, {integer,{663,62},2}, {integer,{663,62},840}, {integer,{663,62},113549}, {integer,{663,62},1}, {integer,{663,62},1}, {integer,{663,62},1}]}}, {record_field, {664,49}, {atom,{664,49},parameters}, {tuple, {664,62}, [{atom,{664,63},asn1_OPENTYPE},{var,{664,78},'Parms'}]}}]}}, {match, {665,5}, {var,{665,5},'Key'}, {call, {665,11}, {atom,{665,11},der_encode}, [{atom,{665,22},'RSAPrivateKey'},{var,{665,39},'PrivKey'}]}}, {call, {666,5}, {atom,{666,5},der_encode}, [{atom,{666,16},'PrivateKeyInfo'}, {record, {667,16}, 'PrivateKeyInfo', [{record_field,{667,34},{atom,{667,34},version},{atom,{667,44},v1}}, {record_field, {668,34}, {atom,{668,34},privateKeyAlgorithm}, {var,{668,56},'Alg'}}, {record_field, {669,34}, {atom,{669,34},privateKey}, {var,{669,47},'Key'}}]}]}]}, {clause, {670,1}, [{atom,{670,12},'PrivateKeyInfo'}, {tuple, {670,30}, [{match, {670,31}, {record,{670,31},'RSAPrivateKey',[]}, {var,{670,52},'PrivKey'}}, {var,{670,61},'Parameters'}]}], [], [{match, {671,5}, {var,{671,5},'Params'}, {call, {671,14}, {atom,{671,14},der_encode}, [{atom,{671,25},'RSASSA-PSS-params'},{var,{671,46},'Parameters'}]}}, {match, {672,5}, {var,{672,5},'Alg'}, {record, {672,11}, 'PrivateKeyInfo_privateKeyAlgorithm', [{record_field, {672,49}, {atom,{672,49},algorithm}, {tuple, {672,62}, [{integer,{672,62},1}, {integer,{672,62},2}, {integer,{672,62},840}, {integer,{672,62},113549}, {integer,{672,62},1}, {integer,{672,62},1}, {integer,{672,62},10}]}}, {record_field, {673,49}, {atom,{673,49},parameters}, {tuple, {674,53}, [{atom,{674,54},asn1_OPENTYPE},{var,{674,69},'Params'}]}}]}}, {match, {675,5}, {var,{675,5},'Key'}, {call, {675,11}, {atom,{675,11},der_encode}, [{atom,{675,22},'RSAPrivateKey'},{var,{675,39},'PrivKey'}]}}, {call, {676,5}, {atom,{676,5},der_encode}, [{atom,{676,16},'PrivateKeyInfo'}, {record, {676,34}, 'PrivateKeyInfo', [{record_field,{676,52},{atom,{676,52},version},{atom,{676,62},v1}}, {record_field, {677,52}, {atom,{677,52},privateKeyAlgorithm}, {var,{677,74},'Alg'}}, {record_field, {678,52}, {atom,{678,52},privateKey}, {var,{678,65},'Key'}}]}]}]}, {clause, {679,1}, [{atom,{679,12},'PrivateKeyInfo'}, {record, {679,30}, 'ECPrivateKey', [{record_field, {679,46}, {atom,{679,46},parameters}, {tuple, {679,59}, [{atom,{679,60},namedCurve},{var,{679,72},'CurveOId'}]}}, {record_field, {680,46}, {atom,{680,46},privateKey}, {var,{680,59},'Key'}}]}], [[{op, {681,33}, 'orelse', {op, {681,16}, '==', {var,{681,7},'CurveOId'}, {tuple, {681,20}, [{integer,{681,20},1}, {integer,{681,20},3}, {integer,{681,20},101}, {integer,{681,20},112}]}}, {op, {682,16}, '==', {var,{682,7},'CurveOId'}, {tuple, {682,20}, [{integer,{682,20},1}, {integer,{682,20},3}, {integer,{682,20},101}, {integer,{682,20},113}]}}}]], [{match, {683,5}, {var,{683,5},'CurvePrivKey'}, {call, {683,20}, {atom,{683,20},der_encode}, [{atom,{683,31},'CurvePrivateKey'},{var,{683,50},'Key'}]}}, {match, {684,5}, {var,{684,5},'Alg'}, {record, {684,11}, 'PrivateKeyInfo_privateKeyAlgorithm', [{record_field, {684,49}, {atom,{684,49},algorithm}, {var,{684,61},'CurveOId'}}]}}, {call, {685,5}, {atom,{685,5},der_encode}, [{atom,{685,16},'PrivateKeyInfo'}, {record, {685,34}, 'PrivateKeyInfo', [{record_field,{685,52},{atom,{685,52},version},{atom,{685,62},v1}}, {record_field, {686,52}, {atom,{686,52},privateKeyAlgorithm}, {var,{686,74},'Alg'}}, {record_field, {687,52}, {atom,{687,52},privateKey}, {var,{687,65},'CurvePrivKey'}}]}]}]}, {clause, {688,1}, [{atom,{688,12},'PrivateKeyInfo'}, {match, {688,30}, {record, {688,30}, 'ECPrivateKey', [{record_field, {688,46}, {atom,{688,46},parameters}, {var,{688,59},'Parameters'}}]}, {var,{688,73},'PrivKey'}}], [], [{match, {689,5}, {var,{689,5},'Params'}, {call, {689,14}, {atom,{689,14},der_encode}, [{atom,{689,25},'EcpkParameters'},{var,{689,43},'Parameters'}]}}, {match, {690,5}, {var,{690,5},'Alg'}, {record, {690,11}, 'PrivateKeyInfo_privateKeyAlgorithm', [{record_field, {690,49}, {atom,{690,49},algorithm}, {tuple, {690,62}, [{integer,{690,62},1}, {integer,{690,62},2}, {integer,{690,62},840}, {integer,{690,62},10045}, {integer,{690,62},2}, {integer,{690,62},1}]}}, {record_field, {691,49}, {atom,{691,49},parameters}, {tuple, {691,62}, [{atom,{691,63},asn1_OPENTYPE},{var,{691,78},'Params'}]}}]}}, {match, {692,5}, {var,{692,5},'Key'}, {call, {692,11}, {atom,{692,11},der_encode}, [{atom,{692,22},'ECPrivateKey'}, {record, {692,45}, {var,{692,38},'PrivKey'}, 'ECPrivateKey', [{record_field, {692,61}, {atom,{692,61},parameters}, {atom,{692,74},asn1_NOVALUE}}]}]}}, {call, {693,5}, {atom,{693,5},der_encode}, [{atom,{693,16},'PrivateKeyInfo'}, {record, {694,16}, 'PrivateKeyInfo', [{record_field,{694,34},{atom,{694,34},version},{atom,{694,44},v1}}, {record_field, {695,34}, {atom,{695,34},privateKeyAlgorithm}, {var,{695,56},'Alg'}}, {record_field, {696,34}, {atom,{696,34},privateKey}, {var,{696,47},'Key'}}]}]}]}, {clause, {697,1}, [{atom,{697,12},'OneAsymmetricKey'}, {record, {697,32}, 'ECPrivateKey', [{record_field, {697,48}, {atom,{697,48},parameters}, {tuple, {697,61}, [{atom,{697,62},namedCurve},{var,{697,74},'CurveOId'}]}}, {record_field, {698,48}, {atom,{698,48},privateKey}, {var,{698,61},'Key'}}, {record_field, {699,48}, {atom,{699,48},attributes}, {var,{699,61},'Attr'}}, {record_field, {700,48}, {atom,{700,48},publicKey}, {var,{700,60},'PubKey'}}]}], [[{op, {701,33}, 'orelse', {op, {701,16}, '==', {var,{701,7},'CurveOId'}, {tuple, {701,20}, [{integer,{701,20},1}, {integer,{701,20},3}, {integer,{701,20},101}, {integer,{701,20},112}]}}, {op, {702,16}, '==', {var,{702,7},'CurveOId'}, {tuple, {702,20}, [{integer,{702,20},1}, {integer,{702,20},3}, {integer,{702,20},101}, {integer,{702,20},113}]}}}]], [{match, {703,5}, {var,{703,5},'CurvePrivKey'}, {call, {703,20}, {atom,{703,20},der_encode}, [{atom,{703,31},'CurvePrivateKey'},{var,{703,50},'Key'}]}}, {match, {704,5}, {var,{704,5},'Alg'}, {record, {704,11}, 'OneAsymmetricKey_privateKeyAlgorithm', [{record_field, {704,51}, {atom,{704,51},algorithm}, {var,{704,63},'CurveOId'}}]}}, {call, {705,5}, {atom,{705,5},der_encode}, [{atom,{705,16},'OneAsymmetricKey'}, {record, {706,16}, 'OneAsymmetricKey', [{record_field, {706,36}, {atom,{706,36},version}, {integer,{706,46},1}}, {record_field, {707,36}, {atom,{707,36},privateKeyAlgorithm}, {var,{707,58},'Alg'}}, {record_field, {708,36}, {atom,{708,36},privateKey}, {var,{708,49},'CurvePrivKey'}}, {record_field, {709,36}, {atom,{709,36},attributes}, {var,{709,49},'Attr'}}, {record_field, {710,36}, {atom,{710,36},publicKey}, {var,{710,48},'PubKey'}}]}]}]}, {clause, {711,1}, [{atom,{711,12},'OneAsymmetricKey'}, {record, {711,32}, 'ECPrivateKey', [{record_field, {711,48}, {atom,{711,48},parameters}, {tuple, {711,61}, [{atom,{711,62},namedCurve},{var,{711,74},'CurveOId'}]}}, {record_field, {712,48}, {atom,{712,48},privateKey}, {var,{712,61},'Key'}}, {record_field, {713,48}, {atom,{713,48},attributes}, {var,{713,61},'Attr'}}, {record_field, {714,48}, {atom,{714,48},publicKey}, {var,{714,60},'PubKey'}}]}], [], [{match, {715,5}, {var,{715,5},'Alg'}, {record, {715,11}, 'OneAsymmetricKey_privateKeyAlgorithm', [{record_field, {715,51}, {atom,{715,51},algorithm}, {var,{715,63},'CurveOId'}}]}}, {call, {716,5}, {atom,{716,5},der_encode}, [{atom,{716,16},'OneAsymmetricKey'}, {record, {717,16}, 'OneAsymmetricKey', [{record_field, {717,36}, {atom,{717,36},version}, {integer,{717,46},1}}, {record_field, {718,36}, {atom,{718,36},privateKeyAlgorithm}, {var,{718,58},'Alg'}}, {record_field, {719,36}, {atom,{719,36},privateKey}, {var,{719,49},'Key'}}, {record_field, {720,36}, {atom,{720,36},attributes}, {var,{720,49},'Attr'}}, {record_field, {721,36}, {atom,{721,36},publicKey}, {var,{721,48},'PubKey'}}]}]}]}, {clause, {722,1}, [{var,{722,12},'Asn1Type'},{var,{722,22},'Entity'}], [[{op, {722,66}, 'orelse', {op, {722,45}, '==', {var,{722,36},'Asn1Type'}, {atom,{722,48},'PrivateKeyInfo'}}, {op, {723,68}, 'orelse', {op, {723,45}, '==', {var,{723,36},'Asn1Type'}, {atom,{723,48},'OneAsymmetricKey'}}, {op, {724,17}, '==', {var,{724,8},'Asn1Type'}, {atom,{724,20},'EncryptedPrivateKeyInfo'}}}}]], [{'try', {725,6}, [{match, {726,10}, {tuple,{726,10},[{atom,{726,11},ok},{var,{726,15},'Encoded'}]}, {call, {726,26}, {remote, {726,38}, {atom,{726,26},'PKCS-FRAME'}, {atom,{726,39},encode}}, [{var,{726,46},'Asn1Type'},{var,{726,56},'Entity'}]}}, {var,{727,10},'Encoded'}], [], [{clause, {729,2}, [{tuple, {729,2}, [{atom,{729,2},error}, {match, {729,8}, {tuple, {729,8}, [{atom,{729,9},badmatch}, {tuple,{729,19},[{atom,{729,20},error},{var,{729,27},'_'}]}]}, {var,{729,33},'Error'}}, {var,{729,33},'_'}]}], [], [{call, {730,14}, {remote,{730,20},{atom,{730,14},erlang},{atom,{730,21},error}}, [{var,{730,27},'Error'}]}]}], []}]}, {clause, {732,1}, [{var,{732,12},'Asn1Type'},{var,{732,22},'Entity'}], [[{call,{732,35},{atom,{732,35},is_atom},[{var,{732,43},'Asn1Type'}]}]], [{'try', {733,5}, [{match, {734,2}, {tuple,{734,2},[{atom,{734,3},ok},{var,{734,7},'Encoded'}]}, {call, {734,18}, {remote, {734,31}, {atom,{734,18},'OTP-PUB-KEY'}, {atom,{734,32},encode}}, [{var,{734,39},'Asn1Type'},{var,{734,49},'Entity'}]}}, {var,{735,2},'Encoded'}], [], [{clause, {737,2}, [{tuple, {737,2}, [{atom,{737,2},error}, {match, {737,8}, {tuple, {737,8}, [{atom,{737,9},badmatch}, {tuple,{737,19},[{atom,{737,20},error},{var,{737,27},'_'}]}]}, {var,{737,33},'Error'}}, {var,{737,33},'_'}]}], [], [{call, {738,6}, {remote,{738,12},{atom,{738,6},erlang},{atom,{738,13},error}}, [{var,{738,19},'Error'}]}]}], []}]}]}, {attribute, {751,2}, spec, {{pkix_decode_cert,2}, [{type, {751,23}, bounded_fun, [{type, {751,23}, 'fun', [{type, {751,23}, product, [{var,{751,24},'Cert'},{var,{751,30},'Type'}]}, {type, {752,11}, union, [{type,{752,11},record,[{atom,{752,12},'Certificate'}]}, {type,{752,30},record,[{atom,{752,31},'OTPCertificate'}]}]}]}, [{type, {753,20}, constraint, [{atom,{753,20},is_subtype}, [{var,{753,20},'Cert'},{user_type,{753,28},der_encoded,[]}]]}, {type, {754,20}, constraint, [{atom,{754,20},is_subtype}, [{var,{754,20},'Type'}, {type, {754,28}, union, [{atom,{754,28},plain},{atom,{754,36},otp}]}]]}]]}]}}, {function, {761,1}, pkix_decode_cert,2, [{clause, {761,1}, [{var,{761,18},'DerCert'},{atom,{761,27},plain}], [[{call, {761,40}, {atom,{761,40},is_binary}, [{var,{761,50},'DerCert'}]}]], [{call, {762,5}, {atom,{762,5},der_decode}, [{atom,{762,16},'Certificate'},{var,{762,31},'DerCert'}]}]}, {clause, {763,1}, [{var,{763,18},'DerCert'},{atom,{763,27},otp}], [[{call, {763,37}, {atom,{763,37},is_binary}, [{var,{763,47},'DerCert'}]}]], [{'try', {764,5}, [{match, {765,2}, {tuple, {765,2}, [{atom,{765,3},ok}, {match, {765,7}, {record,{765,7},'OTPCertificate',[]}, {var,{765,28},'Cert'}}]}, {call, {766,6}, {remote, {766,25}, {atom,{766,6},pubkey_cert_records}, {atom,{766,26},decode_cert}}, [{var,{766,38},'DerCert'}]}}, {var,{767,2},'Cert'}], [], [{clause, {769,2}, [{tuple, {769,2}, [{atom,{769,2},error}, {match, {769,8}, {tuple, {769,8}, [{atom,{769,9},badmatch}, {tuple,{769,19},[{atom,{769,20},error},{var,{769,27},'_'}]}]}, {var,{769,33},'Error'}}, {var,{769,33},'_'}]}], [], [{call, {770,6}, {remote,{770,12},{atom,{770,6},erlang},{atom,{770,13},error}}, [{var,{770,19},'Error'}]}]}], []}]}]}, {attribute, {790,2}, spec, {{pkix_encode,3}, [{type, {790,18}, bounded_fun, [{type, {790,18}, 'fun', [{type, {790,18}, product, [{var,{790,19},'Asn1Type'}, {var,{790,29},'Entity'}, {var,{790,37},'Type'}]}, {var,{790,46},'Der'}]}, [{type, {791,55}, constraint, [{atom,{791,55},is_subtype}, [{var,{791,55},'Asn1Type'},{user_type,{791,67},asn1_type,[]}]]}, {type, {792,55}, constraint, [{atom,{792,55},is_subtype}, [{var,{792,55},'Entity'},{type,{792,65},term,[]}]]}, {type, {793,55}, constraint, [{atom,{793,55},is_subtype}, [{var,{793,55},'Type'}, {type, {793,63}, union, [{atom,{793,63},otp},{atom,{793,69},plain}]}]]}, {type, {794,55}, constraint, [{atom,{794,55},is_subtype}, [{var,{794,55},'Der'},{user_type,{794,62},der_encoded,[]}]]}]]}]}}, {function, {801,1}, pkix_encode,3, [{clause, {801,1}, [{var,{801,13},'Asn1Type'},{var,{801,23},'Term'},{atom,{801,29},plain}], [[{call,{801,41},{atom,{801,41},is_atom},[{var,{801,49},'Asn1Type'}]}]], [{call, {802,5}, {atom,{802,5},der_encode}, [{var,{802,16},'Asn1Type'},{var,{802,26},'Term'}]}]}, {clause, {804,1}, [{var,{804,13},'Asn1Type'},{var,{804,23},'Term0'},{atom,{804,30},otp}], [[{call,{804,40},{atom,{804,40},is_atom},[{var,{804,48},'Asn1Type'}]}]], [{match, {805,5}, {var,{805,5},'Term'}, {call, {805,12}, {remote, {805,31}, {atom,{805,12},pubkey_cert_records}, {atom,{805,32},transform}}, [{var,{805,42},'Term0'},{atom,{805,49},encode}]}}, {call, {806,5}, {atom,{806,5},der_encode}, [{var,{806,16},'Asn1Type'},{var,{806,26},'Term'}]}]}]}, {attribute, {813,2}, spec, {{decrypt_private,2}, [{type, {813,22}, bounded_fun, [{type, {813,22}, 'fun', [{type, {813,22}, product, [{var,{813,23},'CipherText'},{var,{813,35},'Key'}]}, {var,{814,30},'PlainText'}]}, [{type, {814,45}, constraint, [{atom,{814,45},is_subtype}, [{var,{814,45},'CipherText'},{type,{814,59},binary,[]}]]}, {type, {815,45}, constraint, [{atom,{815,45},is_subtype}, [{var,{815,45},'Key'},{user_type,{815,52},rsa_private_key,[]}]]}, {type, {816,45}, constraint, [{atom,{816,45},is_subtype}, [{var,{816,45},'PlainText'},{type,{816,59},binary,[]}]]}]]}]}}, {function, {817,1}, decrypt_private,2, [{clause, {817,1}, [{var,{817,17},'CipherText'},{var,{817,29},'Key'}], [], [{call, {818,5}, {atom,{818,5},decrypt_private}, [{var,{818,21},'CipherText'}, {var,{818,33},'Key'}, {nil,{818,38}}]}]}]}, {attribute, {830,2}, spec, {{decrypt_private,3}, [{type, {830,22}, bounded_fun, [{type, {830,22}, 'fun', [{type, {830,22}, product, [{var,{830,23},'CipherText'}, {var,{830,35},'Key'}, {var,{830,40},'Options'}]}, {var,{831,30},'PlainText'}]}, [{type, {831,45}, constraint, [{atom,{831,45},is_subtype}, [{var,{831,45},'CipherText'},{type,{831,59},binary,[]}]]}, {type, {832,45}, constraint, [{atom,{832,45},is_subtype}, [{var,{832,45},'Key'},{user_type,{832,52},rsa_private_key,[]}]]}, {type, {833,45}, constraint, [{atom,{833,45},is_subtype}, [{var,{833,45},'Options'}, {remote_type, {833,56}, [{atom,{833,56},crypto}, {atom,{833,63},pk_encrypt_decrypt_opts}, []]}]]}, {type, {834,45}, constraint, [{atom,{834,45},is_subtype}, [{var,{834,45},'PlainText'},{type,{834,59},binary,[]}]]}]]}]}}, {function, {835,1}, decrypt_private,3, [{clause, {835,1}, [{var,{835,17},'CipherText'}, {match, {836,3}, {record,{836,3},'RSAPrivateKey',[]}, {var,{836,24},'Key'}}, {var,{837,3},'Options'}], [[{call,{838,8},{atom,{838,8},is_binary},[{var,{838,18},'CipherText'}]}, {call,{839,8},{atom,{839,8},is_list},[{var,{839,16},'Options'}]}]], [{call, {840,5}, {remote, {840,11}, {atom,{840,5},crypto}, {atom,{840,12},private_decrypt}}, [{atom,{840,28},rsa}, {var,{840,33},'CipherText'}, {call, {840,45}, {atom,{840,45},format_rsa_private_key}, [{var,{840,68},'Key'}]}, {call, {840,74}, {atom,{840,74},default_options}, [{var,{840,90},'Options'}]}]}]}]}, {attribute, {849,2}, spec, {{decrypt_public,2}, [{type, {849,21}, bounded_fun, [{type, {849,21}, 'fun', [{type, {849,21}, product, [{var,{849,22},'CipherText'},{var,{849,34},'Key'}]}, {var,{850,8},'PlainText'}]}, [{type, {851,38}, constraint, [{atom,{851,38},is_subtype}, [{var,{851,38},'CipherText'},{type,{851,52},binary,[]}]]}, {type, {852,38}, constraint, [{atom,{852,38},is_subtype}, [{var,{852,38},'Key'},{user_type,{852,45},rsa_public_key,[]}]]}, {type, {853,38}, constraint, [{atom,{853,38},is_subtype}, [{var,{853,38},'PlainText'},{type,{853,51},binary,[]}]]}]]}]}}, {function, {854,1}, decrypt_public,2, [{clause, {854,1}, [{var,{854,16},'CipherText'},{var,{854,28},'Key'}], [], [{call, {855,5}, {atom,{855,5},decrypt_public}, [{var,{855,20},'CipherText'}, {var,{855,32},'Key'}, {nil,{855,37}}]}]}]}, {attribute, {869,2}, spec, {{decrypt_public,3}, [{type, {869,21}, bounded_fun, [{type, {869,21}, 'fun', [{type, {869,21}, product, [{var,{869,22},'CipherText'}, {var,{869,34},'Key'}, {var,{869,39},'Options'}]}, {var,{870,8},'PlainText'}]}, [{type, {871,38}, constraint, [{atom,{871,38},is_subtype}, [{var,{871,38},'CipherText'},{type,{871,52},binary,[]}]]}, {type, {872,38}, constraint, [{atom,{872,38},is_subtype}, [{var,{872,38},'Key'},{user_type,{872,45},rsa_public_key,[]}]]}, {type, {873,38}, constraint, [{atom,{873,38},is_subtype}, [{var,{873,38},'Options'}, {remote_type, {873,49}, [{atom,{873,49},crypto}, {atom,{873,56},pk_encrypt_decrypt_opts}, []]}]]}, {type, {874,38}, constraint, [{atom,{874,38},is_subtype}, [{var,{874,38},'PlainText'},{type,{874,51},binary,[]}]]}]]}]}}, {function, {875,1}, decrypt_public,3, [{clause, {875,1}, [{var,{875,16},'CipherText'}, {record, {875,28}, 'RSAPublicKey', [{record_field,{875,44},{atom,{875,44},modulus},{var,{875,54},'N'}}, {record_field, {875,57}, {atom,{875,57},publicExponent}, {var,{875,74},'E'}}]}, {var,{876,9},'Options'}], [[{call, {876,23}, {atom,{876,23},is_binary}, [{var,{876,33},'CipherText'}]}, {call,{876,46},{atom,{876,46},is_list},[{var,{876,54},'Options'}]}]], [{call, {877,5}, {remote, {877,11}, {atom,{877,5},crypto}, {atom,{877,12},public_decrypt}}, [{atom,{877,27},rsa}, {var,{877,32},'CipherText'}, {cons, {877,43}, {var,{877,44},'E'}, {cons,{877,47},{var,{877,47},'N'},{nil,{877,48}}}}, {call, {877,51}, {atom,{877,51},default_options}, [{var,{877,67},'Options'}]}]}]}]}, {attribute, {886,2}, spec, {{encrypt_public,2}, [{type, {886,21}, bounded_fun, [{type, {886,21}, 'fun', [{type, {886,21}, product, [{var,{886,22},'PlainText'},{var,{886,33},'Key'}]}, {var,{887,9},'CipherText'}]}, [{type, {888,40}, constraint, [{atom,{888,40},is_subtype}, [{var,{888,40},'PlainText'},{type,{888,53},binary,[]}]]}, {type, {889,40}, constraint, [{atom,{889,40},is_subtype}, [{var,{889,40},'Key'},{user_type,{889,47},rsa_public_key,[]}]]}, {type, {890,40}, constraint, [{atom,{890,40},is_subtype}, [{var,{890,40},'CipherText'},{type,{890,54},binary,[]}]]}]]}]}}, {function, {891,1}, encrypt_public,2, [{clause, {891,1}, [{var,{891,16},'PlainText'},{var,{891,27},'Key'}], [], [{call, {892,5}, {atom,{892,5},encrypt_public}, [{var,{892,20},'PlainText'},{var,{892,31},'Key'},{nil,{892,36}}]}]}]}, {attribute, {904,2}, spec, {{encrypt_public,3}, [{type, {904,21}, bounded_fun, [{type, {904,21}, 'fun', [{type, {904,21}, product, [{var,{904,22},'PlainText'}, {var,{904,33},'Key'}, {var,{904,38},'Options'}]}, {var,{905,9},'CipherText'}]}, [{type, {906,40}, constraint, [{atom,{906,40},is_subtype}, [{var,{906,40},'PlainText'},{type,{906,53},binary,[]}]]}, {type, {907,40}, constraint, [{atom,{907,40},is_subtype}, [{var,{907,40},'Key'},{user_type,{907,47},rsa_public_key,[]}]]}, {type, {908,40}, constraint, [{atom,{908,40},is_subtype}, [{var,{908,40},'Options'}, {remote_type, {908,51}, [{atom,{908,51},crypto}, {atom,{908,58},pk_encrypt_decrypt_opts}, []]}]]}, {type, {909,40}, constraint, [{atom,{909,40},is_subtype}, [{var,{909,40},'CipherText'},{type,{909,54},binary,[]}]]}]]}]}}, {function, {910,1}, encrypt_public,3, [{clause, {910,1}, [{var,{910,16},'PlainText'}, {record, {910,27}, 'RSAPublicKey', [{record_field,{910,43},{atom,{910,43},modulus},{var,{910,51},'N'}}, {record_field, {910,53}, {atom,{910,53},publicExponent}, {var,{910,68},'E'}}]}, {var,{911,9},'Options'}], [[{call, {911,23}, {atom,{911,23},is_binary}, [{var,{911,33},'PlainText'}]}, {call,{911,45},{atom,{911,45},is_list},[{var,{911,53},'Options'}]}]], [{call, {912,5}, {remote, {912,11}, {atom,{912,5},crypto}, {atom,{912,12},public_encrypt}}, [{atom,{912,27},rsa}, {var,{912,32},'PlainText'}, {cons, {912,43}, {var,{912,44},'E'}, {cons,{912,46},{var,{912,46},'N'},{nil,{912,47}}}}, {call, {912,50}, {atom,{912,50},default_options}, [{var,{912,66},'Options'}]}]}]}]}, {attribute, {919,2}, spec, {{encrypt_private,2}, [{type, {919,22}, bounded_fun, [{type, {919,22}, 'fun', [{type, {919,22}, product, [{var,{919,23},'PlainText'},{var,{919,34},'Key'}]}, {var,{920,9},'CipherText'}]}, [{type, {921,40}, constraint, [{atom,{921,40},is_subtype}, [{var,{921,40},'PlainText'},{type,{921,53},binary,[]}]]}, {type, {922,40}, constraint, [{atom,{922,40},is_subtype}, [{var,{922,40},'Key'},{user_type,{922,47},rsa_private_key,[]}]]}, {type, {923,40}, constraint, [{atom,{923,40},is_subtype}, [{var,{923,40},'CipherText'},{type,{923,54},binary,[]}]]}]]}]}}, {function, {924,1}, encrypt_private,2, [{clause, {924,1}, [{var,{924,17},'PlainText'},{var,{924,28},'Key'}], [], [{call, {925,5}, {atom,{925,5},encrypt_private}, [{var,{925,21},'PlainText'},{var,{925,32},'Key'},{nil,{925,37}}]}]}]}, {attribute, {943,2}, spec, {{encrypt_private,3}, [{type, {943,22}, bounded_fun, [{type, {943,22}, 'fun', [{type, {943,22}, product, [{var,{943,23},'PlainText'}, {var,{943,34},'Key'}, {var,{943,39},'Options'}]}, {var,{944,9},'CipherText'}]}, [{type, {945,40}, constraint, [{atom,{945,40},is_subtype}, [{var,{945,40},'PlainText'},{type,{945,53},binary,[]}]]}, {type, {946,40}, constraint, [{atom,{946,40},is_subtype}, [{var,{946,40},'Key'},{user_type,{946,47},rsa_private_key,[]}]]}, {type, {947,40}, constraint, [{atom,{947,40},is_subtype}, [{var,{947,40},'Options'}, {type, {947,51}, union, [{remote_type, {947,51}, [{atom,{947,51},crypto}, {atom,{947,58},pk_encrypt_decrypt_opts}, []]}, {user_type,{947,86},custom_key_opts,[]}]}]]}, {type, {948,40}, constraint, [{atom,{948,40},is_subtype}, [{var,{948,40},'CipherText'},{type,{948,54},binary,[]}]]}]]}]}}, {function, {949,1}, encrypt_private,3, [{clause, {949,1}, [{var,{949,17},'PlainText'}, {var,{949,28},'Key'}, {var,{949,33},'Options'}], [[{call,{950,8},{atom,{950,8},is_binary},[{var,{950,18},'PlainText'}]}, {call,{951,8},{atom,{951,8},is_list},[{var,{951,16},'Options'}]}]], [{match, {952,5}, {var,{952,5},'Opts'}, {call, {952,12}, {atom,{952,12},default_options}, [{var,{952,28},'Options'}]}}, {'case', {953,5}, {call, {953,10}, {atom,{953,10},format_sign_key}, [{var,{953,26},'Key'}]}, [{clause, {954,9}, [{tuple,{954,9},[{atom,{954,10},extern},{var,{954,18},'Fun'}]}], [], [{call, {954,26}, {var,{954,26},'Fun'}, [{var,{954,30},'PlainText'},{var,{954,41},'Opts'}]}]}, {clause, {955,9}, [{tuple,{955,9},[{atom,{955,10},rsa},{var,{955,15},'CryptoKey'}]}], [], [{call, {955,29}, {remote, {955,35}, {atom,{955,29},crypto}, {atom,{955,36},private_encrypt}}, [{atom,{955,52},rsa}, {var,{955,57},'PlainText'}, {var,{955,68},'CryptoKey'}, {var,{955,79},'Opts'}]}]}]}]}]}, {attribute, {962,2}, spec, {{dh_gex_group_sizes,0}, [{type, {962,25}, 'fun', [{type,{962,25},product,[]}, {type,{962,31},list,[{type,{962,32},pos_integer,[]}]}]}]}}, {function, {963,1}, dh_gex_group_sizes,0, [{clause, {963,1}, [],[], [{call, {964,5}, {remote, {964,15}, {atom,{964,5},pubkey_ssh}, {atom,{964,16},dh_gex_group_sizes}}, []}]}]}, {attribute, {993,2}, spec, {{dh_gex_group,4}, [{type, {993,19}, bounded_fun, [{type, {993,19}, 'fun', [{type, {993,19}, product, [{var,{993,20},'MinSize'}, {var,{993,29},'SuggestedSize'}, {var,{993,44},'MaxSize'}, {var,{993,53},'Groups'}]}, {type, {994,27}, union, [{type, {994,27}, tuple, [{atom,{994,28},ok}, {type, {994,31}, tuple, [{var,{994,32},'Size'},{var,{994,37},'Group'}]}]}, {type, {994,47}, tuple, [{atom,{994,48},error},{type,{994,54},term,[]}]}]}]}, [{type, {995,36}, constraint, [{atom,{995,36},is_subtype}, [{var,{995,36},'MinSize'},{type,{995,47},pos_integer,[]}]]}, {type, {996,36}, constraint, [{atom,{996,36},is_subtype}, [{var,{996,36},'SuggestedSize'},{type,{996,53},pos_integer,[]}]]}, {type, {997,36}, constraint, [{atom,{997,36},is_subtype}, [{var,{997,36},'MaxSize'},{type,{997,47},pos_integer,[]}]]}, {type, {998,36}, constraint, [{atom,{998,36},is_subtype}, [{var,{998,36},'Groups'}, {type, {998,46}, union, [{atom,{998,46},undefined}, {type, {998,58}, list, [{type, {998,59}, tuple, [{var,{998,60},'Size'}, {type,{998,65},list,[{var,{998,66},'Group'}]}]}]}]}]]}, {type, {999,36}, constraint, [{atom,{999,36},is_subtype}, [{var,{999,36},'Size'},{type,{999,44},pos_integer,[]}]]}, {type, {1000,36}, constraint, [{atom,{1000,36},is_subtype}, [{var,{1000,36},'Group'}, {type, {1000,45}, tuple, [{var,{1000,46},'G'},{var,{1000,48},'P'}]}]]}, {type, {1001,36}, constraint, [{atom,{1001,36},is_subtype}, [{var,{1001,36},'G'},{type,{1001,41},pos_integer,[]}]]}, {type, {1002,36}, constraint, [{atom,{1002,36},is_subtype}, [{var,{1002,36},'P'},{type,{1002,41},pos_integer,[]}]]}]]}]}}, {function, {1003,1}, dh_gex_group,4, [{clause, {1003,1}, [{var,{1003,14},'Min'}, {var,{1003,19},'N'}, {var,{1003,22},'Max'}, {var,{1003,27},'Groups'}], [], [{call, {1004,5}, {remote, {1004,15}, {atom,{1004,5},pubkey_ssh}, {atom,{1004,16},dh_gex_group}}, [{var,{1004,29},'Min'}, {var,{1004,34},'N'}, {var,{1004,37},'Max'}, {var,{1004,42},'Groups'}]}]}]}, {attribute, {1015,2}, spec, {{generate_key,1}, [{type, {1015,19}, bounded_fun, [{type, {1015,19}, 'fun', [{type, {1015,19}, product, [{type, {1015,20}, union, [{var,{1015,20},'DHparams'}, {var,{1015,31},'ECparams'}, {var,{1015,42},'RSAparams'}]}]}, {type, {1016,27}, union, [{var,{1016,27},'DHkeys'}, {var,{1016,36},'ECkey'}, {var,{1016,44},'RSAkey'}]}]}, [{type, {1017,36}, constraint, [{atom,{1017,36},is_subtype}, [{var,{1017,36},'DHparams'}, {type,{1017,48},record,[{atom,{1017,49},'DHParameter'}]}]]}, {type, {1018,36}, constraint, [{atom,{1018,36},is_subtype}, [{var,{1018,36},'DHkeys'}, {type, {1018,46}, tuple, [{ann_type, {1018,47}, [{var,{1018,47},'PublicDH'},{type,{1018,57},binary,[]}]}, {ann_type, {1018,67}, [{var,{1018,67},'PrivateDH'},{type,{1018,78},binary,[]}]}]}]]}, {type, {1019,36}, constraint, [{atom,{1019,36},is_subtype}, [{var,{1019,36},'ECparams'}, {type, {1019,48}, union, [{type, {1019,48}, tuple, [{atom,{1019,49},namedCurve}, {type, {1019,61}, union, [{user_type,{1019,61},oid,[]},{type,{1019,69},atom,[]}]}]}, {type,{1019,79},record,[{atom,{1019,80},'ECParameters'}]}]}]]}, {type, {1020,36}, constraint, [{atom,{1020,36},is_subtype}, [{var,{1020,36},'ECkey'}, {type,{1020,45},record,[{atom,{1020,46},'ECPrivateKey'}]}]]}, {type, {1021,36}, constraint, [{atom,{1021,36},is_subtype}, [{var,{1021,36},'RSAparams'}, {type, {1021,49}, tuple, [{atom,{1021,50},rsa}, {var,{1021,55},'Size'}, {var,{1021,61},'PubExp'}]}]]}, {type, {1022,36}, constraint, [{atom,{1022,36},is_subtype}, [{var,{1022,36},'Size'},{type,{1022,42},pos_integer,[]}]]}, {type, {1023,36}, constraint, [{atom,{1023,36},is_subtype}, [{var,{1023,36},'PubExp'},{type,{1023,44},pos_integer,[]}]]}, {type, {1024,36}, constraint, [{atom,{1024,36},is_subtype}, [{var,{1024,36},'RSAkey'}, {type, {1024,46}, record, [{atom,{1024,47},'RSAPrivateKey'}]}]]}]]}]}}, {function, {1026,1}, generate_key,1, [{clause, {1026,1}, [{record, {1026,14}, 'DHParameter', [{record_field,{1026,29},{atom,{1026,29},prime},{var,{1026,37},'P'}}, {record_field, {1026,40}, {atom,{1026,40},base}, {var,{1026,47},'G'}}]}], [], [{call, {1027,5}, {remote, {1027,11}, {atom,{1027,5},crypto}, {atom,{1027,12},generate_key}}, [{atom,{1027,25},dh}, {cons, {1027,29}, {var,{1027,30},'P'}, {cons,{1027,33},{var,{1027,33},'G'},{nil,{1027,34}}}}]}]}, {clause, {1028,1}, [{match, {1028,14}, {tuple,{1028,14},[{atom,{1028,15},namedCurve},{var,{1028,27},'_'}]}, {var,{1028,32},'Params'}}], [], [{call, {1029,5}, {atom,{1029,5},ec_generate_key}, [{var,{1029,21},'Params'}]}]}, {clause, {1030,1}, [{match, {1030,14}, {tuple,{1030,14},[{atom,{1030,15},ecParameters},{var,{1030,29},'_'}]}, {var,{1030,34},'Params'}}], [], [{call, {1031,5}, {atom,{1031,5},ec_generate_key}, [{var,{1031,21},'Params'}]}]}, {clause, {1032,1}, [{match, {1032,14}, {record,{1032,14},'ECParameters',[]}, {var,{1032,34},'Params'}}], [], [{call, {1033,5}, {atom,{1033,5},ec_generate_key}, [{var,{1033,21},'Params'}]}]}, {clause, {1034,1}, [{tuple, {1034,14}, [{atom,{1034,15},rsa}, {var,{1034,20},'ModulusSize'}, {var,{1034,33},'PublicExponent'}]}], [], [{'case', {1035,5}, {call, {1035,10}, {remote, {1035,16}, {atom,{1035,10},crypto}, {atom,{1035,17},generate_key}}, [{atom,{1035,30},rsa}, {tuple, {1035,35}, [{var,{1035,36},'ModulusSize'}, {var,{1035,48},'PublicExponent'}]}]}, [{clause, {1036,9}, [{tuple, {1036,9}, [{cons, {1036,10}, {var,{1036,11},'E'}, {cons,{1036,14},{var,{1036,14},'N'},{nil,{1036,15}}}}, {cons, {1036,18}, {var,{1036,19},'E'}, {cons, {1036,22}, {var,{1036,22},'N'}, {cons, {1036,25}, {var,{1036,25},'D'}, {cons, {1036,28}, {var,{1036,28},'P'}, {cons, {1036,31}, {var,{1036,31},'Q'}, {cons, {1036,34}, {var,{1036,34},'D_mod_P_1'}, {cons, {1036,45}, {var,{1036,45},'D_mod_Q_1'}, {cons, {1036,56}, {var,{1036,56},'InvQ_mod_P'}, {nil,{1036,66}}}}}}}}}}]}], [], [{match, {1037,13}, {var,{1037,13},'Nint'}, {call, {1037,20}, {remote, {1037,26}, {atom,{1037,20},crypto}, {atom,{1037,27},bytes_to_integer}}, [{var,{1037,44},'N'}]}}, {match, {1038,13}, {var,{1038,13},'Eint'}, {call, {1038,20}, {remote, {1038,26}, {atom,{1038,20},crypto}, {atom,{1038,27},bytes_to_integer}}, [{var,{1038,44},'E'}]}}, {record, {1039,13}, 'RSAPrivateKey', [{record_field, {1039,30}, {atom,{1039,30},version}, {atom,{1039,40},'two-prime'}}, {record_field, {1040,30}, {atom,{1040,30},modulus}, {var,{1040,40},'Nint'}}, {record_field, {1041,30}, {atom,{1041,30},publicExponent}, {var,{1041,47},'Eint'}}, {record_field, {1042,30}, {atom,{1042,30},privateExponent}, {call, {1042,48}, {remote, {1042,54}, {atom,{1042,48},crypto}, {atom,{1042,55},bytes_to_integer}}, [{var,{1042,72},'D'}]}}, {record_field, {1043,30}, {atom,{1043,30},prime1}, {call, {1043,39}, {remote, {1043,45}, {atom,{1043,39},crypto}, {atom,{1043,46},bytes_to_integer}}, [{var,{1043,63},'P'}]}}, {record_field, {1044,30}, {atom,{1044,30},prime2}, {call, {1044,39}, {remote, {1044,45}, {atom,{1044,39},crypto}, {atom,{1044,46},bytes_to_integer}}, [{var,{1044,63},'Q'}]}}, {record_field, {1045,30}, {atom,{1045,30},exponent1}, {call, {1045,42}, {remote, {1045,48}, {atom,{1045,42},crypto}, {atom,{1045,49},bytes_to_integer}}, [{var,{1045,66},'D_mod_P_1'}]}}, {record_field, {1046,30}, {atom,{1046,30},exponent2}, {call, {1046,42}, {remote, {1046,48}, {atom,{1046,42},crypto}, {atom,{1046,49},bytes_to_integer}}, [{var,{1046,66},'D_mod_Q_1'}]}}, {record_field, {1047,30}, {atom,{1047,30},coefficient}, {call, {1047,44}, {remote, {1047,50}, {atom,{1047,44},crypto}, {atom,{1047,51},bytes_to_integer}}, [{var,{1047,68},'InvQ_mod_P'}]}}]}]}, {clause, {1049,9}, [{tuple, {1049,9}, [{cons, {1049,10}, {var,{1049,11},'E'}, {cons,{1049,14},{var,{1049,14},'N'},{nil,{1049,15}}}}, {cons, {1049,18}, {var,{1049,19},'E'}, {cons, {1049,22}, {var,{1049,22},'N'}, {cons,{1049,25},{var,{1049,25},'D'},{nil,{1049,26}}}}}]}], [], [{match, {1055,13}, {var,{1055,13},'Nint'}, {call, {1055,20}, {remote, {1055,26}, {atom,{1055,20},crypto}, {atom,{1055,27},bytes_to_integer}}, [{var,{1055,44},'N'}]}}, {match, {1056,13}, {var,{1056,13},'Eint'}, {call, {1056,20}, {remote, {1056,26}, {atom,{1056,20},crypto}, {atom,{1056,27},bytes_to_integer}}, [{var,{1056,44},'E'}]}}, {record, {1057,13}, 'RSAPrivateKey', [{record_field, {1057,30}, {atom,{1057,30},version}, {atom,{1057,40},'two-prime'}}, {record_field, {1058,31}, {atom,{1058,31},modulus}, {var,{1058,41},'Nint'}}, {record_field, {1059,31}, {atom,{1059,31},publicExponent}, {var,{1059,48},'Eint'}}, {record_field, {1060,31}, {atom,{1060,31},privateExponent}, {call, {1060,49}, {remote, {1060,55}, {atom,{1060,49},crypto}, {atom,{1060,56},bytes_to_integer}}, [{var,{1060,73},'D'}]}}, {record_field, {1061,31}, {atom,{1061,31},prime1}, {atom,{1061,40},'?'}}, {record_field, {1062,31}, {atom,{1062,31},prime2}, {atom,{1062,40},'?'}}, {record_field, {1063,31}, {atom,{1063,31},exponent1}, {atom,{1063,43},'?'}}, {record_field, {1064,31}, {atom,{1064,31},exponent2}, {atom,{1064,43},'?'}}, {record_field, {1065,31}, {atom,{1065,31},coefficient}, {atom,{1065,45},'?'}}]}]}, {clause, {1067,9}, [{var,{1067,9},'Other'}], [], [{var,{1068,13},'Other'}]}]}]}]}, {attribute, {1077,2}, spec, {{compute_key,2}, [{type, {1077,18}, bounded_fun, [{type, {1077,18}, 'fun', [{type, {1077,18}, product, [{var,{1077,19},'OthersECDHkey'},{var,{1077,34},'MyECDHkey'}]}, {var,{1078,26},'SharedSecret'}]}, [{type, {1079,35}, constraint, [{atom,{1079,35},is_subtype}, [{var,{1079,35},'OthersECDHkey'}, {type,{1079,52},record,[{atom,{1079,53},'ECPoint'}]}]]}, {type, {1080,35}, constraint, [{atom,{1080,35},is_subtype}, [{var,{1080,35},'MyECDHkey'}, {type,{1080,48},record,[{atom,{1080,49},'ECPrivateKey'}]}]]}, {type, {1081,35}, constraint, [{atom,{1081,35},is_subtype}, [{var,{1081,35},'SharedSecret'}, {type,{1081,51},binary,[]}]]}]]}]}}, {function, {1082,1}, compute_key,2, [{clause, {1082,1}, [{record, {1082,13}, 'ECPoint', [{record_field, {1082,24}, {atom,{1082,24},point}, {var,{1082,32},'Point'}}]}, {record, {1082,40}, 'ECPrivateKey', [{record_field, {1082,56}, {atom,{1082,56},privateKey}, {var,{1082,69},'PrivKey'}}, {record_field, {1083,14}, {atom,{1083,14},parameters}, {match, {1083,27}, {tuple, {1083,27}, [{atom,{1083,28},namedCurve},{var,{1083,40},'Curve'}]}, {var,{1083,49},'Param'}}}]}], [[{op, {1084,32}, 'orelse', {op, {1084,15}, '==', {var,{1084,9},'Curve'}, {tuple, {1084,19}, [{integer,{1084,19},1}, {integer,{1084,19},3}, {integer,{1084,19},101}, {integer,{1084,19},110}]}}, {op, {1085,15}, '==', {var,{1085,9},'Curve'}, {tuple, {1085,19}, [{integer,{1085,19},1}, {integer,{1085,19},3}, {integer,{1085,19},101}, {integer,{1085,19},111}]}}}]], [{match, {1086,5}, {var,{1086,5},'ECCurve'}, {call, {1086,15}, {atom,{1086,15},ec_curve_spec}, [{var,{1086,29},'Param'}]}}, {call, {1087,5}, {remote, {1087,11}, {atom,{1087,5},crypto}, {atom,{1087,12},compute_key}}, [{atom,{1087,24},eddh}, {var,{1087,30},'Point'}, {var,{1087,37},'PrivKey'}, {var,{1087,46},'ECCurve'}]}]}, {clause, {1088,1}, [{record, {1088,13}, 'ECPoint', [{record_field, {1088,24}, {atom,{1088,24},point}, {var,{1088,32},'Point'}}]}, {record, {1088,40}, 'ECPrivateKey', [{record_field, {1088,56}, {atom,{1088,56},privateKey}, {var,{1088,69},'PrivKey'}}, {record_field, {1089,14}, {atom,{1089,14},parameters}, {var,{1089,27},'Param'}}]}], [], [{match, {1090,5}, {var,{1090,5},'ECCurve'}, {call, {1090,15}, {atom,{1090,15},ec_curve_spec}, [{var,{1090,29},'Param'}]}}, {call, {1091,5}, {remote, {1091,11}, {atom,{1091,5},crypto}, {atom,{1091,12},compute_key}}, [{atom,{1091,24},ecdh}, {var,{1091,30},'Point'}, {var,{1091,37},'PrivKey'}, {var,{1091,46},'ECCurve'}]}]}]}, {attribute, {1097,2}, spec, {{compute_key,3}, [{type, {1097,18}, bounded_fun, [{type, {1097,18}, 'fun', [{type, {1097,18}, product, [{var,{1097,19},'OthersDHkey'}, {var,{1097,32},'MyDHkey'}, {var,{1097,41},'DHparms'}]}, {var,{1098,26},'SharedSecret'}]}, [{type, {1099,35}, constraint, [{atom,{1099,35},is_subtype}, [{var,{1099,35},'OthersDHkey'}, {remote_type, {1099,50}, [{atom,{1099,50},crypto},{atom,{1099,57},dh_public},[]]}]]}, {type, {1100,35}, constraint, [{atom,{1100,35},is_subtype}, [{var,{1100,35},'MyDHkey'}, {remote_type, {1100,46}, [{atom,{1100,46},crypto},{atom,{1100,53},dh_private},[]]}]]}, {type, {1101,35}, constraint, [{atom,{1101,35},is_subtype}, [{var,{1101,35},'DHparms'}, {type,{1101,47},record,[{atom,{1101,48},'DHParameter'}]}]]}, {type, {1102,35}, constraint, [{atom,{1102,35},is_subtype}, [{var,{1102,35},'SharedSecret'}, {type,{1102,51},binary,[]}]]}]]}]}}, {function, {1103,1}, compute_key,3, [{clause, {1103,1}, [{var,{1103,13},'PubKey'}, {var,{1103,21},'PrivKey'}, {record, {1103,30}, 'DHParameter', [{record_field,{1103,45},{atom,{1103,45},prime},{var,{1103,53},'P'}}, {record_field, {1103,56}, {atom,{1103,56},base}, {var,{1103,63},'G'}}]}], [], [{call, {1104,5}, {remote, {1104,11}, {atom,{1104,5},crypto}, {atom,{1104,12},compute_key}}, [{atom,{1104,24},dh}, {var,{1104,28},'PubKey'}, {var,{1104,36},'PrivKey'}, {cons, {1104,45}, {var,{1104,46},'P'}, {cons,{1104,49},{var,{1104,49},'G'},{nil,{1104,50}}}}]}]}]}, {attribute, {1115,2}, spec, {{pkix_sign_types,1}, [{type, {1115,22}, bounded_fun, [{type, {1115,22}, 'fun', [{type,{1115,22},product,[{var,{1115,23},'AlgorithmId'}]}, {type, {1116,30}, tuple, [{var,{1116,31},'DigestType'},{var,{1116,43},'SignatureType'}]}]}, [{type, {1117,39}, constraint, [{atom,{1117,39},is_subtype}, [{var,{1117,39},'AlgorithmId'},{user_type,{1117,54},oid,[]}]]}, {type, {1118,39}, constraint, [{atom,{1118,39},is_subtype}, [{var,{1118,39},'DigestType'}, {user_type,{1118,54},digest_type,[]}]]}, {type, {1119,39}, constraint, [{atom,{1119,39},is_subtype}, [{var,{1119,39},'SignatureType'}, {type, {1119,56}, union, [{atom,{1119,56},rsa}, {atom,{1119,62},dsa}, {atom,{1119,68},ecdsa}, {atom,{1119,76},eddsa}]}]]}]]}]}}, {function, {1122,1}, pkix_sign_types,1, [{clause, {1122,1}, [{tuple, {1122,18}, [{integer,{1122,18},1}, {integer,{1122,18},2}, {integer,{1122,18},840}, {integer,{1122,18},113549}, {integer,{1122,18},1}, {integer,{1122,18},1}, {integer,{1122,18},5}]}], [], [{tuple,{1123,5},[{atom,{1123,6},sha},{atom,{1123,11},rsa}]}]}, {clause, {1124,1}, [{tuple, {1124,18}, [{integer,{1124,18},1}, {integer,{1124,18},3}, {integer,{1124,18},14}, {integer,{1124,18},3}, {integer,{1124,18},2}, {integer,{1124,18},29}]}], [], [{tuple,{1125,5},[{atom,{1125,6},sha},{atom,{1125,11},rsa}]}]}, {clause, {1126,1}, [{tuple, {1126,18}, [{integer,{1126,18},1}, {integer,{1126,18},2}, {integer,{1126,18},840}, {integer,{1126,18},113549}, {integer,{1126,18},1}, {integer,{1126,18},1}, {integer,{1126,18},14}]}], [], [{tuple,{1127,5},[{atom,{1127,6},sha224},{atom,{1127,14},rsa}]}]}, {clause, {1128,1}, [{tuple, {1128,18}, [{integer,{1128,18},1}, {integer,{1128,18},2}, {integer,{1128,18},840}, {integer,{1128,18},113549}, {integer,{1128,18},1}, {integer,{1128,18},1}, {integer,{1128,18},11}]}], [], [{tuple,{1129,5},[{atom,{1129,6},sha256},{atom,{1129,14},rsa}]}]}, {clause, {1130,1}, [{tuple, {1130,18}, [{integer,{1130,18},1}, {integer,{1130,18},2}, {integer,{1130,18},840}, {integer,{1130,18},113549}, {integer,{1130,18},1}, {integer,{1130,18},1}, {integer,{1130,18},12}]}], [], [{tuple,{1131,5},[{atom,{1131,6},sha384},{atom,{1131,14},rsa}]}]}, {clause, {1132,1}, [{tuple, {1132,18}, [{integer,{1132,18},1}, {integer,{1132,18},2}, {integer,{1132,18},840}, {integer,{1132,18},113549}, {integer,{1132,18},1}, {integer,{1132,18},1}, {integer,{1132,18},13}]}], [], [{tuple,{1133,5},[{atom,{1133,6},sha512},{atom,{1133,14},rsa}]}]}, {clause, {1134,1}, [{tuple, {1134,18}, [{integer,{1134,18},1}, {integer,{1134,18},2}, {integer,{1134,18},840}, {integer,{1134,18},113549}, {integer,{1134,18},1}, {integer,{1134,18},1}, {integer,{1134,18},4}]}], [], [{tuple,{1135,5},[{atom,{1135,6},md5},{atom,{1135,11},rsa}]}]}, {clause, {1136,1}, [{tuple, {1136,18}, [{integer,{1136,18},1}, {integer,{1136,18},2}, {integer,{1136,18},840}, {integer,{1136,18},10040}, {integer,{1136,18},4}, {integer,{1136,18},3}]}], [], [{tuple,{1137,5},[{atom,{1137,6},sha},{atom,{1137,11},dsa}]}]}, {clause, {1138,1}, [{tuple, {1138,18}, [{integer,{1138,18},1}, {integer,{1138,18},3}, {integer,{1138,18},14}, {integer,{1138,18},3}, {integer,{1138,18},2}, {integer,{1138,18},27}]}], [], [{tuple,{1139,5},[{atom,{1139,6},sha},{atom,{1139,11},dsa}]}]}, {clause, {1140,1}, [{tuple, {1140,18}, [{integer,{1140,18},2}, {integer,{1140,18},16}, {integer,{1140,18},840}, {integer,{1140,18},1}, {integer,{1140,18},101}, {integer,{1140,18},3}, {integer,{1140,18},4}, {integer,{1140,18},3}, {integer,{1140,18},1}]}], [], [{tuple,{1141,5},[{atom,{1141,6},sha224},{atom,{1141,14},dsa}]}]}, {clause, {1142,1}, [{tuple, {1142,18}, [{integer,{1142,18},2}, {integer,{1142,18},16}, {integer,{1142,18},840}, {integer,{1142,18},1}, {integer,{1142,18},101}, {integer,{1142,18},3}, {integer,{1142,18},4}, {integer,{1142,18},3}, {integer,{1142,18},2}]}], [], [{tuple,{1143,5},[{atom,{1143,6},sha256},{atom,{1143,14},dsa}]}]}, {clause, {1144,1}, [{tuple, {1144,18}, [{integer,{1144,18},1}, {integer,{1144,18},2}, {integer,{1144,18},840}, {integer,{1144,18},10045}, {integer,{1144,18},4}, {integer,{1144,18},1}]}], [], [{tuple,{1145,5},[{atom,{1145,6},sha},{atom,{1145,11},ecdsa}]}]}, {clause, {1146,1}, [{tuple, {1146,18}, [{integer,{1146,18},1}, {integer,{1146,18},2}, {integer,{1146,18},840}, {integer,{1146,18},10045}, {integer,{1146,18},4}, {integer,{1146,18},3}, {integer,{1146,18},2}]}], [], [{tuple,{1147,5},[{atom,{1147,6},sha256},{atom,{1147,14},ecdsa}]}]}, {clause, {1148,1}, [{tuple, {1148,18}, [{integer,{1148,18},1}, {integer,{1148,18},2}, {integer,{1148,18},840}, {integer,{1148,18},10045}, {integer,{1148,18},4}, {integer,{1148,18},3}, {integer,{1148,18},3}]}], [], [{tuple,{1149,5},[{atom,{1149,6},sha384},{atom,{1149,14},ecdsa}]}]}, {clause, {1150,1}, [{tuple, {1150,18}, [{integer,{1150,18},1}, {integer,{1150,18},2}, {integer,{1150,18},840}, {integer,{1150,18},10045}, {integer,{1150,18},4}, {integer,{1150,18},3}, {integer,{1150,18},4}]}], [], [{tuple,{1151,5},[{atom,{1151,6},sha512},{atom,{1151,14},ecdsa}]}]}, {clause, {1152,1}, [{tuple, {1152,18}, [{integer,{1152,18},1}, {integer,{1152,18},3}, {integer,{1152,18},101}, {integer,{1152,18},112}]}], [], [{tuple,{1153,5},[{atom,{1153,6},none},{atom,{1153,12},eddsa}]}]}, {clause, {1154,1}, [{tuple, {1154,18}, [{integer,{1154,18},1}, {integer,{1154,18},3}, {integer,{1154,18},101}, {integer,{1154,18},113}]}], [], [{tuple,{1155,5},[{atom,{1155,6},none},{atom,{1155,12},eddsa}]}]}]}, {attribute, {1161,2}, spec, {{pkix_hash_type,1}, [{type, {1161,21}, 'fun', [{type, {1161,21}, product, [{ann_type, {1161,22}, [{var,{1161,22},'HashOid'},{user_type,{1161,31},oid,[]}]}]}, {ann_type, {1161,41}, [{var,{1161,41},'DigestType'}, {type, {1161,54}, union, [{atom,{1161,54},md5}, {remote_type, {1161,60}, [{atom,{1161,60},crypto},{atom,{1161,67},sha1},[]]}, {remote_type, {1161,76}, [{atom,{1161,76},crypto},{atom,{1161,83},sha2},[]]}]}]}]}]}}, {function, {1163,1}, pkix_hash_type,1, [{clause, {1163,1}, [{tuple, {1163,17}, [{integer,{1163,17},1}, {integer,{1163,17},3}, {integer,{1163,17},14}, {integer,{1163,17},3}, {integer,{1163,17},2}, {integer,{1163,17},26}]}], [], [{atom,{1164,5},sha}]}, {clause, {1165,1}, [{tuple, {1165,17}, [{integer,{1165,17},2}, {integer,{1165,17},16}, {integer,{1165,17},840}, {integer,{1165,17},1}, {integer,{1165,17},101}, {integer,{1165,17},3}, {integer,{1165,17},4}, {integer,{1165,17},2}, {integer,{1165,17},3}]}], [], [{atom,{1166,5},sha512}]}, {clause, {1167,1}, [{tuple, {1167,17}, [{integer,{1167,17},2}, {integer,{1167,17},16}, {integer,{1167,17},840}, {integer,{1167,17},1}, {integer,{1167,17},101}, {integer,{1167,17},3}, {integer,{1167,17},4}, {integer,{1167,17},2}, {integer,{1167,17},2}]}], [], [{atom,{1168,5},sha384}]}, {clause, {1169,1}, [{tuple, {1169,17}, [{integer,{1169,17},2}, {integer,{1169,17},16}, {integer,{1169,17},840}, {integer,{1169,17},1}, {integer,{1169,17},101}, {integer,{1169,17},3}, {integer,{1169,17},4}, {integer,{1169,17},2}, {integer,{1169,17},1}]}], [], [{atom,{1170,5},sha256}]}, {clause, {1171,1}, [{atom,{1171,16},'id-sha224'}], [], [{atom,{1172,5},sha224}]}, {clause,{1173,1},[{atom,{1173,16},'id-md5'}],[],[{atom,{1174,5},md5}]}]}, {attribute, {1180,2}, spec, {{sign,3}, [{type, {1180,11}, bounded_fun, [{type, {1180,11}, 'fun', [{type, {1180,11}, product, [{var,{1180,12},'Msg'}, {var,{1180,17},'DigestType'}, {var,{1180,29},'Key'}]}, {var,{1181,19},'Signature'}]}, [{type, {1181,34}, constraint, [{atom,{1181,34},is_subtype}, [{var,{1181,34},'Msg'}, {type, {1181,42}, union, [{type,{1181,42},binary,[]}, {type, {1181,53}, tuple, [{atom,{1181,54},digest},{type,{1181,61},binary,[]}]}]}]]}, {type, {1182,34}, constraint, [{atom,{1182,34},is_subtype}, [{var,{1182,34},'DigestType'}, {user_type,{1182,48},digest_type,[]}]]}, {type, {1183,34}, constraint, [{atom,{1183,34},is_subtype}, [{var,{1183,34},'Key'},{user_type,{1183,41},private_key,[]}]]}, {type, {1184,34}, constraint, [{atom,{1184,34},is_subtype}, [{var,{1184,34},'Signature'},{type,{1184,47},binary,[]}]]}]]}]}}, {function, {1185,1}, sign,3, [{clause, {1185,1}, [{var,{1185,6},'DigestOrPlainText'}, {var,{1185,25},'DigestType'}, {var,{1185,37},'Key'}], [], [{call, {1186,5}, {atom,{1186,5},sign}, [{var,{1186,10},'DigestOrPlainText'}, {var,{1186,29},'DigestType'}, {var,{1186,41},'Key'}, {nil,{1186,46}}]}]}]}, {attribute, {1199,2}, spec, {{sign,4}, [{type, {1199,11}, bounded_fun, [{type, {1199,11}, 'fun', [{type, {1199,11}, product, [{var,{1199,12},'Msg'}, {var,{1199,17},'DigestType'}, {var,{1199,29},'Key'}, {var,{1199,34},'Options'}]}, {var,{1200,19},'Signature'}]}, [{type, {1200,34}, constraint, [{atom,{1200,34},is_subtype}, [{var,{1200,34},'Msg'}, {type, {1200,42}, union, [{type,{1200,42},binary,[]}, {type, {1200,53}, tuple, [{atom,{1200,54},digest},{type,{1200,61},binary,[]}]}]}]]}, {type, {1201,34}, constraint, [{atom,{1201,34},is_subtype}, [{var,{1201,34},'DigestType'}, {user_type,{1201,48},digest_type,[]}]]}, {type, {1202,34}, constraint, [{atom,{1202,34},is_subtype}, [{var,{1202,34},'Key'},{user_type,{1202,41},private_key,[]}]]}, {type, {1203,34}, constraint, [{atom,{1203,34},is_subtype}, [{var,{1203,34},'Options'}, {type, {1203,45}, union, [{remote_type, {1203,45}, [{atom,{1203,45},crypto}, {atom,{1203,52},pk_sign_verify_opts}, []]}, {user_type,{1203,76},custom_key_opts,[]}]}]]}, {type, {1204,34}, constraint, [{atom,{1204,34},is_subtype}, [{var,{1204,34},'Signature'},{type,{1204,47},binary,[]}]]}]]}]}}, {function, {1205,1}, sign,4, [{clause, {1205,1}, [{var,{1205,6},'Digest'}, {atom,{1205,14},none}, {match, {1205,20}, {var,{1205,20},'Key'}, {record,{1205,26},'DSAPrivateKey',[]}}, {var,{1205,46},'Options'}], [[{call, {1205,60}, {atom,{1205,60},is_binary}, [{var,{1205,70},'Digest'}]}]], [{call, {1207,5}, {atom,{1207,5},sign}, [{tuple,{1207,10},[{atom,{1207,11},digest},{var,{1207,19},'Digest'}]}, {atom,{1207,28},sha}, {var,{1207,33},'Key'}, {var,{1207,38},'Options'}]}]}, {clause, {1208,1}, [{var,{1208,6},'DigestOrPlainText'}, {var,{1208,25},'DigestType'}, {var,{1208,37},'Key'}, {var,{1208,42},'Options'}], [], [{'case', {1209,5}, {call, {1209,10}, {atom,{1209,10},format_sign_key}, [{var,{1209,26},'Key'}]}, [{clause, {1210,2}, [{atom,{1210,2},badarg}], [], [{call, {1211,6}, {remote,{1211,12},{atom,{1211,6},erlang},{atom,{1211,13},error}}, [{atom,{1211,19},badarg}, {cons, {1211,27}, {var,{1211,28},'DigestOrPlainText'}, {cons, {1211,47}, {var,{1211,47},'DigestType'}, {cons, {1211,59}, {var,{1211,59},'Key'}, {cons, {1211,64}, {var,{1211,64},'Options'}, {nil,{1211,71}}}}}}]}]}, {clause, {1212,9}, [{tuple,{1212,9},[{atom,{1212,10},extern},{var,{1212,18},'Fun'}]}], [[{call, {1212,28}, {atom,{1212,28},is_function}, [{var,{1212,40},'Fun'}]}]], [{call, {1213,13}, {var,{1213,13},'Fun'}, [{var,{1213,17},'DigestOrPlainText'}, {var,{1213,36},'DigestType'}, {var,{1213,48},'Options'}]}]}, {clause, {1214,2}, [{tuple, {1214,2}, [{var,{1214,3},'Algorithm'},{var,{1214,14},'CryptoKey'}]}], [], [{'try', {1215,6}, [{call, {1215,10}, {remote, {1215,16}, {atom,{1215,10},crypto}, {atom,{1215,17},sign}}, [{var,{1215,22},'Algorithm'}, {var,{1215,33},'DigestType'}, {var,{1215,45},'DigestOrPlainText'}, {var,{1215,64},'CryptoKey'}, {var,{1215,75},'Options'}]}], [], [{clause, {1217,17}, [{tuple, {1217,17}, [{atom,{1217,17},error}, {tuple, {1217,23}, [{atom,{1217,24},notsup}, {var,{1217,31},'_'}, {var,{1217,33},'_'}]}, {var,{1217,33},'_'}]}], [], [{call, {1217,39}, {atom,{1217,39},error}, [{atom,{1217,45},notsup}]}]}, {clause, {1218,17}, [{tuple, {1218,17}, [{atom,{1218,17},error}, {tuple, {1218,23}, [{atom,{1218,24},error}, {var,{1218,30},'_'}, {var,{1218,32},'_'}]}, {var,{1218,32},'_'}]}], [], [{call, {1218,38}, {atom,{1218,38},error}, [{atom,{1218,44},error}]}]}, {clause, {1219,17}, [{tuple, {1219,17}, [{atom,{1219,17},error}, {tuple, {1219,23}, [{atom,{1219,24},badarg}, {var,{1219,31},'_'}, {var,{1219,33},'_'}]}, {var,{1219,33},'_'}]}], [], [{call, {1219,39}, {atom,{1219,39},error}, [{atom,{1219,45},badarg}]}]}], []}]}]}]}]}, {attribute, {1227,2}, spec, {{verify,4}, [{type, {1227,13}, bounded_fun, [{type, {1227,13}, 'fun', [{type, {1227,13}, product, [{var,{1227,14},'Msg'}, {var,{1227,19},'DigestType'}, {var,{1227,31},'Signature'}, {var,{1227,42},'Key'}]}, {type,{1228,21},boolean,[]}]}, [{type, {1228,36}, constraint, [{atom,{1228,36},is_subtype}, [{var,{1228,36},'Msg'}, {type, {1228,43}, union, [{type,{1228,43},binary,[]}, {type, {1228,54}, tuple, [{atom,{1228,55},digest},{type,{1228,63},binary,[]}]}]}]]}, {type, {1229,36}, constraint, [{atom,{1229,36},is_subtype}, [{var,{1229,36},'DigestType'}, {user_type,{1229,50},digest_type,[]}]]}, {type, {1230,36}, constraint, [{atom,{1230,36},is_subtype}, [{var,{1230,36},'Signature'},{type,{1230,49},binary,[]}]]}, {type, {1231,36}, constraint, [{atom,{1231,36},is_subtype}, [{var,{1231,36},'Key'}, {user_type,{1231,43},public_key,[]}]]}]]}]}}, {function, {1233,1}, verify,4, [{clause, {1233,1}, [{var,{1233,8},'DigestOrPlainText'}, {var,{1233,27},'DigestType'}, {var,{1233,39},'Signature'}, {var,{1233,50},'Key'}], [], [{call, {1234,5}, {atom,{1234,5},verify}, [{var,{1234,12},'DigestOrPlainText'}, {var,{1234,31},'DigestType'}, {var,{1234,43},'Signature'}, {var,{1234,54},'Key'}, {nil,{1234,59}}]}]}]}, {attribute, {1244,2}, spec, {{verify,5}, [{type, {1244,13}, bounded_fun, [{type, {1244,13}, 'fun', [{type, {1244,13}, product, [{var,{1244,14},'Msg'}, {var,{1244,19},'DigestType'}, {var,{1244,31},'Signature'}, {var,{1244,42},'Key'}, {var,{1244,47},'Options'}]}, {type,{1245,21},boolean,[]}]}, [{type, {1245,36}, constraint, [{atom,{1245,36},is_subtype}, [{var,{1245,36},'Msg'}, {type, {1245,43}, union, [{type,{1245,43},binary,[]}, {type, {1245,54}, tuple, [{atom,{1245,55},digest},{type,{1245,63},binary,[]}]}]}]]}, {type, {1246,36}, constraint, [{atom,{1246,36},is_subtype}, [{var,{1246,36},'DigestType'}, {user_type,{1246,50},digest_type,[]}]]}, {type, {1247,36}, constraint, [{atom,{1247,36},is_subtype}, [{var,{1247,36},'Signature'},{type,{1247,49},binary,[]}]]}, {type, {1248,36}, constraint, [{atom,{1248,36},is_subtype}, [{var,{1248,36},'Key'},{user_type,{1248,43},public_key,[]}]]}, {type, {1249,36}, constraint, [{atom,{1249,36},is_subtype}, [{var,{1249,36},'Options'}, {remote_type, {1249,47}, [{atom,{1249,47},crypto}, {atom,{1249,54},pk_sign_verify_opts}, []]}]]}]]}]}}, {function, {1251,1}, verify,5, [{clause, {1251,1}, [{var,{1251,8},'Digest'}, {atom,{1251,16},none}, {var,{1251,22},'Signature'}, {match, {1251,33}, {var,{1251,33},'Key'}, {tuple, {1251,39}, [{var,{1251,40},'_'},{record,{1251,43},'Dss-Parms',[]}]}}, {var,{1251,60},'Options'}], [[{call, {1251,74}, {atom,{1251,74},is_binary}, [{var,{1251,84},'Digest'}]}]], [{call, {1253,5}, {atom,{1253,5},verify}, [{tuple,{1253,12},[{atom,{1253,13},digest},{var,{1253,21},'Digest'}]}, {atom,{1253,30},sha}, {var,{1253,35},'Signature'}, {var,{1253,46},'Key'}, {var,{1253,51},'Options'}]}]}, {clause, {1254,1}, [{var,{1254,8},'DigestOrPlainText'}, {var,{1254,27},'DigestType'}, {var,{1254,39},'Signature'}, {var,{1254,50},'Key'}, {var,{1254,55},'Options'}], [[{call, {1254,69}, {atom,{1254,69},is_binary}, [{var,{1254,79},'Signature'}]}]], [{'case', {1255,5}, {call, {1255,10}, {atom,{1255,10},format_verify_key}, [{var,{1255,28},'Key'}]}, [{clause, {1256,2}, [{atom,{1256,2},badarg}], [], [{call, {1257,6}, {remote,{1257,12},{atom,{1257,6},erlang},{atom,{1257,13},error}}, [{atom,{1257,19},badarg}, {cons, {1257,27}, {var,{1257,28},'DigestOrPlainText'}, {cons, {1257,47}, {var,{1257,47},'DigestType'}, {cons, {1257,59}, {var,{1257,59},'Signature'}, {cons, {1257,70}, {var,{1257,70},'Key'}, {cons, {1257,75}, {var,{1257,75},'Options'}, {nil,{1257,82}}}}}}}]}]}, {clause, {1258,2}, [{tuple, {1258,2}, [{var,{1258,3},'Algorithm'},{var,{1258,14},'CryptoKey'}]}], [], [{'try', {1259,6}, [{call, {1259,10}, {remote, {1259,16}, {atom,{1259,10},crypto}, {atom,{1259,17},verify}}, [{var,{1259,24},'Algorithm'}, {var,{1259,35},'DigestType'}, {var,{1259,47},'DigestOrPlainText'}, {var,{1259,66},'Signature'}, {var,{1259,77},'CryptoKey'}, {var,{1259,88},'Options'}]}], [], [{clause, {1261,17}, [{tuple, {1261,17}, [{atom,{1261,17},error}, {tuple, {1261,23}, [{atom,{1261,24},notsup}, {var,{1261,31},'_'}, {var,{1261,33},'_'}]}, {var,{1261,33},'_'}]}], [], [{call, {1261,39}, {atom,{1261,39},error}, [{atom,{1261,45},notsup}]}]}, {clause, {1262,17}, [{tuple, {1262,17}, [{atom,{1262,17},error}, {tuple, {1262,23}, [{atom,{1262,24},error}, {var,{1262,30},'_'}, {var,{1262,32},'_'}]}, {var,{1262,32},'_'}]}], [], [{call, {1262,38}, {atom,{1262,38},error}, [{atom,{1262,44},error}]}]}, {clause, {1263,17}, [{tuple, {1263,17}, [{atom,{1263,17},error}, {tuple, {1263,23}, [{atom,{1263,24},badarg}, {var,{1263,31},'_'}, {var,{1263,33},'_'}]}, {var,{1263,33},'_'}]}], [], [{call, {1263,39}, {atom,{1263,39},error}, [{atom,{1263,45},badarg}]}]}], []}]}]}]}, {clause, {1266,1}, [{var,{1266,8},'_'}, {var,{1266,10},'_'}, {var,{1266,12},'_'}, {var,{1266,14},'_'}, {var,{1266,16},'_'}], [], [{atom,{1269,5},false}]}]}, {attribute, {1279,2}, spec, {{pkix_dist_point,1}, [{type, {1279,22}, bounded_fun, [{type, {1279,22}, 'fun', [{type,{1279,22},product,[{var,{1279,23},'Cert'}]}, {var,{1279,32},'DistPoint'}]}, [{type, {1279,47}, constraint, [{atom,{1279,47},is_subtype}, [{var,{1279,47},'Cert'},{user_type,{1279,55},cert,[]}]]}, {type, {1280,47}, constraint, [{atom,{1280,47},is_subtype}, [{var,{1280,47},'DistPoint'}, {type, {1280,60}, record, [{atom,{1280,61},'DistributionPoint'}]}]]}]]}]}}, {function, {1282,1}, pkix_dist_point,1, [{clause, {1282,1}, [{var,{1282,17},'OtpCert'}], [[{call, {1282,31}, {atom,{1282,31},is_binary}, [{var,{1282,41},'OtpCert'}]}]], [{call, {1283,5}, {atom,{1283,5},pkix_dist_point}, [{call, {1283,21}, {atom,{1283,21},pkix_decode_cert}, [{var,{1283,38},'OtpCert'},{atom,{1283,47},otp}]}]}]}, {clause, {1284,1}, [{var,{1284,17},'OtpCert'}], [], [{match, {1285,5}, {var,{1285,5},'Issuer'}, {call, {1285,14}, {remote, {1285,24}, {atom,{1285,14},public_key}, {atom,{1285,25},pkix_normalize_name}}, [{call, {1286,9}, {remote, {1286,28}, {atom,{1286,9},pubkey_cert_records}, {atom,{1286,29},transform}}, [{record_field, {1287,43}, {record_field, {1287,11}, {var,{1287,4},'OtpCert'}, 'OTPCertificate', {atom,{1287,29},tbsCertificate}}, 'OTPTBSCertificate', {atom,{1287,64},issuer}}, {atom,{1287,72},encode}]}]}}, {match, {1289,5}, {var,{1289,5},'TBSCert'}, {record_field, {1289,22}, {var,{1289,15},'OtpCert'}, 'OTPCertificate', {atom,{1289,40},tbsCertificate}}}, {match, {1290,5}, {var,{1290,5},'Extensions'}, {call, {1290,18}, {remote, {1290,29}, {atom,{1290,18},pubkey_cert}, {atom,{1290,30},extensions_list}}, [{record_field, {1290,53}, {var,{1290,46},'TBSCert'}, 'OTPTBSCertificate', {atom,{1290,74},extensions}}]}}, {match, {1291,5}, {var,{1291,5},'AltNames'}, {'case', {1291,16}, {call, {1291,21}, {remote, {1291,32}, {atom,{1291,21},pubkey_cert}, {atom,{1291,33},select_extension}}, [{tuple, {1291,51}, [{integer,{1291,51},2}, {integer,{1291,51},5}, {integer,{1291,51},29}, {integer,{1291,51},18}]}, {var,{1291,74},'Extensions'}]}, [{clause,{1292,6},[{atom,{1292,6},undefined}],[],[{nil,{1293,10}}]}, {clause, {1294,6}, [{record, {1294,6}, 'Extension', [{record_field, {1294,19}, {atom,{1294,19},extnValue}, {var,{1294,31},'Value'}}]}], [], [{var,{1295,10},'Value'}]}]}}, {match, {1297,5}, {var,{1297,5},'Point'}, {tuple, {1297,13}, [{atom,{1297,14},fullName}, {cons, {1297,24}, {tuple, {1297,25}, [{atom,{1297,26},directoryName},{var,{1297,41},'Issuer'}]}, {var,{1297,51},'AltNames'}}]}}, {record, {1298,5}, 'DistributionPoint', [{record_field, {1298,26}, {atom,{1298,26},cRLIssuer}, {atom,{1298,38},asn1_NOVALUE}}, {record_field, {1299,5}, {atom,{1299,5},reasons}, {atom,{1299,15},asn1_NOVALUE}}, {record_field, {1300,5}, {atom,{1300,5},distributionPoint}, {var,{1300,26},'Point'}}]}]}]}, {attribute, {1305,2}, spec, {{pkix_dist_points,1}, [{type, {1305,23}, bounded_fun, [{type, {1305,23}, 'fun', [{type,{1305,23},product,[{var,{1305,24},'Cert'}]}, {var,{1305,33},'DistPoints'}]}, [{type, {1305,49}, constraint, [{atom,{1305,49},is_subtype}, [{var,{1305,49},'Cert'},{user_type,{1305,57},cert,[]}]]}, {type, {1306,49}, constraint, [{atom,{1306,49},is_subtype}, [{var,{1306,49},'DistPoints'}, {type, {1306,63}, list, [{type, {1306,65}, record, [{atom,{1306,66},'DistributionPoint'}]}]}]]}]]}]}}, {function, {1308,1}, pkix_dist_points,1, [{clause, {1308,1}, [{var,{1308,18},'OtpCert'}], [[{call, {1308,32}, {atom,{1308,32},is_binary}, [{var,{1308,42},'OtpCert'}]}]], [{call, {1309,5}, {atom,{1309,5},pkix_dist_points}, [{call, {1309,22}, {atom,{1309,22},pkix_decode_cert}, [{var,{1309,39},'OtpCert'},{atom,{1309,48},otp}]}]}]}, {clause, {1310,1}, [{var,{1310,18},'OtpCert'}], [], [{match, {1311,5}, {var,{1311,5},'Value'}, {call, {1311,13}, {remote, {1311,24}, {atom,{1311,13},pubkey_cert}, {atom,{1311,25},distribution_points}}, [{var,{1311,45},'OtpCert'}]}}, {call, {1312,5}, {remote,{1312,10},{atom,{1312,5},lists},{atom,{1312,11},foldl}}, [{'fun', {1312,17}, {clauses, [{clause, {1312,20}, [{var,{1312,21},'Point'},{var,{1312,28},'Acc0'}], [], [{match, {1313,4}, {var,{1313,4},'DistPoint'}, {call, {1313,16}, {remote, {1313,35}, {atom,{1313,16},pubkey_cert_records}, {atom,{1313,36},transform}}, [{var,{1313,46},'Point'},{atom,{1313,53},decode}]}}, {cons, {1314,4}, {var,{1314,5},'DistPoint'}, {var,{1314,17},'Acc0'}}]}]}}, {nil,{1316,3}}, {var,{1316,7},'Value'}]}]}]}, {attribute, {1328,2}, spec, {{pkix_match_dist_point,2}, [{type, {1328,28}, bounded_fun, [{type, {1328,28}, 'fun', [{type, {1328,28}, product, [{var,{1328,29},'CRL'},{var,{1328,34},'DistPoint'}]}, {type,{1329,36},boolean,[]}]}, [{type, {1330,45}, constraint, [{atom,{1330,45},is_subtype}, [{var,{1330,45},'CRL'}, {type, {1330,52}, union, [{user_type,{1330,52},der_encoded,[]}, {type, {1330,68}, record, [{atom,{1330,69},'CertificateList'}]}]}]]}, {type, {1331,45}, constraint, [{atom,{1331,45},is_subtype}, [{var,{1331,45},'DistPoint'}, {type, {1331,58}, record, [{atom,{1331,59},'DistributionPoint'}]}]]}]]}]}}, {function, {1333,1}, pkix_match_dist_point,2, [{clause, {1333,1}, [{var,{1333,23},'CRL'},{var,{1333,28},'DistPoint'}], [[{call,{1333,44},{atom,{1333,44},is_binary},[{var,{1333,54},'CRL'}]}]], [{call, {1334,5}, {atom,{1334,5},pkix_match_dist_point}, [{call, {1334,27}, {atom,{1334,27},der_decode}, [{atom,{1334,38},'CertificateList'},{var,{1334,57},'CRL'}]}, {var,{1334,63},'DistPoint'}]}]}, {clause, {1335,1}, [{record,{1335,23},'CertificateList',[]}, {record, {1336,9}, 'DistributionPoint', [{record_field, {1336,30}, {atom,{1336,30},distributionPoint}, {atom,{1336,50},asn1_NOVALUE}}]}], [], [{atom,{1338,5},true}]}, {clause, {1339,1}, [{record, {1339,23}, 'CertificateList', [{record_field, {1340,5}, {atom,{1340,5},tbsCertList}, {record, {1341,9}, 'TBSCertList', [{record_field, {1342,5}, {atom,{1342,5},crlExtensions}, {var,{1342,21},'Extensions'}}]}}]}, {record, {1343,9}, 'DistributionPoint', [{record_field, {1344,5}, {atom,{1344,5},distributionPoint}, {tuple, {1344,25}, [{atom,{1344,26},fullName},{var,{1344,36},'DPs'}]}}]}], [], [{'case', {1345,5}, {call, {1345,10}, {remote, {1345,21}, {atom,{1345,10},pubkey_cert}, {atom,{1345,22},select_extension}}, [{tuple, {1345,40}, [{integer,{1345,40},2}, {integer,{1345,40},5}, {integer,{1345,40},29}, {integer,{1345,40},28}]}, {var,{1345,74},'Extensions'}]}, [{clause, {1346,2}, [{atom,{1346,2},undefined}], [], [{atom,{1349,6},true}]}, {clause, {1350,2}, [{record, {1350,2}, 'Extension', [{record_field, {1350,15}, {atom,{1350,15},extnValue}, {var,{1350,27},'IDPValue'}}]}], [], [{match, {1353,6}, {var,{1353,6},'IDPEncoded'}, {call, {1353,19}, {atom,{1353,19},der_decode}, [{atom,{1353,30},'IssuingDistributionPoint'}, {var,{1353,58},'IDPValue'}]}}, {match, {1354,6}, {record, {1354,6}, 'IssuingDistributionPoint', [{record_field, {1354,34}, {atom,{1354,34},distributionPoint}, {tuple, {1354,54}, [{atom,{1354,55},fullName},{var,{1354,65},'IDPs'}]}}]}, {call, {1355,3}, {remote, {1355,22}, {atom,{1355,3},pubkey_cert_records}, {atom,{1355,23},transform}}, [{var,{1355,33},'IDPEncoded'},{atom,{1355,45},decode}]}}, {call, {1356,6}, {remote, {1356,16}, {atom,{1356,6},pubkey_crl}, {atom,{1356,17},match_one}}, [{var,{1356,27},'IDPs'},{var,{1356,33},'DPs'}]}]}]}]}]}, {attribute, {1363,2}, spec, {{pkix_sign,2}, [{type, {1363,16}, bounded_fun, [{type, {1363,16}, 'fun', [{type, {1363,16}, product, [{var,{1363,17},'Cert'},{var,{1363,23},'Key'}]}, {var,{1363,31},'Der'}]}, [{type, {1363,40}, constraint, [{atom,{1363,40},is_subtype}, [{var,{1363,40},'Cert'}, {type,{1363,48},record,[{atom,{1363,49},'OTPTBSCertificate'}]}]]}, {type, {1364,40}, constraint, [{atom,{1364,40},is_subtype}, [{var,{1364,40},'Key'},{user_type,{1364,47},private_key,[]}]]}, {type, {1365,40}, constraint, [{atom,{1365,40},is_subtype}, [{var,{1365,40},'Der'}, {user_type,{1365,47},der_encoded,[]}]]}]]}]}}, {function, {1367,1}, pkix_sign,2, [{clause, {1367,1}, [{match, {1367,11}, {record, {1367,11}, 'OTPTBSCertificate', [{record_field, {1367,32}, {atom,{1367,32},signature}, {match, {1368,8}, {record,{1368,8},'SignatureAlgorithm',[]}, {var,{1369,13},'SigAlg'}}}]}, {var,{1369,23},'TBSCert'}}, {var,{1369,32},'Key'}], [], [{match, {1370,5}, {var,{1370,5},'Msg'}, {call, {1370,11}, {atom,{1370,11},pkix_encode}, [{atom,{1370,23},'OTPTBSCertificate'}, {var,{1370,44},'TBSCert'}, {atom,{1370,53},otp}]}}, {match, {1371,5}, {tuple, {1371,5}, [{var,{1371,6},'DigestType'}, {var,{1371,18},'_'}, {var,{1371,21},'Opts'}]}, {call, {1371,29}, {remote, {1371,40}, {atom,{1371,29},pubkey_cert}, {atom,{1371,41},x509_pkix_sign_types}}, [{var,{1371,62},'SigAlg'}]}}, {match, {1372,5}, {var,{1372,5},'Signature'}, {call, {1372,17}, {atom,{1372,17},sign}, [{var,{1372,22},'Msg'}, {var,{1372,27},'DigestType'}, {call, {1372,39}, {atom,{1372,39},format_pkix_sign_key}, [{var,{1372,60},'Key'}]}, {var,{1372,66},'Opts'}]}}, {match, {1373,5}, {var,{1373,5},'Cert'}, {record, {1373,12}, 'OTPCertificate', [{record_field, {1373,30}, {atom,{1373,30},tbsCertificate}, {var,{1373,46},'TBSCert'}}, {record_field, {1374,9}, {atom,{1374,9},signatureAlgorithm}, {var,{1374,30},'SigAlg'}}, {record_field, {1375,9}, {atom,{1375,9},signature}, {var,{1375,21},'Signature'}}]}}, {call, {1377,5}, {atom,{1377,5},pkix_encode}, [{atom,{1377,17},'OTPCertificate'}, {var,{1377,35},'Cert'}, {atom,{1377,41},otp}]}]}]}, {attribute, {1383,2}, spec, {{pkix_verify,2}, [{type, {1383,18}, bounded_fun, [{type, {1383,18}, 'fun', [{type, {1383,18}, product, [{var,{1383,19},'Cert'},{var,{1383,25},'Key'}]}, {type,{1383,33},boolean,[]}]}, [{type, {1383,48}, constraint, [{atom,{1383,48},is_subtype}, [{var,{1383,48},'Cert'},{user_type,{1383,56},der_encoded,[]}]]}, {type, {1384,48}, constraint, [{atom,{1384,48},is_subtype}, [{var,{1384,48},'Key'}, {user_type,{1384,55},public_key,[]}]]}]]}]}}, {function, {1387,1}, pkix_verify,2, [{clause, {1387,1}, [{var,{1387,13},'DerCert'}, {match, {1387,22}, {tuple, {1387,22}, [{var,{1387,23},'Key'},{record,{1387,28},'Dss-Parms',[]}]}, {var,{1387,46},'DSAKey'}}], [[{call,{1388,8},{atom,{1388,8},is_binary},[{var,{1388,18},'DerCert'}]}, {call, {1388,28}, {atom,{1388,28},is_integer}, [{var,{1388,39},'Key'}]}]], [{match, {1389,5}, {tuple, {1389,5}, [{var,{1389,6},'DigestType'}, {var,{1389,18},'PlainText'}, {var,{1389,29},'Signature'}]}, {call, {1389,42}, {remote, {1389,53}, {atom,{1389,42},pubkey_cert}, {atom,{1389,54},verify_data}}, [{var,{1389,66},'DerCert'}]}}, {call, {1390,5}, {atom,{1390,5},verify}, [{var,{1390,12},'PlainText'}, {var,{1390,23},'DigestType'}, {var,{1390,35},'Signature'}, {var,{1390,46},'DSAKey'}]}]}, {clause, {1392,1}, [{var,{1392,13},'DerCert'}, {match, {1392,23}, {record,{1392,23},'RSAPublicKey',[]}, {var,{1392,43},'RSAKey'}}], [[{call, {1393,8}, {atom,{1393,8},is_binary}, [{var,{1393,18},'DerCert'}]}]], [{match, {1394,5}, {tuple, {1394,5}, [{var,{1394,6},'DigestType'}, {var,{1394,18},'PlainText'}, {var,{1394,29},'Signature'}]}, {call, {1394,42}, {remote, {1394,53}, {atom,{1394,42},pubkey_cert}, {atom,{1394,54},verify_data}}, [{var,{1394,66},'DerCert'}]}}, {call, {1395,5}, {atom,{1395,5},verify}, [{var,{1395,12},'PlainText'}, {var,{1395,23},'DigestType'}, {var,{1395,35},'Signature'}, {var,{1395,46},'RSAKey'}]}]}, {clause, {1397,1}, [{var,{1397,13},'DerCert'}, {tuple, {1397,23}, [{match, {1397,24}, {record,{1397,24},'RSAPublicKey',[]}, {var,{1397,44},'RSAKey'}}, {match, {1397,52}, {record,{1397,52},'RSASSA-PSS-params',[]}, {var,{1397,77},'Params'}}]}], [[{call, {1398,8}, {atom,{1398,8},is_binary}, [{var,{1398,18},'DerCert'}]}]], [{match, {1399,5}, {tuple, {1399,5}, [{var,{1399,6},'DigestType'}, {var,{1399,18},'PlainText'}, {var,{1399,29},'Signature'}]}, {call, {1399,42}, {remote, {1399,53}, {atom,{1399,42},pubkey_cert}, {atom,{1399,54},verify_data}}, [{var,{1399,66},'DerCert'}]}}, {call, {1400,5}, {atom,{1400,5},verify}, [{var,{1400,12},'PlainText'}, {var,{1400,23},'DigestType'}, {var,{1400,35},'Signature'}, {var,{1400,46},'RSAKey'}, {call, {1400,54}, {atom,{1400,54},rsa_opts}, [{var,{1400,63},'Params'}]}]}]}, {clause, {1402,1}, [{var,{1402,13},'DerCert'}, {match, {1402,22}, {var,{1402,22},'Key'}, {tuple, {1402,28}, [{record,{1402,29},'ECPoint',[]}, {tuple, {1402,43}, [{atom,{1402,44},namedCurve},{var,{1402,56},'Curve'}]}]}}], [[{op, {1403,93}, 'andalso', {op, {1402,93}, 'orelse', {op, {1402,77}, '==', {var,{1402,71},'Curve'}, {tuple, {1402,81}, [{integer,{1402,81},1}, {integer,{1402,81},3}, {integer,{1402,81},101}, {integer,{1402,81},112}]}}, {op, {1403,77}, '==', {var,{1403,71},'Curve'}, {tuple, {1403,81}, [{integer,{1403,81},1}, {integer,{1403,81},3}, {integer,{1403,81},101}, {integer,{1403,81},113}]}}}, {call, {1403,101}, {atom,{1403,101},is_binary}, [{var,{1403,111},'DerCert'}]}}]], [{'case', {1404,5}, {call, {1404,10}, {remote, {1404,21}, {atom,{1404,10},pubkey_cert}, {atom,{1404,22},verify_data}}, [{var,{1404,34},'DerCert'}]}, [{clause, {1405,9}, [{tuple, {1405,9}, [{match, {1405,10}, {atom,{1405,10},none}, {var,{1405,17},'DigestType'}}, {var,{1405,29},'PlainText'}, {var,{1405,40},'Signature'}]}], [], [{call, {1406,13}, {atom,{1406,13},verify}, [{var,{1406,20},'PlainText'}, {var,{1406,31},'DigestType'}, {var,{1406,43},'Signature'}, {var,{1406,54},'Key'}]}]}, {clause, {1407,9}, [{var,{1407,9},'_'}], [], [{atom,{1408,13},false}]}]}]}, {clause, {1410,1}, [{var,{1410,13},'DerCert'}, {match, {1410,22}, {var,{1410,22},'Key'}, {tuple, {1410,28}, [{record,{1410,29},'ECPoint',[]},{var,{1410,43},'_'}]}}], [[{call, {1410,52}, {atom,{1410,52},is_binary}, [{var,{1410,62},'DerCert'}]}]], [{'case', {1411,5}, {call, {1411,10}, {remote, {1411,21}, {atom,{1411,10},pubkey_cert}, {atom,{1411,22},verify_data}}, [{var,{1411,34},'DerCert'}]}, [{clause, {1412,9}, [{tuple, {1412,9}, [{atom,{1412,10},none},{var,{1412,16},'_'},{var,{1412,19},'_'}]}], [], [{atom,{1413,13},false}]}, {clause, {1414,9}, [{tuple, {1414,9}, [{var,{1414,10},'DigestType'}, {var,{1414,22},'PlainText'}, {var,{1414,33},'Signature'}]}], [], [{call, {1415,13}, {atom,{1415,13},verify}, [{var,{1415,20},'PlainText'}, {var,{1415,31},'DigestType'}, {var,{1415,43},'Signature'}, {var,{1415,54},'Key'}]}]}]}]}]}, {attribute, {1422,2}, spec, {{pkix_crl_verify,2}, [{type, {1422,22}, bounded_fun, [{type, {1422,22}, 'fun', [{type, {1422,22}, product, [{var,{1422,23},'CRL'},{var,{1422,28},'Cert'}]}, {type,{1422,37},boolean,[]}]}, [{type, {1423,46}, constraint, [{atom,{1423,46},is_subtype}, [{var,{1423,46},'CRL'}, {type, {1423,54}, union, [{user_type,{1423,54},der_encoded,[]}, {type, {1423,70}, record, [{atom,{1423,71},'CertificateList'}]}]}]]}, {type, {1424,46}, constraint, [{atom,{1424,46},is_subtype}, [{var,{1424,46},'Cert'},{user_type,{1424,54},cert,[]}]]}]]}]}}, {function, {1426,1}, pkix_crl_verify,2, [{clause, {1426,1}, [{var,{1426,17},'CRL'},{var,{1426,22},'Cert'}], [[{call,{1426,33},{atom,{1426,33},is_binary},[{var,{1426,43},'CRL'}]}]], [{call, {1427,5}, {atom,{1427,5},pkix_crl_verify}, [{call, {1427,21}, {atom,{1427,21},der_decode}, [{atom,{1427,32},'CertificateList'},{var,{1427,51},'CRL'}]}, {var,{1427,57},'Cert'}]}]}, {clause, {1428,1}, [{var,{1428,17},'CRL'},{var,{1428,22},'Cert'}], [[{call, {1428,33}, {atom,{1428,33},is_binary}, [{var,{1428,43},'Cert'}]}]], [{call, {1429,5}, {atom,{1429,5},pkix_crl_verify}, [{var,{1429,21},'CRL'}, {call, {1429,26}, {atom,{1429,26},pkix_decode_cert}, [{var,{1429,43},'Cert'},{atom,{1429,49},otp}]}]}]}, {clause, {1430,1}, [{match, {1430,17}, {record,{1430,17},'CertificateList',[]}, {var,{1430,40},'CRL'}}, {match, {1430,45}, {record,{1430,45},'OTPCertificate',[]}, {var,{1430,67},'Cert'}}], [], [{match, {1431,5}, {var,{1431,5},'TBSCert'}, {record_field, {1431,19}, {var,{1431,15},'Cert'}, 'OTPCertificate', {atom,{1431,37},tbsCertificate}}}, {match, {1432,5}, {var,{1432,5},'PublicKeyInfo'}, {record_field, {1432,28}, {var,{1432,21},'TBSCert'}, 'OTPTBSCertificate', {atom,{1432,49},subjectPublicKeyInfo}}}, {match, {1433,5}, {var,{1433,5},'PublicKey'}, {record_field, {1433,30}, {var,{1433,17},'PublicKeyInfo'}, 'OTPSubjectPublicKeyInfo', {atom,{1433,57},subjectPublicKey}}}, {match, {1434,5}, {var,{1434,5},'AlgInfo'}, {record_field, {1434,28}, {var,{1434,15},'PublicKeyInfo'}, 'OTPSubjectPublicKeyInfo', {atom,{1434,55},algorithm}}}, {match, {1435,5}, {var,{1435,5},'PublicKeyParams'}, {record_field, {1435,30}, {var,{1435,23},'AlgInfo'}, 'PublicKeyAlgorithm', {atom,{1435,52},parameters}}}, {call, {1436,5}, {remote, {1436,15}, {atom,{1436,5},pubkey_crl}, {atom,{1436,16},verify_crl_signature}}, [{var,{1436,37},'CRL'}, {call, {1437,9}, {atom,{1437,9},der_encode}, [{atom,{1437,20},'CertificateList'},{var,{1437,39},'CRL'}]}, {var,{1438,9},'PublicKey'}, {var,{1438,20},'PublicKeyParams'}]}]}]}, {attribute, {1444,2}, spec, {{pkix_is_issuer,2}, [{type, {1444,21}, bounded_fun, [{type, {1444,21}, 'fun', [{type, {1444,21}, product, [{var,{1444,22},'CertorCRL'},{var,{1444,33},'IssuerCert'}]}, {type,{1445,11},boolean,[]}]}, [{type, {1445,26}, constraint, [{atom,{1445,26},is_subtype}, [{var,{1445,26},'CertorCRL'}, {type, {1445,39}, union, [{user_type,{1445,39},cert,[]}, {type, {1445,48}, record, [{atom,{1445,49},'CertificateList'}]}]}]]}, {type, {1446,26}, constraint, [{atom,{1446,26},is_subtype}, [{var,{1446,26},'IssuerCert'}, {user_type,{1446,40},cert,[]}]]}]]}]}}, {function, {1448,1}, pkix_is_issuer,2, [{clause, {1448,1}, [{var,{1448,16},'Cert'},{var,{1448,22},'IssuerCert'}], [[{call, {1448,40}, {atom,{1448,40},is_binary}, [{var,{1448,50},'Cert'}]}]], [{match, {1449,5}, {var,{1449,5},'OtpCert'}, {call, {1449,15}, {atom,{1449,15},pkix_decode_cert}, [{var,{1449,32},'Cert'},{atom,{1449,38},otp}]}}, {call, {1450,5}, {atom,{1450,5},pkix_is_issuer}, [{var,{1450,20},'OtpCert'},{var,{1450,29},'IssuerCert'}]}]}, {clause, {1451,1}, [{var,{1451,16},'Cert'},{var,{1451,22},'IssuerCert'}], [[{call, {1451,39}, {atom,{1451,39},is_binary}, [{var,{1451,49},'IssuerCert'}]}]], [{match, {1452,5}, {var,{1452,5},'OtpIssuerCert'}, {call, {1452,21}, {atom,{1452,21},pkix_decode_cert}, [{var,{1452,38},'IssuerCert'},{atom,{1452,50},otp}]}}, {call, {1453,5}, {atom,{1453,5},pkix_is_issuer}, [{var,{1453,20},'Cert'},{var,{1453,26},'OtpIssuerCert'}]}]}, {clause, {1454,1}, [{record, {1454,16}, 'OTPCertificate', [{record_field, {1454,34}, {atom,{1454,34},tbsCertificate}, {var,{1454,51},'TBSCert'}}]}, {record, {1455,9}, 'OTPCertificate', [{record_field, {1455,27}, {atom,{1455,27},tbsCertificate}, {var,{1455,44},'Candidate'}}]}], [], [{call, {1456,5}, {remote, {1456,16}, {atom,{1456,5},pubkey_cert}, {atom,{1456,17},is_issuer}}, [{record_field, {1456,34}, {var,{1456,27},'TBSCert'}, 'OTPTBSCertificate', {atom,{1456,55},issuer}}, {record_field, {1457,15}, {var,{1457,6},'Candidate'}, 'OTPTBSCertificate', {atom,{1457,36},subject}}]}]}, {clause, {1458,1}, [{record, {1458,16}, 'CertificateList', [{record_field, {1458,35}, {atom,{1458,35},tbsCertList}, {var,{1458,49},'TBSCRL'}}]}, {record, {1459,9}, 'OTPCertificate', [{record_field, {1459,27}, {atom,{1459,27},tbsCertificate}, {var,{1459,44},'Candidate'}}]}], [], [{call, {1460,5}, {remote, {1460,16}, {atom,{1460,5},pubkey_cert}, {atom,{1460,17},is_issuer}}, [{record_field, {1460,36}, {var,{1460,27},'Candidate'}, 'OTPTBSCertificate', {atom,{1460,57},subject}}, {call, {1461,6}, {remote, {1461,25}, {atom,{1461,6},pubkey_cert_records}, {atom,{1461,26},transform}}, [{record_field, {1461,42}, {var,{1461,36},'TBSCRL'}, 'TBSCertList', {atom,{1461,57},issuer}}, {atom,{1461,65},decode}]}]}]}]}, {attribute, {1467,2}, spec, {{pkix_is_self_signed,1}, [{type, {1467,26}, bounded_fun, [{type, {1467,26}, 'fun', [{type,{1467,26},product,[{var,{1467,27},'Cert'}]}, {type,{1467,36},boolean,[]}]}, [{type, {1467,51}, constraint, [{atom,{1467,51},is_subtype}, [{var,{1467,51},'Cert'},{user_type,{1467,57},cert,[]}]]}]]}]}}, {function, {1469,1}, pkix_is_self_signed,1, [{clause, {1469,1}, [{match, {1469,21}, {record,{1469,21},'OTPCertificate',[]}, {var,{1469,43},'OTPCert'}}], [], [{call, {1470,5}, {remote, {1470,16}, {atom,{1470,5},pubkey_cert}, {atom,{1470,17},is_self_signed}}, [{var,{1470,32},'OTPCert'}]}]}, {clause, {1471,1}, [{var,{1471,21},'Cert'}], [[{call, {1471,32}, {atom,{1471,32},is_binary}, [{var,{1471,42},'Cert'}]}]], [{match, {1472,5}, {var,{1472,5},'OtpCert'}, {call, {1472,15}, {atom,{1472,15},pkix_decode_cert}, [{var,{1472,32},'Cert'},{atom,{1472,38},otp}]}}, {call, {1473,5}, {atom,{1473,5},pkix_is_self_signed}, [{var,{1473,25},'OtpCert'}]}]}]}, {attribute, {1479,2}, spec, {{pkix_is_fixed_dh_cert,1}, [{type, {1479,28}, bounded_fun, [{type, {1479,28}, 'fun', [{type,{1479,28},product,[{var,{1479,29},'Cert'}]}, {type,{1479,38},boolean,[]}]}, [{type, {1479,53}, constraint, [{atom,{1479,53},is_subtype}, [{var,{1479,53},'Cert'},{user_type,{1479,59},cert,[]}]]}]]}]}}, {function, {1481,1}, pkix_is_fixed_dh_cert,1, [{clause, {1481,1}, [{match, {1481,23}, {record,{1481,23},'OTPCertificate',[]}, {var,{1481,45},'OTPCert'}}], [], [{call, {1482,5}, {remote, {1482,16}, {atom,{1482,5},pubkey_cert}, {atom,{1482,17},is_fixed_dh_cert}}, [{var,{1482,34},'OTPCert'}]}]}, {clause, {1483,1}, [{var,{1483,23},'Cert'}], [[{call, {1483,34}, {atom,{1483,34},is_binary}, [{var,{1483,44},'Cert'}]}]], [{match, {1484,5}, {var,{1484,5},'OtpCert'}, {call, {1484,15}, {atom,{1484,15},pkix_decode_cert}, [{var,{1484,32},'Cert'},{atom,{1484,38},otp}]}}, {call, {1485,5}, {atom,{1485,5},pkix_is_fixed_dh_cert}, [{var,{1485,27},'OtpCert'}]}]}]}, {attribute, {1491,2}, spec, {{pkix_issuer_id,2}, [{type, {1491,21}, bounded_fun, [{type, {1491,21}, 'fun', [{type, {1491,21}, product, [{var,{1491,22},'Cert'},{var,{1491,28},'IssuedBy'}]}, {type, {1492,8}, union, [{type, {1492,8}, tuple, [{atom,{1492,9},ok}, {ann_type, {1492,13}, [{var,{1492,13},'ID'},{user_type,{1492,17},cert_id,[]}]}]}, {type, {1492,30}, tuple, [{atom,{1492,31},error},{var,{1492,38},'Reason'}]}]}]}, [{type, {1493,38}, constraint, [{atom,{1493,38},is_subtype}, [{var,{1493,38},'Cert'},{user_type,{1493,44},cert,[]}]]}, {type, {1494,38}, constraint, [{atom,{1494,38},is_subtype}, [{var,{1494,38},'IssuedBy'}, {type, {1494,50}, union, [{atom,{1494,50},self},{atom,{1494,57},other}]}]]}, {type, {1495,38}, constraint, [{atom,{1495,38},is_subtype}, [{var,{1495,38},'Reason'},{type,{1495,48},term,[]}]]}]]}]}}, {function, {1498,1}, pkix_issuer_id,2, [{clause, {1498,1}, [{match, {1498,16}, {record,{1498,16},'OTPCertificate',[]}, {var,{1498,38},'OtpCert'}}, {var,{1498,47},'Signed'}], [[{op, {1498,77}, 'or', {op,{1498,68},'==',{var,{1498,61},'Signed'},{atom,{1498,71},self}}, {op, {1499,19}, '==', {var,{1499,12},'Signed'}, {atom,{1499,22},other}}}]], [{call, {1500,5}, {remote, {1500,16}, {atom,{1500,5},pubkey_cert}, {atom,{1500,17},issuer_id}}, [{var,{1500,27},'OtpCert'},{var,{1500,36},'Signed'}]}]}, {clause, {1501,1}, [{var,{1501,16},'Cert'},{var,{1501,22},'Signed'}], [[{call, {1501,35}, {atom,{1501,35},is_binary}, [{var,{1501,45},'Cert'}]}]], [{match, {1502,5}, {var,{1502,5},'OtpCert'}, {call, {1502,15}, {atom,{1502,15},pkix_decode_cert}, [{var,{1502,32},'Cert'},{atom,{1502,38},otp}]}}, {call, {1503,5}, {atom,{1503,5},pkix_issuer_id}, [{var,{1503,20},'OtpCert'},{var,{1503,29},'Signed'}]}]}]}, {attribute, {1509,2}, spec, {{pkix_subject_id,1}, [{type, {1509,22}, bounded_fun, [{type, {1509,22}, 'fun', [{type,{1509,22},product,[{var,{1509,23},'Cert'}]}, {var,{1509,32},'ID'}]}, [{type, {1510,20}, constraint, [{atom,{1510,20},is_subtype}, [{var,{1510,20},'Cert'},{user_type,{1510,26},cert,[]}]]}, {type, {1511,20}, constraint, [{atom,{1511,20},is_subtype}, [{var,{1511,20},'ID'},{user_type,{1511,24},cert_id,[]}]]}]]}]}}, {function, {1514,1}, pkix_subject_id,1, [{clause, {1514,1}, [{match, {1514,17}, {record,{1514,17},'OTPCertificate',[]}, {var,{1514,39},'OtpCert'}}], [], [{call, {1515,5}, {remote, {1515,16}, {atom,{1515,5},pubkey_cert}, {atom,{1515,17},subject_id}}, [{var,{1515,28},'OtpCert'}]}]}, {clause, {1516,1}, [{var,{1516,17},'Cert'}], [[{call, {1516,28}, {atom,{1516,28},is_binary}, [{var,{1516,38},'Cert'}]}]], [{match, {1517,5}, {var,{1517,5},'OtpCert'}, {call, {1517,15}, {atom,{1517,15},pkix_decode_cert}, [{var,{1517,32},'Cert'},{atom,{1517,38},otp}]}}, {call, {1518,5}, {atom,{1518,5},pkix_subject_id}, [{var,{1518,21},'OtpCert'}]}]}]}, {attribute, {1524,2}, spec, {{pkix_crl_issuer,1}, [{type, {1524,22}, bounded_fun, [{type, {1524,22}, 'fun', [{type,{1524,22},product,[{var,{1524,23},'CRL'}]}, {var,{1524,31},'Issuer'}]}, [{type, {1525,21}, constraint, [{atom,{1525,21},is_subtype}, [{var,{1525,21},'CRL'}, {type, {1525,28}, union, [{user_type,{1525,28},der_encoded,[]}, {type, {1525,44}, record, [{atom,{1525,45},'CertificateList'}]}]}]]}, {type, {1526,21}, constraint, [{atom,{1526,21},is_subtype}, [{var,{1526,21},'Issuer'}, {user_type,{1526,31},issuer_name,[]}]]}]]}]}}, {function, {1528,1}, pkix_crl_issuer,1, [{clause, {1528,1}, [{var,{1528,17},'CRL'}], [[{call,{1528,27},{atom,{1528,27},is_binary},[{var,{1528,37},'CRL'}]}]], [{call, {1529,5}, {atom,{1529,5},pkix_crl_issuer}, [{call, {1529,21}, {atom,{1529,21},der_decode}, [{atom,{1529,32},'CertificateList'},{var,{1529,51},'CRL'}]}]}]}, {clause, {1530,1}, [{match, {1530,17}, {record,{1530,17},'CertificateList',[]}, {var,{1530,40},'CRL'}}], [], [{call, {1531,5}, {remote, {1531,24}, {atom,{1531,5},pubkey_cert_records}, {atom,{1531,25},transform}}, [{record_field, {1532,40}, {record_field, {1532,10}, {var,{1532,7},'CRL'}, 'CertificateList', {atom,{1532,29},tbsCertList}}, 'TBSCertList', {atom,{1532,55},issuer}}, {atom,{1532,63},decode}]}]}]}, {attribute, {1541,2}, spec, {{pkix_normalize_name,1}, [{type, {1541,26}, bounded_fun, [{type, {1541,26}, 'fun', [{type,{1541,26},product,[{var,{1541,27},'Issuer'}]}, {var,{1541,38},'Normalized'}]}, [{type, {1542,47}, constraint, [{atom,{1542,47},is_subtype}, [{var,{1542,47},'Issuer'}, {type, {1542,57}, union, [{user_type,{1542,57},issuer_name,[]}, {user_type,{1542,73},der_encoded,[]}]}]]}, {type, {1543,47}, constraint, [{atom,{1543,47},is_subtype}, [{var,{1543,47},'Normalized'}, {user_type,{1543,61},issuer_name,[]}]]}]]}]}}, {function, {1546,1}, pkix_normalize_name,1, [{clause, {1546,1}, [{var,{1546,21},'Issuer'}], [[{call, {1546,34}, {atom,{1546,34},is_binary}, [{var,{1546,44},'Issuer'}]}]], [{match, {1547,5}, {var,{1547,5},'PlainGenName'}, {call, {1547,20}, {atom,{1547,20},der_decode}, [{atom,{1547,31},'Name'},{var,{1547,39},'Issuer'}]}}, {match, {1548,5}, {var,{1548,5},'GenName'}, {call, {1548,15}, {remote, {1548,34}, {atom,{1548,15},pubkey_cert_records}, {atom,{1548,35},transform}}, [{var,{1548,45},'PlainGenName'},{atom,{1548,59},decode}]}}, {call, {1549,5}, {atom,{1549,5},pkix_normalize_name}, [{var,{1549,25},'GenName'}]}]}, {clause, {1550,1}, [{var,{1550,21},'Issuer'}], [], [{call, {1551,5}, {remote, {1551,16}, {atom,{1551,5},pubkey_cert}, {atom,{1551,17},normalize_general_name}}, [{var,{1551,40},'Issuer'}]}]}]}, {attribute, {1648,2}, spec, {{pkix_path_validation,3}, [{type, {1648,27}, bounded_fun, [{type, {1648,27}, 'fun', [{type, {1648,27}, product, [{var,{1648,28},'Cert'}, {var,{1648,34},'CertChain'}, {var,{1648,45},'Options'}]}, {type, {1649,11}, union, [{type, {1649,11}, tuple, [{atom,{1649,12},ok}, {type, {1649,16}, tuple, [{var,{1649,17},'PublicKeyInfo'}, {var,{1649,32},'ConstrainedPolicyNodes'}]}]}, {type, {1650,11}, tuple, [{atom,{1650,12},error}, {type, {1650,19}, tuple, [{atom,{1650,20},bad_cert}, {ann_type, {1650,30}, [{var,{1650,30},'Reason'}, {user_type,{1650,40},bad_cert_reason,[]}]}]}]}]}]}, [{type, {1652,7}, constraint, [{atom,{1652,7},is_subtype}, [{var,{1652,7},'Cert'}, {type, {1652,15}, union, [{user_type,{1652,15},cert,[]},{type,{1652,24},atom,[]}]}]]}, {type, {1653,7}, constraint, [{atom,{1653,7},is_subtype}, [{var,{1653,7},'CertChain'}, {type, {1653,20}, list, [{type, {1653,21}, union, [{user_type,{1653,21},cert,[]}, {user_type,{1653,30},combined_cert,[]}]}]}]]}, {type, {1654,7}, constraint, [{atom,{1654,7},is_subtype}, [{var,{1654,7},'Options'}, {type, {1654,19}, list, [{type, {1654,20}, union, [{type, {1654,20}, tuple, [{atom,{1654,21},max_path_length}, {type,{1654,38},integer,[]}]}, {type, {1654,51}, tuple, [{atom,{1654,52},verify_fun}, {type, {1654,64}, tuple, [{type,{1654,65},'fun',[]}, {type,{1654,72},term,[]}]}]}]}]}]]}, {type, {1655,7}, constraint, [{atom,{1655,7},is_subtype}, [{var,{1655,7},'PublicKeyInfo'}, {user_type,{1655,24},public_key_info,[]}]]}, {type, {1656,7}, constraint, [{atom,{1656,7},is_subtype}, [{var,{1656,7},'ConstrainedPolicyNodes'}, {type, {1656,33}, list, [{user_type,{1656,34},policy_node,[]}]}]]}]]}]}}, {function, {1659,1}, pkix_path_validation,3, [{clause, {1659,1}, [{var,{1659,22},'TrustedCert'}, {var,{1659,35},'CertChain'}, {var,{1659,46},'Options'}], [[{call, {1660,8}, {atom,{1660,8},is_binary}, [{var,{1660,18},'TrustedCert'}]}]], [{match, {1662,5}, {var,{1662,5},'OtpCert'}, {call, {1662,15}, {atom,{1662,15},pkix_decode_cert}, [{var,{1662,32},'TrustedCert'},{atom,{1662,45},otp}]}}, {call, {1663,5}, {atom,{1663,5},pkix_path_validation}, [{var,{1663,26},'OtpCert'}, {var,{1663,35},'CertChain'}, {var,{1663,46},'Options'}]}]}, {clause, {1664,1}, [{match, {1664,22}, {record,{1664,22},'OTPCertificate',[]}, {var,{1664,44},'TrustedCert'}}, {var,{1664,57},'CertChain'}, {var,{1664,68},'Options'}], [[{call,{1665,8},{atom,{1665,8},is_list},[{var,{1665,16},'CertChain'}]}, {call, {1665,28}, {atom,{1665,28},is_list}, [{var,{1665,36},'Options'}]}]], [{match, {1666,5}, {var,{1666,5},'MaxPathDefault'}, {call, {1666,22}, {atom,{1666,22},length}, [{var,{1666,29},'CertChain'}]}}, {match, {1667,5}, {tuple, {1667,5}, [{var,{1667,6},'VerifyFun'},{var,{1667,17},'UserState0'}]}, {call, {1668,2}, {remote, {1668,11}, {atom,{1668,2},proplists}, {atom,{1668,12},get_value}}, [{atom,{1668,22},verify_fun}, {var,{1668,34},'Options'}, {tuple, {1668,44}, [{'fun', {1668,44}, {clauses, [{clause, {1668,44}, [{var,{1668,44},'_'}, {match, {1668,44}, {tuple, {1668,44}, [{atom,{1668,44},bad_cert},{var,{1668,44},'_'}]}, {var,{1668,44},'Reason'}}, {var,{1668,44},'_'}], [], [{tuple, {1668,44}, [{atom,{1668,44},fail},{var,{1668,44},'Reason'}]}]}, {clause, {1668,44}, [{var,{1668,44},'_'}, {tuple, {1668,44}, [{atom,{1668,44},extension},{var,{1668,44},'_'}]}, {var,{1668,44},'UserState'}], [], [{tuple, {1668,44}, [{atom,{1668,44},unknown},{var,{1668,44},'UserState'}]}]}, {clause, {1668,44}, [{var,{1668,44},'_'}, {atom,{1668,44},valid}, {var,{1668,44},'UserState'}], [], [{tuple, {1668,44}, [{atom,{1668,44},valid},{var,{1668,44},'UserState'}]}]}, {clause, {1668,44}, [{var,{1668,44},'_'}, {atom,{1668,44},valid_peer}, {var,{1668,44},'UserState'}], [], [{tuple, {1668,44}, [{atom,{1668,44},valid},{var,{1668,44},'UserState'}]}]}]}}, {nil,{1668,44}}]}]}}, {'try', {1669,5}, [{call, {1669,9}, {remote, {1669,20}, {atom,{1669,9},pubkey_cert}, {atom,{1669,21},validate_time}}, [{var,{1669,35},'TrustedCert'}, {var,{1669,48},'UserState0'}, {var,{1669,60},'VerifyFun'}]}], [{clause, {1670,9}, [{var,{1670,9},'UserState1'}], [], [{match, {1671,13}, {var,{1671,13},'ValidationState'}, {call, {1671,31}, {remote, {1671,42}, {atom,{1671,31},pubkey_cert}, {atom,{1671,43},init_validation_state}}, [{var,{1671,65},'TrustedCert'}, {var,{1672,65},'MaxPathDefault'}, {cons, {1673,65}, {tuple, {1673,66}, [{atom,{1673,67},verify_fun}, {tuple, {1673,79}, [{var,{1673,80},'VerifyFun'}, {var,{1673,91},'UserState1'}]}]}, {call, {1674,66}, {remote, {1674,75}, {atom,{1674,66},proplists}, {atom,{1674,76},delete}}, [{atom,{1674,83},verify_fun},{var,{1674,95},'Options'}]}}]}}, {'case', {1675,13}, {call, {1675,18}, {atom,{1675,18},exists_duplicate_cert}, [{var,{1675,40},'CertChain'}]}, [{clause, {1676,17}, [{atom,{1676,17},true}], [], [{tuple, {1677,21}, [{atom,{1677,22},error}, {tuple, {1677,29}, [{atom,{1677,30},bad_cert}, {atom,{1677,40},duplicate_cert_in_path}]}]}]}, {clause, {1678,17}, [{atom,{1678,17},false}], [], [{call, {1679,21}, {atom,{1679,21},path_validation}, [{var,{1679,37},'CertChain'}, {var,{1679,48},'ValidationState'}]}]}]}]}], [{clause, {1682,9}, [{tuple, {1682,9}, [{atom,{1682,9},throw}, {match, {1682,15}, {tuple, {1682,15}, [{atom,{1682,16},bad_cert},{var,{1682,26},'_'}]}, {var,{1682,31},'Result'}}, {var,{1682,31},'_'}]}], [], [{tuple, {1683,13}, [{atom,{1683,14},error},{var,{1683,21},'Result'}]}]}], []}]}, {clause, {1685,1}, [{var,{1685,22},'PathErr'}, {cons,{1685,31},{var,{1685,32},'Cert'},{var,{1685,39},'Chain'}}, {var,{1685,47},'Options0'}], [[{call, {1685,62}, {atom,{1685,62},is_atom}, [{var,{1685,70},'PathErr'}]}]], [{match, {1686,5}, {tuple, {1686,5}, [{var,{1686,6},'VerifyFun'},{var,{1686,17},'Userstat0'}]}, {call, {1687,2}, {remote, {1687,11}, {atom,{1687,2},proplists}, {atom,{1687,12},get_value}}, [{atom,{1687,22},verify_fun}, {var,{1687,34},'Options0'}, {tuple, {1687,45}, [{'fun', {1687,45}, {clauses, [{clause, {1687,45}, [{var,{1687,45},'_'}, {match, {1687,45}, {tuple, {1687,45}, [{atom,{1687,45},bad_cert},{var,{1687,45},'_'}]}, {var,{1687,45},'Reason'}}, {var,{1687,45},'_'}], [], [{tuple, {1687,45}, [{atom,{1687,45},fail},{var,{1687,45},'Reason'}]}]}, {clause, {1687,45}, [{var,{1687,45},'_'}, {tuple, {1687,45}, [{atom,{1687,45},extension},{var,{1687,45},'_'}]}, {var,{1687,45},'UserState'}], [], [{tuple, {1687,45}, [{atom,{1687,45},unknown},{var,{1687,45},'UserState'}]}]}, {clause, {1687,45}, [{var,{1687,45},'_'}, {atom,{1687,45},valid}, {var,{1687,45},'UserState'}], [], [{tuple, {1687,45}, [{atom,{1687,45},valid},{var,{1687,45},'UserState'}]}]}, {clause, {1687,45}, [{var,{1687,45},'_'}, {atom,{1687,45},valid_peer}, {var,{1687,45},'UserState'}], [], [{tuple, {1687,45}, [{atom,{1687,45},valid},{var,{1687,45},'UserState'}]}]}]}}, {nil,{1687,45}}]}]}}, {match, {1688,5}, {var,{1688,5},'Otpcert'}, {call,{1688,15},{atom,{1688,15},otp_cert},[{var,{1688,24},'Cert'}]}}, {match, {1689,5}, {var,{1689,5},'Reason'}, {tuple, {1689,14}, [{atom,{1689,15},bad_cert},{var,{1689,25},'PathErr'}]}}, {'try', {1690,5}, [{call, {1690,9}, {var,{1690,9},'VerifyFun'}, [{var,{1690,19},'Otpcert'}, {var,{1690,28},'Reason'}, {var,{1690,36},'Userstat0'}]}], [{clause, {1691,2}, [{tuple, {1691,2}, [{atom,{1691,3},valid},{var,{1691,10},'Userstate'}]}], [], [{match, {1692,6}, {var,{1692,6},'Options'}, {call, {1692,16}, {remote, {1692,25}, {atom,{1692,16},proplists}, {atom,{1692,26},delete}}, [{atom,{1692,33},verify_fun},{var,{1692,45},'Options0'}]}}, {call, {1693,6}, {atom,{1693,6},pkix_path_validation}, [{var,{1693,27},'Otpcert'}, {var,{1693,36},'Chain'}, {cons, {1693,43}, {tuple, {1693,44}, [{atom,{1693,45},verify_fun}, {tuple, {1694,10}, [{var,{1694,11},'VerifyFun'},{var,{1694,22},'Userstate'}]}]}, {var,{1694,35},'Options'}}]}]}, {clause, {1695,2}, [{tuple, {1695,2}, [{atom,{1695,3},fail},{var,{1695,9},'UserReason'}]}], [], [{tuple, {1696,6}, [{atom,{1696,7},error},{var,{1696,14},'UserReason'}]}]}], [{clause, {1698,2}, [{tuple, {1698,2}, [{var,{1698,2},'_'},{var,{1698,4},'_'},{var,{1698,4},'_'}]}], [], [{tuple, {1699,6}, [{atom,{1699,7},error},{var,{1699,14},'Reason'}]}]}], []}]}]}, {attribute, {1744,2}, spec, {{pkix_crls_validate,3}, [{type, {1744,25}, bounded_fun, [{type, {1744,25}, 'fun', [{type, {1744,25}, product, [{var,{1744,26},'OTPcertificate'}, {var,{1744,42},'DPandCRLs'}, {var,{1744,53},'Options'}]}, {var,{1745,33},'CRLstatus'}]}, [{type, {1745,48}, constraint, [{atom,{1745,48},is_subtype}, [{var,{1745,48},'OTPcertificate'}, {type,{1745,66},record,[{atom,{1745,67},'OTPCertificate'}]}]]}, {type, {1746,48}, constraint, [{atom,{1746,48},is_subtype}, [{var,{1746,48},'DPandCRLs'}, {type,{1746,61},list,[{var,{1746,62},'DPandCRL'}]}]]}, {type, {1747,48}, constraint, [{atom,{1747,48},is_subtype}, [{var,{1747,48},'DPandCRL'}, {type, {1747,61}, tuple, [{var,{1747,62},'DP'}, {type, {1747,66}, tuple, [{var,{1747,67},'DerCRL'},{var,{1747,75},'CRL'}]}]}]]}, {type, {1748,48}, constraint, [{atom,{1748,48},is_subtype}, [{var,{1748,48},'DP'}, {type,{1748,54},record,[{atom,{1748,55},'DistributionPoint'}]}]]}, {type, {1749,48}, constraint, [{atom,{1749,48},is_subtype}, [{var,{1749,48},'DerCRL'},{user_type,{1749,58},der_encoded,[]}]]}, {type, {1750,48}, constraint, [{atom,{1750,48},is_subtype}, [{var,{1750,48},'CRL'}, {type,{1750,55},record,[{atom,{1750,56},'CertificateList'}]}]]}, {type, {1751,48}, constraint, [{atom,{1751,48},is_subtype}, [{var,{1751,48},'Options'}, {type, {1751,59}, list, [{type, {1751,60}, tuple, [{type,{1751,61},atom,[]},{type,{1751,68},term,[]}]}]}]]}, {type, {1752,48}, constraint, [{atom,{1752,48},is_subtype}, [{var,{1752,48},'CRLstatus'}, {type, {1752,61}, union, [{atom,{1752,61},valid}, {type, {1753,61}, tuple, [{atom,{1753,62},bad_cert}, {var,{1753,72},'BadCertReason'}]}]}]]}, {type, {1754,48}, constraint, [{atom,{1754,48},is_subtype}, [{var,{1754,48},'BadCertReason'}, {type, {1754,65}, union, [{atom,{1754,65},revocation_status_undetermined}, {type, {1755,65}, tuple, [{atom,{1755,66},revocation_status_undetermined}, {ann_type, {1755,98}, [{var,{1755,98},'Reason'},{type,{1755,106},term,[]}]}]}, {type, {1756,65}, tuple, [{atom,{1756,66},revoked}, {user_type,{1756,75},crl_reason,[]}]}]}]]}]]}]}}, {function, {1760,1}, pkix_crls_validate,3, [{clause, {1760,1}, [{var,{1760,20},'OtpCert'}, {match, {1760,29}, {cons, {1760,29}, {tuple, {1760,30}, [{var,{1760,31},'_'},{var,{1760,33},'_'},{var,{1760,35},'_'}]}, {var,{1760,39},'_'}}, {var,{1760,44},'DPAndCRLs'}}, {var,{1760,55},'Options'}], [], [{call, {1761,5}, {atom,{1761,5},pkix_crls_validate}, [{var,{1761,24},'OtpCert'}, {var,{1761,33},'DPAndCRLs'}, {var,{1761,44},'DPAndCRLs'}, {var,{1762,10},'Options'}, {call, {1762,19}, {remote, {1762,29}, {atom,{1762,19},pubkey_crl}, {atom,{1762,30},init_revokation_state}}, []}]}]}, {clause, {1764,1}, [{var,{1764,20},'OtpCert'}, {var,{1764,29},'DPAndCRLs0'}, {var,{1764,41},'Options'}], [], [{match, {1765,5}, {var,{1765,5},'CallBack'}, {call, {1765,16}, {remote, {1765,25}, {atom,{1765,16},proplists}, {atom,{1765,26},get_value}}, [{atom,{1765,36},update_crl}, {var,{1765,48},'Options'}, {'fun', {1765,57}, {clauses, [{clause, {1765,60}, [{var,{1765,61},'_'},{var,{1765,64},'CurrCRL'}], [], [{var,{1766,15},'CurrCRL'}]}]}}]}}, {match, {1768,5}, {var,{1768,5},'DPAndCRLs'}, {call, {1768,17}, {atom,{1768,17},sort_dp_crls}, [{var,{1768,30},'DPAndCRLs0'},{var,{1768,42},'CallBack'}]}}, {call, {1769,5}, {atom,{1769,5},pkix_crls_validate}, [{var,{1769,24},'OtpCert'}, {var,{1769,33},'DPAndCRLs'}, {var,{1769,44},'DPAndCRLs'}, {var,{1770,10},'Options'}, {call, {1770,19}, {remote, {1770,29}, {atom,{1770,19},pubkey_crl}, {atom,{1770,30},init_revokation_state}}, []}]}]}]}, {attribute, {1778,2}, spec, {{pkix_verify_hostname,2}, [{type, {1778,27}, bounded_fun, [{type, {1778,27}, 'fun', [{type, {1778,27}, product, [{var,{1778,28},'Cert'},{var,{1778,34},'ReferenceIDs'}]}, {type,{1778,51},boolean,[]}]}, [{type, {1779,60}, constraint, [{atom,{1779,60},is_subtype}, [{var,{1779,60},'Cert'},{user_type,{1779,68},cert,[]}]]}, {type, {1780,60}, constraint, [{atom,{1780,60},is_subtype}, [{var,{1780,60},'ReferenceIDs'}, {type, {1780,76}, list, [{type, {1780,77}, union, [{type, {1780,77}, tuple, [{type, {1780,78}, union, [{atom,{1780,78},uri_id}, {atom,{1780,87},dns_id}, {atom,{1780,96},ip}, {atom,{1780,101},srv_id}, {type,{1780,110},atom,[]}, {user_type,{1780,119},oid,[]}]}, {type,{1780,127},string,[]}]}, {type, {1781,78}, tuple, [{atom,{1781,79},ip}, {type, {1781,83}, union, [{remote_type, {1781,83}, [{atom,{1781,83},inet},{atom,{1781,88},ip_address},[]]}, {type,{1781,103},string,[]}]}]}]}]}]]}]]}]}}, {function, {1782,1}, pkix_verify_hostname,2, [{clause, {1782,1}, [{var,{1782,22},'Cert'},{var,{1782,28},'ReferenceIDs'}], [], [{call, {1783,5}, {atom,{1783,5},pkix_verify_hostname}, [{var,{1783,26},'Cert'}, {var,{1783,32},'ReferenceIDs'}, {nil,{1783,46}}]}]}]}, {attribute, {1858,2}, spec, {{pkix_verify_hostname,3}, [{type, {1858,27}, bounded_fun, [{type, {1858,27}, 'fun', [{type, {1858,27}, product, [{var,{1858,28},'Cert'}, {var,{1858,34},'ReferenceIDs'}, {var,{1858,48},'Options'}]}, {type,{1859,35},boolean,[]}]}, [{type, {1860,44}, constraint, [{atom,{1860,44},is_subtype}, [{var,{1860,44},'Cert'},{user_type,{1860,52},cert,[]}]]}, {type, {1861,44}, constraint, [{atom,{1861,44},is_subtype}, [{var,{1861,44},'ReferenceIDs'}, {type, {1861,60}, list, [{type, {1861,61}, union, [{type, {1861,61}, tuple, [{type, {1861,62}, union, [{atom,{1861,62},uri_id}, {atom,{1861,71},dns_id}, {atom,{1861,80},ip}, {atom,{1861,85},srv_id}, {type,{1861,94},atom,[]}, {user_type,{1861,103},oid,[]}]}, {type,{1861,111},string,[]}]}, {type, {1862,78}, tuple, [{atom,{1862,79},ip}, {type, {1862,83}, union, [{remote_type, {1862,83}, [{atom,{1862,83},inet},{atom,{1862,88},ip_address},[]]}, {type,{1862,103},string,[]}]}]}]}]}]]}, {type, {1863,44}, constraint, [{atom,{1863,44},is_subtype}, [{var,{1863,44},'Options'}, {type, {1863,55}, list, [{type, {1863,56}, tuple, [{type, {1863,57}, union, [{atom,{1863,57},match_fun}, {atom,{1863,69},fail_callback}, {atom,{1863,85},fqdn_fun}]}, {type,{1863,95},'fun',[]}]}]}]]}]]}]}}, {function, {1865,1}, pkix_verify_hostname,3, [{clause, {1865,1}, [{var,{1865,22},'BinCert'}, {var,{1865,31},'ReferenceIDs'}, {var,{1865,45},'Options'}], [[{call, {1865,60}, {atom,{1865,60},is_binary}, [{var,{1865,70},'BinCert'}]}]], [{call, {1866,5}, {atom,{1866,5},pkix_verify_hostname}, [{call, {1866,26}, {atom,{1866,26},pkix_decode_cert}, [{var,{1866,43},'BinCert'},{atom,{1866,51},otp}]}, {var,{1866,57},'ReferenceIDs'}, {var,{1866,71},'Options'}]}]}, {clause, {1868,1}, [{match, {1868,22}, {var,{1868,22},'Cert'}, {record, {1868,29}, 'OTPCertificate', [{record_field, {1868,47}, {atom,{1868,47},tbsCertificate}, {var,{1868,64},'TbsCert'}}]}}, {var,{1868,74},'ReferenceIDs0'}, {var,{1868,89},'Opts'}], [], [{match, {1869,5}, {var,{1869,5},'MatchFun'}, {call, {1869,16}, {remote, {1869,25}, {atom,{1869,16},proplists}, {atom,{1869,26},get_value}}, [{atom,{1869,36},match_fun}, {var,{1869,51},'Opts'}, {atom,{1869,57},undefined}]}}, {match, {1870,5}, {var,{1870,5},'FailCB'}, {call, {1870,16}, {remote, {1870,25}, {atom,{1870,16},proplists}, {atom,{1870,26},get_value}}, [{atom,{1870,36},fail_callback}, {var,{1870,51},'Opts'}, {'fun', {1870,57}, {clauses, [{clause, {1870,60}, [{var,{1870,61},'_Cert'}], [], [{atom,{1870,71},false}]}]}}]}}, {match, {1871,5}, {var,{1871,5},'FqdnFun'}, {call, {1871,16}, {remote, {1871,25}, {atom,{1871,16},proplists}, {atom,{1871,26},get_value}}, [{atom,{1871,36},fqdn_fun}, {var,{1871,51},'Opts'}, {'fun', {1871,57}, {function,verify_hostname_extract_fqdn_default,1}}]}}, {match, {1873,5}, {var,{1873,5},'ReferenceIDs'}, {lc, {1873,20}, {tuple, {1873,21}, [{var,{1873,22},'T'}, {call, {1873,24}, {atom,{1873,24},to_string}, [{var,{1873,34},'V'}]}]}, [{generate, {1873,47}, {tuple,{1873,41},[{var,{1873,42},'T'},{var,{1873,44},'V'}]}, {var,{1873,50},'ReferenceIDs0'}}]}}, {match, {1874,5}, {var,{1874,5},'PresentedIDs'}, {'try', {1875,2}, [{call, {1875,6}, {remote,{1875,11},{atom,{1875,6},lists},{atom,{1875,12},keyfind}}, [{tuple, {1875,21}, [{integer,{1875,21},2}, {integer,{1875,21},5}, {integer,{1875,21},29}, {integer,{1875,21},17}]}, {record_index,{1876,6},'Extension',{atom,{1876,19},extnID}}, {record_field, {1877,13}, {var,{1877,6},'TbsCert'}, 'OTPTBSCertificate', {atom,{1877,34},extensions}}]}], [{clause, {1879,6}, [{record, {1879,6}, 'Extension', [{record_field, {1879,19}, {atom,{1879,19},extnValue}, {var,{1879,31},'ExtVals'}}]}], [], [{lc, {1880,3}, {tuple, {1880,4}, [{var,{1880,5},'T'}, {call, {1880,7}, {atom,{1880,7},to_string}, [{var,{1880,17},'V'}]}]}, [{generate, {1880,30}, {tuple,{1880,24},[{var,{1880,25},'T'},{var,{1880,27},'V'}]}, {var,{1880,33},'ExtVals'}}]}]}, {clause,{1881,6},[{atom,{1881,6},false}],[],[{nil,{1882,3}}]}], [{clause, {1884,6}, [{tuple, {1884,6}, [{var,{1884,6},'_'},{var,{1884,8},'_'},{var,{1884,8},'_'}]}], [], [{nil,{1884,13}}]}], []}}, {'case', {1887,5}, {var,{1887,10},'PresentedIDs'}, [{clause, {1888,2}, [{nil,{1888,2}}], [], [{'case', {1890,6}, {record_field, {1890,18}, {var,{1890,11},'TbsCert'}, 'OTPTBSCertificate', {atom,{1890,39},subject}}, [{clause, {1891,3}, [{tuple, {1891,3}, [{atom,{1891,4},rdnSequence},{var,{1891,16},'RDNseq'}]}], [], [{match, {1892,7}, {var,{1892,7},'PresentedCNs'}, {lc, {1893,4}, {tuple, {1893,5}, [{atom,{1893,6},cn}, {call, {1893,10}, {atom,{1893,10},to_string}, [{var,{1893,20},'V'}]}]}, [{generate, {1894,13}, {var,{1894,8},'ATVs'}, {var,{1894,16},'RDNseq'}}, {generate, {1896,28}, {record, {1895,8}, 'AttributeTypeAndValue', [{record_field, {1895,33}, {atom,{1895,33},type}, {tuple, {1895,41}, [{integer,{1895,41},2}, {integer,{1895,41},5}, {integer,{1895,41},4}, {integer,{1895,41},3}]}}, {record_field, {1896,12}, {atom,{1896,12},value}, {tuple, {1896,20}, [{var,{1896,21},'_T'},{var,{1896,24},'V'}]}}]}, {var,{1896,31},'ATVs'}}]}}, {call, {1901,7}, {atom,{1901,7},verify_hostname_match_loop}, [{call, {1901,34}, {atom,{1901,34},verify_hostname_fqnds}, [{var,{1901,56},'ReferenceIDs'},{var,{1901,70},'FqdnFun'}]}, {var,{1902,13},'PresentedCNs'}, {var,{1903,13},'MatchFun'}, {var,{1903,23},'FailCB'}, {var,{1903,31},'Cert'}]}]}, {clause, {1905,3}, [{var,{1905,3},'_'}], [], [{atom,{1906,7},false}]}]}]}, {clause, {1908,2}, [{var,{1908,2},'_'}], [], [{'case', {1910,6}, {call, {1910,11}, {atom,{1910,11},verify_hostname_match_loop}, [{var,{1910,38},'ReferenceIDs'}, {var,{1910,52},'PresentedIDs'}, {var,{1911,10},'MatchFun'}, {var,{1911,20},'FailCB'}, {var,{1911,28},'Cert'}]}, [{clause, {1912,3}, [{atom,{1912,3},false}], [], [{match, {1914,7}, {var,{1914,7},'DNS_ReferenceIDs'}, {lc, {1915,4}, {tuple, {1915,5}, [{atom,{1915,6},dns_id},{var,{1915,13},'X'}]}, [{generate, {1915,21}, {var,{1915,19},'X'}, {call, {1915,24}, {atom,{1915,24},verify_hostname_fqnds}, [{var,{1915,46},'ReferenceIDs'}, {var,{1915,60},'FqdnFun'}]}}]}}, {call, {1916,7}, {atom,{1916,7},verify_hostname_match_loop}, [{var,{1916,34},'DNS_ReferenceIDs'}, {var,{1916,52},'PresentedIDs'}, {var,{1917,13},'MatchFun'}, {var,{1917,23},'FailCB'}, {var,{1917,31},'Cert'}]}]}, {clause, {1918,3}, [{atom,{1918,3},true}], [], [{atom,{1919,7},true}]}]}]}]}]}]}, {attribute, {1941,2}, spec, {{pkix_verify_hostname_match_fun,1}, [{type, {1941,37}, bounded_fun, [{type, {1941,37}, 'fun', [{type,{1941,37},product,[{var,{1941,38},'Protocol'}]}, {var,{1941,52},'Result'}]}, [{type, {1942,7}, constraint, [{atom,{1942,7},is_subtype}, [{var,{1942,7},'Protocol'},{atom,{1942,19},https}]]}, {type, {1943,7}, constraint, [{atom,{1943,7},is_subtype}, [{var,{1943,7},'Result'},{type,{1943,17},'fun',[]}]]}]]}]}}, {function, {1946,1}, pkix_verify_hostname_match_fun,1, [{clause, {1946,1}, [{atom,{1946,32},https}], [], [{'fun', {1947,5}, {clauses, [{clause, {1947,8}, [{tuple, {1947,9}, [{atom,{1947,10},dns_id}, {match, {1947,17}, {var,{1947,17},'FQDN'}, {cons,{1947,22},{var,{1947,23},'_'},{var,{1947,25},'_'}}}]}, {tuple, {1947,30}, [{atom,{1947,31},dNSName}, {match, {1947,39}, {var,{1947,39},'Name'}, {cons,{1947,44},{var,{1947,45},'_'},{var,{1947,47},'_'}}}]}], [], [{call, {1947,55}, {atom,{1947,55},verify_hostname_match_wildcard}, [{var,{1947,86},'FQDN'},{var,{1947,92},'Name'}]}]}, {clause, {1948,8}, [{var,{1948,9},'_'},{var,{1948,12},'_'}], [], [{atom,{1948,18},default}]}]}}]}]}, {attribute, {1953,2}, spec, {{ssh_curvename2oid,1}, [{type, {1953,24}, 'fun', [{type,{1953,24},product,[{type,{1953,25},binary,[]}]}, {user_type,{1953,38},oid,[]}]}]}}, {function, {1958,1}, ssh_curvename2oid,1, [{clause, {1958,1}, [{bin, {1958,19}, [{bin_element, {1958,21}, {string,{1958,21},"nistp256"}, default,default}]}], [], [{tuple, {1958,40}, [{integer,{1958,40},1}, {integer,{1958,40},2}, {integer,{1958,40},840}, {integer,{1958,40},10045}, {integer,{1958,40},3}, {integer,{1958,40},1}, {integer,{1958,40},7}]}]}, {clause, {1959,1}, [{bin, {1959,19}, [{bin_element, {1959,21}, {string,{1959,21},"nistp384"}, default,default}]}], [], [{tuple, {1959,40}, [{integer,{1959,40},1}, {integer,{1959,40},3}, {integer,{1959,40},132}, {integer,{1959,40},0}, {integer,{1959,40},34}]}]}, {clause, {1960,1}, [{bin, {1960,19}, [{bin_element, {1960,21}, {string,{1960,21},"nistp521"}, default,default}]}], [], [{tuple, {1960,40}, [{integer,{1960,40},1}, {integer,{1960,40},3}, {integer,{1960,40},132}, {integer,{1960,40},0}, {integer,{1960,40},35}]}]}]}, {attribute, {1964,2}, spec, {{oid2ssh_curvename,1}, [{type, {1964,24}, 'fun', [{type,{1964,24},product,[{user_type,{1964,25},oid,[]}]}, {type,{1964,35},binary,[]}]}]}}, {function, {1968,1}, oid2ssh_curvename,1, [{clause, {1968,1}, [{tuple, {1968,20}, [{integer,{1968,20},1}, {integer,{1968,20},2}, {integer,{1968,20},840}, {integer,{1968,20},10045}, {integer,{1968,20},3}, {integer,{1968,20},1}, {integer,{1968,20},7}]}], [], [{bin, {1968,36}, [{bin_element, {1968,38}, {string,{1968,38},"nistp256"}, default,default}]}]}, {clause, {1969,1}, [{tuple, {1969,20}, [{integer,{1969,20},1}, {integer,{1969,20},3}, {integer,{1969,20},132}, {integer,{1969,20},0}, {integer,{1969,20},34}]}], [], [{bin, {1969,36}, [{bin_element, {1969,38}, {string,{1969,38},"nistp384"}, default,default}]}]}, {clause, {1970,1}, [{tuple, {1970,20}, [{integer,{1970,20},1}, {integer,{1970,20},3}, {integer,{1970,20},132}, {integer,{1970,20},0}, {integer,{1970,20},35}]}], [], [{bin, {1970,36}, [{bin_element, {1970,38}, {string,{1970,38},"nistp521"}, default,default}]}]}]}, {attribute, {1986,2}, spec, {{short_name_hash,1}, [{type, {1986,22}, bounded_fun, [{type, {1986,22}, 'fun', [{type,{1986,22},product,[{var,{1986,23},'Name'}]}, {type,{1986,32},string,[]}]}, [{type, {1986,46}, constraint, [{atom,{1986,46},is_subtype}, [{var,{1986,46},'Name'}, {user_type,{1986,54},issuer_name,[]}]]}]]}]}}, {function, {1990,1}, short_name_hash,1, [{clause, {1990,1}, [{match, {1990,17}, {tuple, {1990,17}, [{atom,{1990,18},rdnSequence},{var,{1990,31},'_Attributes'}]}, {var,{1990,46},'Name'}}], [], [{match, {1991,5}, {var,{1991,5},'HashThis'}, {call, {1991,16}, {atom,{1991,16},encode_name_for_short_hash}, [{var,{1991,43},'Name'}]}}, {match, {1992,5}, {bin, {1992,5}, [{bin_element, {1992,7}, {var,{1992,7},'HashValue'}, {integer,{1992,17},32}, [little]}, {bin_element,{1992,28},{var,{1992,28},'_'},default,[binary]}]}, {call, {1992,41}, {remote,{1992,47},{atom,{1992,41},crypto},{atom,{1992,48},hash}}, [{atom,{1992,53},sha},{var,{1992,58},'HashThis'}]}}, {call, {1993,5}, {remote,{1993,11},{atom,{1993,5},string},{atom,{1993,12},to_lower}}, [{call, {1993,21}, {remote,{1993,27},{atom,{1993,21},string},{atom,{1993,28},right}}, [{call, {1993,34}, {atom,{1993,34},integer_to_list}, [{var,{1993,50},'HashValue'},{integer,{1993,61},16}]}, {integer,{1993,66},8}, {char,{1993,69},48}]}]}]}]}, {attribute, {2075,2}, spec, {{pkix_test_data,1}, [{type, {2075,21}, bounded_fun, [{type, {2075,21}, 'fun', [{type,{2075,21},product,[{var,{2075,22},'ChainConf'}]}, {var,{2075,36},'TestConf'}]}, [{type, {2076,7}, constraint, [{atom,{2076,7},is_subtype}, [{var,{2076,7},'ChainConf'}, {type, {2076,20}, union, [{type, {2076,20}, map, [{type, {2076,34}, map_field_exact, [{atom,{2076,22},server_chain}, {user_type,{2076,37},chain_opts,[]}]}, {type, {2077,34}, map_field_exact, [{atom,{2077,22},client_chain}, {user_type,{2077,37},chain_opts,[]}]}]}, {user_type,{2078,20},chain_opts,[]}]}]]}, {type, {2079,7}, constraint, [{atom,{2079,7},is_subtype}, [{var,{2079,7},'TestConf'}, {type, {2079,20}, union, [{type, {2079,20}, map, [{type, {2079,36}, map_field_exact, [{atom,{2079,22},server_config}, {type,{2079,39},list,[{user_type,{2079,40},conf_opt,[]}]}]}, {type, {2079,68}, map_field_exact, [{atom,{2079,54},client_config}, {type, {2079,72}, list, [{user_type,{2079,73},conf_opt,[]}]}]}]}, {type, {2079,88}, list, [{user_type,{2079,89},conf_opt,[]}]}]}]]}]]}]}}, {function, {2083,1}, pkix_test_data,1, [{clause, {2083,1}, [{map, {2083,16}, [{map_field_exact, {2083,31}, {atom,{2083,18},client_chain}, {var,{2083,34},'ClientChain0'}}, {map_field_exact, {2084,31}, {atom,{2084,18},server_chain}, {var,{2084,34},'ServerChain0'}}]}], [], [{match, {2085,5}, {var,{2085,5},'Default'}, {map, {2085,15}, [{map_field_assoc, {2085,31}, {atom,{2085,17},intermediates}, {nil,{2085,34}}}]}}, {match, {2086,5}, {var,{2086,5},'ClientChain'}, {call, {2086,19}, {remote,{2086,23},{atom,{2086,19},maps},{atom,{2086,24},merge}}, [{var,{2086,30},'Default'},{var,{2086,39},'ClientChain0'}]}}, {match, {2087,5}, {var,{2087,5},'ServerChain'}, {call, {2087,19}, {remote,{2087,23},{atom,{2087,19},maps},{atom,{2087,24},merge}}, [{var,{2087,30},'Default'},{var,{2087,39},'ServerChain0'}]}}, {call, {2088,5}, {remote, {2088,16}, {atom,{2088,5},pubkey_cert}, {atom,{2088,17},gen_test_certs}}, [{map, {2088,32}, [{map_field_assoc, {2088,47}, {atom,{2088,34},client_chain}, {var,{2088,50},'ClientChain'}}, {map_field_assoc, {2089,47}, {atom,{2089,34},server_chain}, {var,{2089,50},'ServerChain'}}]}]}]}, {clause, {2090,1}, [{match,{2090,16},{map,{2090,16},[]},{var,{2090,22},'Chain'}}], [], [{match, {2091,5}, {var,{2091,5},'Default'}, {map, {2091,15}, [{map_field_assoc, {2091,31}, {atom,{2091,17},intermediates}, {nil,{2091,34}}}]}}, {call, {2092,5}, {remote, {2092,16}, {atom,{2092,5},pubkey_cert}, {atom,{2092,17},gen_test_certs}}, [{call, {2092,32}, {remote,{2092,36},{atom,{2092,32},maps},{atom,{2092,37},merge}}, [{var,{2092,43},'Default'},{var,{2092,52},'Chain'}]}]}]}]}, {attribute, {2102,2}, spec, {{pkix_test_root_cert,2}, [{type, {2102,26}, bounded_fun, [{type, {2102,26}, 'fun', [{type, {2102,26}, product, [{var,{2102,27},'Name'},{var,{2102,33},'Options'}]}, {var,{2103,34},'RootCertAndKey'}]}, [{type, {2104,43}, constraint, [{atom,{2104,43},is_subtype}, [{var,{2104,43},'Name'},{type,{2104,51},string,[]}]]}, {type, {2105,43}, constraint, [{atom,{2105,43},is_subtype}, [{var,{2105,43},'Options'}, {type,{2105,54},list,[{user_type,{2105,55},cert_opt,[]}]}]]}, {type, {2106,43}, constraint, [{atom,{2106,43},is_subtype}, [{var,{2106,43},'RootCertAndKey'}, {type, {2106,61}, map, [{type, {2106,68}, map_field_exact, [{atom,{2106,63},cert},{user_type,{2106,71},der_encoded,[]}]}, {type, {2106,90}, map_field_exact, [{atom,{2106,86},key}, {user_type,{2106,93},private_key,[]}]}]}]]}]]}]}}, {function, {2110,1}, pkix_test_root_cert,2, [{clause, {2110,1}, [{var,{2110,21},'Name'},{var,{2110,27},'Opts'}], [], [{call, {2111,5}, {remote, {2111,16}, {atom,{2111,5},pubkey_cert}, {atom,{2111,17},root_cert}}, [{var,{2111,27},'Name'},{var,{2111,33},'Opts'}]}]}]}, {attribute, {2144,2}, spec, {{pkix_ocsp_validate,5}, [{type, {2144,25}, bounded_fun, [{type, {2144,25}, 'fun', [{type, {2144,25}, product, [{var,{2144,26},'Cert'}, {var,{2144,32},'IssuerCert'}, {var,{2144,44},'OcspRespDer'}, {var,{2144,57},'NonceExt'}, {var,{2144,67},'Options'}]}, {type, {2145,11}, union, [{type, {2145,11}, tuple, [{atom,{2145,12},ok},{var,{2145,16},'Details'}]}, {type, {2145,27}, tuple, [{atom,{2145,28},error}, {type, {2145,35}, tuple, [{atom,{2145,36},bad_cert},{var,{2145,46},'Reason'}]}]}]}]}, [{type, {2146,20}, constraint, [{atom,{2146,20},is_subtype}, [{var,{2146,20},'Cert'},{user_type,{2146,26},cert,[]}]]}, {type, {2147,20}, constraint, [{atom,{2147,20},is_subtype}, [{var,{2147,20},'IssuerCert'},{user_type,{2147,32},cert,[]}]]}, {type, {2148,20}, constraint, [{atom,{2148,20},is_subtype}, [{var,{2148,20},'OcspRespDer'}, {user_type,{2148,33},der_encoded,[]}]]}, {type, {2149,20}, constraint, [{atom,{2149,20},is_subtype}, [{var,{2149,20},'NonceExt'}, {type, {2149,30}, union, [{atom,{2149,30},undefined},{type,{2149,42},binary,[]}]}]]}, {type, {2150,20}, constraint, [{atom,{2150,20},is_subtype}, [{var,{2150,20},'Options'}, {type, {2150,29}, list, [{type, {2150,30}, tuple, [{atom,{2150,31},is_trusted_responder_fun}, {type, {2151,35}, 'fun', [{type, {2151,35}, product, [{user_type,{2151,36},combined_cert,[]}]}, {atom,{2151,56},boolean}]}]}]}]]}, {type, {2152,20}, constraint, [{atom,{2152,20},is_subtype}, [{var,{2152,20},'Details'},{type,{2152,29},list,[]}]]}, {type, {2153,20}, constraint, [{atom,{2153,20},is_subtype}, [{var,{2153,20},'Reason'}, {user_type,{2153,28},bad_cert_reason,[]}]]}]]}]}}, {function, {2156,1}, pkix_ocsp_validate,5, [{clause, {2156,1}, [{var,{2156,20},'DerCert'}, {var,{2156,29},'IssuerCert'}, {var,{2156,41},'OcspRespDer'}, {var,{2156,54},'NonceExt'}, {var,{2156,64},'Options'}], [[{call, {2157,8}, {atom,{2157,8},is_binary}, [{var,{2157,18},'DerCert'}]}]], [{call, {2158,5}, {atom,{2158,5},pkix_ocsp_validate}, [{call, {2159,7}, {atom,{2159,7},pkix_decode_cert}, [{var,{2159,24},'DerCert'},{atom,{2159,33},otp}]}, {var,{2159,39},'IssuerCert'}, {var,{2159,51},'OcspRespDer'}, {var,{2159,64},'NonceExt'}, {var,{2159,74},'Options'}]}]}, {clause, {2160,1}, [{var,{2160,20},'Cert'}, {var,{2160,26},'DerIssuerCert'}, {var,{2160,41},'OcspRespDer'}, {var,{2160,54},'NonceExt'}, {var,{2160,64},'Options'}], [[{call, {2161,8}, {atom,{2161,8},is_binary}, [{var,{2161,18},'DerIssuerCert'}]}]], [{call, {2162,5}, {atom,{2162,5},pkix_ocsp_validate}, [{var,{2163,7},'Cert'}, {call, {2163,13}, {atom,{2163,13},pkix_decode_cert}, [{var,{2163,30},'DerIssuerCert'},{atom,{2163,45},otp}]}, {var,{2163,51},'OcspRespDer'}, {var,{2163,64},'NonceExt'}, {var,{2163,74},'Options'}]}]}, {clause, {2164,1}, [{var,{2164,20},'Cert'}, {var,{2164,26},'IssuerCert'}, {var,{2164,38},'OcspRespDer'}, {var,{2164,51},'NonceExt'}, {var,{2164,61},'Options'}], [[{call, {2165,8}, {atom,{2165,8},is_record}, [{var,{2165,18},'Cert'},{atom,{2165,24},'OTPCertificate'}]}, {call, {2166,8}, {atom,{2166,8},is_record}, [{var,{2166,18},'IssuerCert'},{atom,{2166,30},'OTPCertificate'}]}]], [{match, {2167,5}, {var,{2167,5},'IsTrustedResponderFun'}, {call, {2168,2}, {remote, {2168,11}, {atom,{2168,2},proplists}, {atom,{2168,12},get_value}}, [{atom,{2168,22},is_trusted_responder_fun}, {var,{2168,48},'Options'}, {'fun', {2169,29}, {clauses, [{clause, {2169,32}, [{var,{2169,33},'_'}], [], [{atom,{2169,39},false}]}]}}]}}, {'maybe', {2170,5}, [{maybe_match, {2171,72}, {tuple, {2171,9}, [{atom,{2171,10},ok}, {match, {2171,14}, {var,{2171,14},'BasicOcspResponse'}, {record, {2171,34}, 'BasicOCSPResponse', [{record_field, {2171,55}, {atom,{2171,55},certs}, {var,{2171,63},'Certs0'}}]}}]}, {call, {2172,13}, {remote, {2172,24}, {atom,{2172,13},pubkey_ocsp}, {atom,{2172,25},decode_response}}, [{var,{2172,41},'OcspRespDer'}]}}, {match, {2173,9}, {var,{2173,9},'Certs'}, {'case', {2173,17}, {var,{2173,22},'Certs0'}, [{clause, {2174,21}, [{atom,{2174,21},asn1_NOVALUE}], [], [{nil,{2174,37}}]}, {clause, {2175,21}, [{var,{2175,21},'_'}], [], [{var,{2175,26},'Certs0'}]}]}}, {match, {2177,9}, {var,{2177,9},'OcspResponseCerts'}, {op, {2177,62}, '++', {lc, {2177,29}, {call, {2177,30}, {atom,{2177,30},combined_cert}, [{var,{2177,44},'C'}]}, [{generate, {2177,52}, {var,{2177,50},'C'}, {var,{2177,55},'Certs'}}]}, {cons, {2178,13}, {record, {2178,14}, cert, [{record_field, {2178,20}, {atom,{2178,20},der}, {bin,{2178,26},[]}}, {record_field, {2178,32}, {atom,{2178,32},otp}, {var,{2178,38},'IssuerCert'}}]}, {nil,{2178,49}}}}}, {maybe_match, {2179,34}, {tuple, {2179,9}, [{atom,{2179,10},ok}, {var,{2179,14},'Responses'}, {var,{2179,25},'Details'}]}, {call, {2180,13}, {remote, {2180,24}, {atom,{2180,13},pubkey_ocsp}, {atom,{2180,25},verify_response}}, [{var,{2181,15},'BasicOcspResponse'}, {var,{2181,34},'OcspResponseCerts'}, {var,{2181,53},'NonceExt'}, {var,{2181,63},'IssuerCert'}, {var,{2182,15},'IsTrustedResponderFun'}]}}, {maybe_match, {2183,58}, {tuple, {2183,9}, [{atom,{2183,10},ok}, {record, {2183,14}, 'SingleResponse', [{record_field, {2183,32}, {atom,{2183,32},certStatus}, {var,{2183,45},'CertStatus'}}]}]}, {call, {2184,13}, {remote, {2184,24}, {atom,{2184,13},pubkey_ocsp}, {atom,{2184,25},find_single_response}}, [{var,{2184,46},'Cert'}, {var,{2184,52},'IssuerCert'}, {var,{2184,64},'Responses'}]}}, {call, {2185,9}, {remote, {2185,20}, {atom,{2185,9},pubkey_ocsp}, {atom,{2185,21},status}}, [{var,{2185,28},'CertStatus'},{var,{2185,40},'Details'}]}], {'else', {2186,5}, [{clause, {2187,9}, [{tuple, {2187,9}, [{atom,{2187,10},error},{var,{2187,17},'Reason'}]}], [], [{tuple, {2188,13}, [{atom,{2188,14},error}, {tuple, {2188,21}, [{atom,{2188,22},bad_cert}, {tuple, {2188,32}, [{atom,{2188,33},revocation_status_undetermined}, {var,{2188,65},'Reason'}]}]}]}]}]}}]}]}, {attribute, {2193,2}, spec, {{ocsp_extensions,1}, [{type, {2193,22}, 'fun', [{type, {2193,22}, product, [{type, {2193,23}, union, [{atom,{2193,23},undefined},{type,{2193,35},binary,[]}]}]}, {type,{2193,48},list,[]}]}]}}, {function, {2196,1}, ocsp_extensions,1, [{clause, {2196,1}, [{var,{2196,17},'Nonce'}], [], [{lc, {2197,5}, {var,{2197,6},'Extn'}, [{generate, {2197,19}, {var,{2197,14},'Extn'}, {cons, {2197,22}, {call, {2197,23}, {remote, {2197,34}, {atom,{2197,23},pubkey_ocsp}, {atom,{2197,35},get_nonce_extn}}, [{var,{2197,50},'Nonce'}]}, {nil,{2197,56}}}}, {call, {2198,14}, {remote, {2198,20}, {atom,{2198,14},erlang}, {atom,{2198,21},is_record}}, [{var,{2198,31},'Extn'},{atom,{2198,37},'Extension'}]}]}]}]}, {attribute, {2209,2}, spec, {{cacerts_get,0}, [{type, {2209,18}, 'fun', [{type,{2209,18},product,[]}, {type,{2209,24},list,[{user_type,{2209,25},combined_cert,[]}]}]}]}}, {function, {2211,1}, cacerts_get,0, [{clause, {2211,1}, [],[], [{call, {2212,5}, {remote, {2212,22}, {atom,{2212,5},pubkey_os_cacerts}, {atom,{2212,23},get}}, []}]}]}, {attribute, {2219,2}, spec, {{cacerts_load,0}, [{type, {2219,19}, 'fun', [{type,{2219,19},product,[]}, {type, {2219,25}, union, [{atom,{2219,25},ok}, {type, {2219,30}, tuple, [{atom,{2219,31},error}, {ann_type, {2219,38}, [{var,{2219,38},'Reason'},{type,{2219,46},term,[]}]}]}]}]}]}}, {function, {2221,1}, cacerts_load,0, [{clause, {2221,1}, [],[], [{call, {2222,5}, {remote, {2222,22}, {atom,{2222,5},pubkey_os_cacerts}, {atom,{2222,23},load}}, []}]}]}, {attribute, {2229,2}, spec, {{cacerts_load,1}, [{type, {2229,19}, 'fun', [{type, {2229,19}, product, [{ann_type, {2229,20}, [{var,{2229,20},'File'}, {remote_type, {2229,26}, [{atom,{2229,26},file},{atom,{2229,31},filename_all},[]]}]}]}, {type, {2229,50}, union, [{atom,{2229,50},ok}, {type, {2229,55}, tuple, [{atom,{2229,56},error}, {ann_type, {2229,63}, [{var,{2229,63},'Reason'},{type,{2229,71},term,[]}]}]}]}]}]}}, {function, {2231,1}, cacerts_load,1, [{clause, {2231,1}, [{var,{2231,14},'File'}], [], [{call, {2232,5}, {remote, {2232,22}, {atom,{2232,5},pubkey_os_cacerts}, {atom,{2232,23},load}}, [{cons,{2232,28},{var,{2232,29},'File'},{nil,{2232,33}}}]}]}]}, {attribute, {2238,2}, spec, {{cacerts_clear,0}, [{type, {2238,20}, 'fun', [{type,{2238,20},product,[]},{type,{2238,26},boolean,[]}]}]}}, {function, {2240,1}, cacerts_clear,0, [{clause, {2240,1}, [],[], [{call, {2241,5}, {remote, {2241,22}, {atom,{2241,5},pubkey_os_cacerts}, {atom,{2241,23},clear}}, []}]}]}, {function, {2246,1}, default_options,1, [{clause, {2246,1}, [{nil,{2246,17}}], [], [{cons, {2247,5}, {tuple, {2247,6}, [{atom,{2247,7},rsa_padding},{atom,{2247,20},rsa_pkcs1_padding}]}, {nil,{2247,38}}}]}, {clause, {2248,1}, [{var,{2248,17},'Opts'}], [], [{'case', {2249,5}, {call, {2249,10}, {remote, {2249,19}, {atom,{2249,10},proplists}, {atom,{2249,20},get_value}}, [{atom,{2249,30},rsa_pad},{var,{2249,39},'Opts'}]}, [{clause, {2250,9}, [{atom,{2250,9},undefined}], [], [{'case', {2251,13}, {call, {2251,18}, {remote, {2251,27}, {atom,{2251,18},proplists}, {atom,{2251,28},get_value}}, [{atom,{2251,38},rsa_padding},{var,{2251,51},'Opts'}]}, [{clause, {2252,17}, [{atom,{2252,17},undefined}], [], [{'case', {2253,21}, {call, {2253,26}, {remote, {2253,31}, {atom,{2253,26},lists}, {atom,{2253,32},dropwhile}}, [{'fun', {2253,42}, {function, {atom,{2253,46},erlang}, {atom,{2253,53},is_tuple}, {integer,{2253,62},1}}}, {var,{2253,65},'Opts'}]}, [{clause, {2254,25}, [{cons, {2254,25}, {var,{2254,26},'Pad'}, {var,{2254,30},'_'}}], [], [{call, {2255,29}, {atom,{2255,29},set_padding}, [{var,{2255,41},'Pad'},{var,{2255,46},'Opts'}]}]}, {clause, {2256,25}, [{nil,{2256,25}}], [], [{call, {2257,29}, {atom,{2257,29},set_padding}, [{atom,{2257,41},rsa_pkcs1_padding}, {var,{2257,60},'Opts'}]}]}]}]}, {clause, {2259,17}, [{var,{2259,17},'Pad'}], [], [{call, {2260,21}, {atom,{2260,21},set_padding}, [{var,{2260,33},'Pad'},{var,{2260,38},'Opts'}]}]}]}]}, {clause, {2262,9}, [{var,{2262,9},'Pad'}], [], [{call, {2263,13}, {atom,{2263,13},set_padding}, [{var,{2263,25},'Pad'},{var,{2263,30},'Opts'}]}]}]}]}]}, {function, {2266,1}, set_padding,2, [{clause, {2266,1}, [{var,{2266,13},'Pad'},{var,{2266,18},'Opts'}], [], [{cons, {2267,5}, {tuple,{2267,6},[{atom,{2267,7},rsa_padding},{var,{2267,19},'Pad'}]}, {lc, {2267,26}, {tuple,{2267,27},[{var,{2267,28},'T'},{var,{2267,30},'V'}]}, [{generate, {2267,42}, {tuple,{2267,36},[{var,{2267,37},'T'},{var,{2267,39},'V'}]}, {var,{2267,45},'Opts'}}, {op, {2268,38}, '=/=', {var,{2268,36},'T'}, {atom,{2268,42},rsa_padding}}, {op, {2269,38}, '=/=', {var,{2269,36},'T'}, {atom,{2269,42},rsa_pad}}]}}]}]}, {function, {2272,1}, format_pkix_sign_key,1, [{clause, {2272,1}, [{tuple, {2272,22}, [{match, {2272,23}, {record,{2272,23},'RSAPrivateKey',[]}, {var,{2272,44},'Key'}}, {var,{2272,49},'_'}]}], [], [{var,{2274,5},'Key'}]}, {clause,{2275,1},[{var,{2275,22},'Key'}],[],[{var,{2276,5},'Key'}]}]}, {function, {2278,1}, format_sign_key,1, [{clause, {2278,1}, [{map, {2278,17}, [{map_field_exact, {2278,31}, {atom,{2278,19},encrypt_fun}, {var,{2278,34},'KeyFun'}}]}], [], [{tuple,{2279,5},[{atom,{2279,6},extern},{var,{2279,14},'KeyFun'}]}]}, {clause, {2280,1}, [{map, {2280,17}, [{map_field_exact, {2280,28}, {atom,{2280,19},sign_fun}, {var,{2280,31},'KeyFun'}}]}], [], [{tuple,{2281,5},[{atom,{2281,6},extern},{var,{2281,14},'KeyFun'}]}]}, {clause, {2282,1}, [{match, {2282,17}, {var,{2282,17},'Key'}, {record,{2282,23},'RSAPrivateKey',[]}}], [], [{tuple, {2283,5}, [{atom,{2283,6},rsa}, {call, {2283,11}, {atom,{2283,11},format_rsa_private_key}, [{var,{2283,34},'Key'}]}]}]}, {clause, {2284,1}, [{tuple, {2284,17}, [{match, {2284,18}, {record,{2284,18},'RSAPrivateKey',[]}, {var,{2284,39},'Key'}}, {var,{2284,44},'_'}]}], [], [{tuple, {2287,5}, [{atom,{2287,6},rsa}, {call, {2287,11}, {atom,{2287,11},format_rsa_private_key}, [{var,{2287,34},'Key'}]}]}]}, {clause, {2288,1}, [{record, {2288,17}, 'DSAPrivateKey', [{record_field,{2288,34},{atom,{2288,34},p},{var,{2288,38},'P'}}, {record_field,{2288,41},{atom,{2288,41},q},{var,{2288,45},'Q'}}, {record_field,{2288,48},{atom,{2288,48},g},{var,{2288,52},'G'}}, {record_field,{2288,55},{atom,{2288,55},x},{var,{2288,59},'X'}}]}], [], [{tuple, {2289,5}, [{atom,{2289,6},dss}, {cons, {2289,11}, {var,{2289,12},'P'}, {cons, {2289,15}, {var,{2289,15},'Q'}, {cons, {2289,18}, {var,{2289,18},'G'}, {cons,{2289,21},{var,{2289,21},'X'},{nil,{2289,22}}}}}}]}]}, {clause, {2290,1}, [{record, {2290,17}, 'ECPrivateKey', [{record_field, {2290,33}, {atom,{2290,33},privateKey}, {var,{2290,46},'PrivKey'}}, {record_field, {2290,55}, {atom,{2290,55},parameters}, {match, {2290,68}, {tuple, {2290,68}, [{atom,{2290,69},namedCurve},{var,{2290,81},'Curve'}]}, {var,{2290,90},'Param'}}}]}], [[{op, {2291,33}, 'orelse', {op, {2291,15}, '==', {var,{2291,9},'Curve'}, {tuple, {2291,19}, [{integer,{2291,19},1}, {integer,{2291,19},3}, {integer,{2291,19},101}, {integer,{2291,19},112}]}}, {op, {2291,47}, '==', {var,{2291,41},'Curve'}, {tuple, {2291,51}, [{integer,{2291,51},1}, {integer,{2291,51},3}, {integer,{2291,51},101}, {integer,{2291,51},113}]}}}]], [{match, {2292,5}, {var,{2292,5},'ECCurve'}, {call, {2292,15}, {atom,{2292,15},ec_curve_spec}, [{var,{2292,29},'Param'}]}}, {tuple, {2293,5}, [{atom,{2293,6},eddsa}, {cons, {2293,13}, {var,{2293,14},'PrivKey'}, {cons,{2293,23},{var,{2293,23},'ECCurve'},{nil,{2293,30}}}}]}]}, {clause, {2294,1}, [{record, {2294,17}, 'ECPrivateKey', [{record_field, {2294,33}, {atom,{2294,33},privateKey}, {var,{2294,46},'PrivKey'}}, {record_field, {2294,55}, {atom,{2294,55},parameters}, {var,{2294,68},'Param'}}]}], [], [{match, {2295,5}, {var,{2295,5},'ECCurve'}, {call, {2295,15}, {atom,{2295,15},ec_curve_spec}, [{var,{2295,29},'Param'}]}}, {tuple, {2296,5}, [{atom,{2296,6},ecdsa}, {cons, {2296,13}, {var,{2296,14},'PrivKey'}, {cons,{2296,23},{var,{2296,23},'ECCurve'},{nil,{2296,30}}}}]}]}, {clause, {2297,1}, [{tuple, {2297,17}, [{atom,{2297,18},ed_pri}, {var,{2297,26},'Curve'}, {var,{2297,33},'_Pub'}, {var,{2297,39},'Priv'}]}], [], [{tuple, {2298,5}, [{atom,{2298,6},eddsa}, {cons, {2298,13}, {var,{2298,14},'Priv'}, {cons,{2298,19},{var,{2298,19},'Curve'},{nil,{2298,24}}}}]}]}, {clause,{2299,1},[{var,{2299,17},'_'}],[],[{atom,{2300,5},badarg}]}]}, {function, {2302,1}, format_verify_key,1, [{clause, {2302,1}, [{record, {2302,19}, 'RSAPublicKey', [{record_field, {2302,35}, {atom,{2302,35},modulus}, {var,{2302,45},'Mod'}}, {record_field, {2302,50}, {atom,{2302,50},publicExponent}, {var,{2302,67},'Exp'}}]}], [], [{tuple, {2303,5}, [{atom,{2303,6},rsa}, {cons, {2303,11}, {var,{2303,12},'Exp'}, {cons,{2303,17},{var,{2303,17},'Mod'},{nil,{2303,20}}}}]}]}, {clause, {2304,1}, [{tuple, {2304,19}, [{record, {2304,20}, 'ECPoint', [{record_field, {2304,31}, {atom,{2304,31},point}, {var,{2304,39},'Point'}}]}, {match, {2304,47}, {tuple, {2304,47}, [{atom,{2304,48},namedCurve},{var,{2304,60},'Curve'}]}, {var,{2304,69},'Param'}}]}], [[{op, {2304,107}, 'orelse', {op, {2304,89}, '==', {var,{2304,83},'Curve'}, {tuple, {2304,93}, [{integer,{2304,93},1}, {integer,{2304,93},3}, {integer,{2304,93},101}, {integer,{2304,93},112}]}}, {op, {2305,89}, '==', {var,{2305,83},'Curve'}, {tuple, {2305,93}, [{integer,{2305,93},1}, {integer,{2305,93},3}, {integer,{2305,93},101}, {integer,{2305,93},113}]}}}]], [{match, {2306,5}, {var,{2306,5},'ECCurve'}, {call, {2306,15}, {atom,{2306,15},ec_curve_spec}, [{var,{2306,29},'Param'}]}}, {tuple, {2307,5}, [{atom,{2307,6},eddsa}, {cons, {2307,13}, {var,{2307,14},'Point'}, {cons,{2307,21},{var,{2307,21},'ECCurve'},{nil,{2307,28}}}}]}]}, {clause, {2308,1}, [{tuple, {2308,19}, [{record, {2308,20}, 'ECPoint', [{record_field, {2308,31}, {atom,{2308,31},point}, {var,{2308,39},'Point'}}]}, {var,{2308,47},'Param'}]}], [], [{match, {2309,5}, {var,{2309,5},'ECCurve'}, {call, {2309,15}, {atom,{2309,15},ec_curve_spec}, [{var,{2309,29},'Param'}]}}, {tuple, {2310,5}, [{atom,{2310,6},ecdsa}, {cons, {2310,13}, {var,{2310,14},'Point'}, {cons,{2310,21},{var,{2310,21},'ECCurve'},{nil,{2310,28}}}}]}]}, {clause, {2311,1}, [{tuple, {2311,19}, [{var,{2311,20},'Key'}, {record, {2311,26}, 'Dss-Parms', [{record_field,{2311,39},{atom,{2311,39},p},{var,{2311,43},'P'}}, {record_field,{2311,46},{atom,{2311,46},q},{var,{2311,50},'Q'}}, {record_field, {2311,53}, {atom,{2311,53},g}, {var,{2311,57},'G'}}]}]}], [], [{tuple, {2312,5}, [{atom,{2312,6},dss}, {cons, {2312,11}, {var,{2312,12},'P'}, {cons, {2312,15}, {var,{2312,15},'Q'}, {cons, {2312,18}, {var,{2312,18},'G'}, {cons,{2312,21},{var,{2312,21},'Key'},{nil,{2312,24}}}}}}]}]}, {clause, {2313,1}, [{tuple, {2313,19}, [{atom,{2313,20},ed_pub}, {var,{2313,28},'Curve'}, {var,{2313,35},'Key'}]}], [], [{tuple, {2314,5}, [{atom,{2314,6},eddsa}, {cons, {2314,13}, {var,{2314,14},'Key'}, {cons,{2314,18},{var,{2314,18},'Curve'},{nil,{2314,23}}}}]}]}, {clause, {2316,1}, [{record, {2316,19}, 'RSAPrivateKey', [{record_field, {2316,36}, {atom,{2316,36},modulus}, {var,{2316,46},'Mod'}}, {record_field, {2316,51}, {atom,{2316,51},publicExponent}, {var,{2316,68},'Exp'}}]}], [], [{call, {2317,5}, {atom,{2317,5},format_verify_key}, [{record, {2317,23}, 'RSAPublicKey', [{record_field, {2317,39}, {atom,{2317,39},modulus}, {var,{2317,49},'Mod'}}, {record_field, {2317,54}, {atom,{2317,54},publicExponent}, {var,{2317,71},'Exp'}}]}]}]}, {clause, {2318,1}, [{record, {2318,19}, 'ECPrivateKey', [{record_field, {2318,35}, {atom,{2318,35},parameters}, {var,{2318,48},'Param'}}, {record_field, {2318,55}, {atom,{2318,55},publicKey}, {tuple,{2318,67},[{var,{2318,68},'_'},{var,{2318,71},'Point'}]}}]}], [], [{call, {2319,5}, {atom,{2319,5},format_verify_key}, [{tuple, {2319,23}, [{record, {2319,24}, 'ECPoint', [{record_field, {2319,35}, {atom,{2319,35},point}, {var,{2319,43},'Point'}}]}, {var,{2319,51},'Param'}]}]}]}, {clause, {2320,1}, [{record, {2320,19}, 'ECPrivateKey', [{record_field, {2320,35}, {atom,{2320,35},parameters}, {var,{2320,48},'Param'}}, {record_field, {2320,55}, {atom,{2320,55},publicKey}, {var,{2320,67},'Point'}}]}], [], [{call, {2321,5}, {atom,{2321,5},format_verify_key}, [{tuple, {2321,23}, [{record, {2321,24}, 'ECPoint', [{record_field, {2321,35}, {atom,{2321,35},point}, {var,{2321,43},'Point'}}]}, {var,{2321,51},'Param'}]}]}]}, {clause, {2322,1}, [{record, {2322,19}, 'DSAPrivateKey', [{record_field,{2322,36},{atom,{2322,36},y},{var,{2322,38},'Y'}}, {record_field,{2322,41},{atom,{2322,41},p},{var,{2322,43},'P'}}, {record_field,{2322,46},{atom,{2322,46},q},{var,{2322,48},'Q'}}, {record_field,{2322,51},{atom,{2322,51},g},{var,{2322,53},'G'}}]}], [], [{call, {2323,5}, {atom,{2323,5},format_verify_key}, [{tuple, {2323,23}, [{var,{2323,24},'Y'}, {record, {2323,27}, 'Dss-Parms', [{record_field,{2323,40},{atom,{2323,40},p},{var,{2323,42},'P'}}, {record_field,{2323,45},{atom,{2323,45},q},{var,{2323,47},'Q'}}, {record_field, {2323,50}, {atom,{2323,50},g}, {var,{2323,52},'G'}}]}]}]}]}, {clause,{2324,1},[{var,{2324,19},'_'}],[],[{atom,{2325,5},badarg}]}]}, {function, {2327,1}, rsa_opts,1, [{clause, {2327,1}, [{record, {2327,10}, 'RSASSA-PSS-params', [{record_field, {2327,31}, {atom,{2327,31},saltLength}, {var,{2327,44},'SaltLen'}}, {record_field, {2328,31}, {atom,{2328,31},maskGenAlgorithm}, {record, {2329,35}, 'MaskGenAlgorithm', [{record_field, {2329,55}, {atom,{2329,55},algorithm}, {tuple, {2329,68}, [{integer,{2329,68},1}, {integer,{2329,68},2}, {integer,{2329,68},840}, {integer,{2329,68},113549}, {integer,{2329,68},1}, {integer,{2329,68},1}, {integer,{2329,68},8}]}}, {record_field, {2330,55}, {atom,{2330,55},parameters}, {record, {2330,68}, 'HashAlgorithm', [{record_field, {2330,85}, {atom,{2330,85},algorithm}, {var,{2330,97},'HashAlgoOid'}}]}}]}}]}], [], [{match, {2332,5}, {var,{2332,5},'HashAlgo'}, {call, {2332,16}, {atom,{2332,16},pkix_hash_type}, [{var,{2332,31},'HashAlgoOid'}]}}, {cons, {2333,5}, {tuple, {2333,6}, [{atom,{2333,7},rsa_padding}, {atom,{2333,20},rsa_pkcs1_pss_padding}]}, {cons, {2334,6}, {tuple, {2334,6}, [{atom,{2334,7},rsa_pss_saltlen},{var,{2334,24},'SaltLen'}]}, {cons, {2335,6}, {tuple, {2335,6}, [{atom,{2335,7},rsa_mgf1_md},{var,{2335,20},'HashAlgo'}]}, {nil,{2335,29}}}}}]}]}, {function, {2337,1}, do_pem_entry_encode,4, [{clause, {2337,1}, [{var,{2337,21},'Asn1Type'}, {var,{2337,31},'Entity'}, {var,{2337,39},'CipherInfo'}, {var,{2337,51},'Password'}], [], [{match, {2338,5}, {var,{2338,5},'Der'}, {call, {2338,11}, {atom,{2338,11},der_encode}, [{var,{2338,22},'Asn1Type'},{var,{2338,32},'Entity'}]}}, {match, {2339,5}, {var,{2339,5},'DecryptDer'}, {call, {2339,18}, {remote, {2339,28}, {atom,{2339,18},pubkey_pem}, {atom,{2339,29},cipher}}, [{var,{2339,36},'Der'}, {var,{2339,41},'CipherInfo'}, {var,{2339,53},'Password'}]}}, {tuple, {2340,5}, [{var,{2340,6},'Asn1Type'}, {var,{2340,16},'DecryptDer'}, {var,{2340,28},'CipherInfo'}]}]}]}, {function, {2342,1}, do_pem_entry_decode,2, [{clause, {2342,1}, [{match, {2342,21}, {tuple, {2342,21}, [{var,{2342,22},'Asn1Type'}, {var,{2342,31},'_'}, {var,{2342,34},'_'}]}, {var,{2342,39},'PemEntry'}}, {var,{2342,49},'Password'}], [], [{match, {2343,5}, {var,{2343,5},'Der'}, {call, {2343,11}, {remote, {2343,21}, {atom,{2343,11},pubkey_pem}, {atom,{2343,22},decipher}}, [{var,{2343,31},'PemEntry'},{var,{2343,41},'Password'}]}}, {call, {2344,5}, {atom,{2344,5},der_decode}, [{var,{2344,16},'Asn1Type'},{var,{2344,26},'Der'}]}]}]}, {function, {2353,1}, exists_duplicate_cert,1, [{clause,{2353,1},[{nil,{2353,23}}],[],[{atom,{2354,5},false}]}, {clause, {2355,1}, [{cons, {2355,23}, {var,{2355,24},'Cert'}, {cons,{2355,30},{var,{2355,30},'Cert'},{var,{2355,37},'_'}}}], [], [{atom,{2356,5},true}]}, {clause, {2357,1}, [{cons,{2357,23},{var,{2357,24},'_'},{var,{2357,28},'Rest'}}], [], [{call, {2358,5}, {atom,{2358,5},exists_duplicate_cert}, [{var,{2358,27},'Rest'}]}]}]}, {function, {2360,1}, path_validation,2, [{clause, {2360,1}, [{nil,{2360,17}}, {record, {2360,21}, path_validation_state, [{record_field, {2360,44}, {atom,{2360,44},working_public_key_algorithm}, {var,{2361,11},'Algorithm'}}, {record_field, {2362,9}, {atom,{2362,9},working_public_key}, {var,{2363,9},'PublicKey'}}, {record_field, {2364,9}, {atom,{2364,9},working_public_key_parameters}, {var,{2365,11},'PublicKeyParams'}}, {record_field, {2366,9}, {atom,{2366,9},valid_policy_tree}, {var,{2366,29},'Tree'}}]}], [], [{match, {2368,5}, {var,{2368,5},'ValidPolicyNodeSet0'}, {call, {2368,27}, {remote, {2368,45}, {atom,{2368,27},pubkey_policy_tree}, {atom,{2368,46},constrained_policy_node_set}}, [{var,{2368,74},'Tree'}]}}, {match, {2369,5}, {var,{2369,5},'CollectQualifiers'}, {'fun', {2369,25}, {clauses, [{clause, {2369,28}, [{match, {2369,29}, {map, {2369,29}, [{map_field_exact, {2369,51}, {atom,{2369,31},expected_policy_set}, {var,{2369,54},'PolicySet'}}]}, {var,{2369,67},'Node'}}], [], [{match, {2370,33}, {var,{2370,33},'QF'}, {'fun', {2370,38}, {clauses, [{clause, {2370,41}, [{var,{2370,42},'Policy'}], [], [{call, {2371,46}, {remote, {2371,64}, {atom,{2371,46},pubkey_policy_tree}, {atom,{2371,65},collect_qualifiers}}, [{var,{2371,84},'Tree'},{var,{2371,90},'Policy'}]}]}]}}}, {match, {2373,33}, {var,{2373,33},'Qualifiers'}, {call, {2373,46}, {remote, {2373,51}, {atom,{2373,46},lists}, {atom,{2373,52},flatmap}}, [{var,{2373,60},'QF'},{var,{2373,64},'PolicySet'}]}}, {map, {2374,37}, {var,{2374,33},'Node'}, [{map_field_assoc, {2374,53}, {atom,{2374,39},qualifier_set}, {var,{2374,56},'Qualifiers'}}]}]}]}}}, {match, {2376,5}, {var,{2376,5},'ValidPolicyNodeSet'}, {call, {2376,27}, {remote,{2376,32},{atom,{2376,27},lists},{atom,{2376,33},map}}, [{var,{2376,37},'CollectQualifiers'}, {var,{2376,56},'ValidPolicyNodeSet0'}]}}, {tuple, {2377,5}, [{atom,{2377,6},ok}, {tuple, {2377,10}, [{tuple, {2377,11}, [{var,{2377,12},'Algorithm'}, {var,{2377,23},'PublicKey'}, {var,{2377,34},'PublicKeyParams'}]}, {var,{2377,52},'ValidPolicyNodeSet'}]}]}]}, {clause, {2379,1}, [{cons,{2379,17},{var,{2379,18},'DerCert'},{var,{2379,28},'Rest'}}, {match, {2379,35}, {var,{2379,35},'ValidationState'}, {record, {2379,53}, path_validation_state, [{record_field, {2380,9}, {atom,{2380,9},max_path_length}, {var,{2380,27},'Len'}}]}}], [[{op,{2380,42},'>=',{var,{2380,38},'Len'},{integer,{2380,45},0}}]], [{'try', {2381,5}, [{call, {2381,9}, {atom,{2381,9},validate}, [{var,{2381,18},'DerCert'}, {record, {2382,19}, {var,{2382,4},'ValidationState'}, path_validation_state, [{record_field, {2382,42}, {atom,{2382,42},last_cert}, {op, {2382,56}, '=:=', {var,{2382,52},'Rest'}, {nil,{2382,59}}}}]}]}], [{clause, {2383,2}, [{match, {2383,2}, {record,{2383,2},path_validation_state,[]}, {var,{2383,29},'NewValidationState'}}], [], [{call, {2384,6}, {atom,{2384,6},path_validation}, [{var,{2384,22},'Rest'},{var,{2384,28},'NewValidationState'}]}]}], [{clause, {2386,2}, [{tuple, {2386,2}, [{atom,{2386,2},throw}, {var,{2386,8},'Reason'}, {var,{2386,8},'_'}]}], [], [{tuple, {2387,6}, [{atom,{2387,7},error},{var,{2387,14},'Reason'}]}]}], []}]}, {clause, {2390,1}, [{match, {2390,17}, {cons,{2390,17},{var,{2390,18},'Cert'},{var,{2390,25},'_'}}, {var,{2390,30},'Path'}}, {match, {2391,3}, {record, {2391,3}, path_validation_state, [{record_field, {2391,26}, {atom,{2391,26},user_state}, {var,{2391,39},'UserState0'}}, {record_field, {2392,12}, {atom,{2392,12},verify_fun}, {var,{2392,25},'VerifyFun'}}]}, {var,{2393,7},'ValidationState'}}], [], [{match, {2394,5}, {var,{2394,5},'Reason'}, {tuple, {2394,14}, [{atom,{2394,15},bad_cert}, {atom,{2394,25},max_path_length_reached}]}}, {match, {2395,5}, {var,{2395,5},'OtpCert'}, {call,{2395,15},{atom,{2395,15},otp_cert},[{var,{2395,24},'Cert'}]}}, {'try', {2397,5}, [{call, {2397,9}, {var,{2397,9},'VerifyFun'}, [{var,{2397,19},'OtpCert'}, {var,{2397,29},'Reason'}, {var,{2397,37},'UserState0'}]}], [{clause, {2398,2}, [{tuple, {2398,2}, [{atom,{2398,3},valid},{var,{2398,10},'UserState'}]}], [], [{call, {2399,6}, {atom,{2399,6},path_validation}, [{var,{2399,22},'Path'}, {record, {2400,23}, {var,{2400,8},'ValidationState'}, path_validation_state, [{record_field, {2401,10}, {atom,{2401,10},max_path_length}, {integer,{2401,28},0}}, {record_field, {2402,10}, {atom,{2402,10},user_state}, {var,{2402,23},'UserState'}}]}]}]}, {clause, {2403,2}, [{tuple,{2403,2},[{atom,{2403,3},fail},{var,{2403,9},'_'}]}], [], [{tuple, {2404,6}, [{atom,{2404,7},error},{var,{2404,14},'Reason'}]}]}], [{clause, {2406,2}, [{tuple, {2406,2}, [{var,{2406,2},'_'},{var,{2406,4},'_'},{var,{2406,4},'_'}]}], [], [{tuple, {2407,6}, [{atom,{2407,7},error},{var,{2407,14},'Reason'}]}]}], []}]}]}, {function, {2410,1}, validate,2, [{clause, {2410,1}, [{var,{2410,10},'Cert'}, {match, {2410,16}, {record, {2410,16}, path_validation_state, [{record_field, {2410,39}, {atom,{2410,39},working_issuer_name}, {var,{2410,61},'Issuer'}}, {record_field, {2411,39}, {atom,{2411,39},working_public_key}, {var,{2411,60},'Key'}}, {record_field, {2412,39}, {atom,{2412,39},working_public_key_parameters}, {var,{2413,43},'KeyParams'}}, {record_field, {2414,39}, {atom,{2414,39},permitted_subtrees}, {var,{2414,60},'Permit'}}, {record_field, {2415,39}, {atom,{2415,39},excluded_subtrees}, {var,{2415,59},'Exclude'}}, {record_field, {2416,39}, {atom,{2416,39},last_cert}, {var,{2416,51},'Last'}}, {record_field, {2417,39}, {atom,{2417,39},user_state}, {var,{2417,52},'UserState0'}}, {record_field, {2418,39}, {atom,{2418,39},verify_fun}, {var,{2418,52},'VerifyFun'}}]}, {var,{2419,7},'ValidationState0'}}], [], [{match, {2421,5}, {var,{2421,5},'OtpCert'}, {call,{2421,15},{atom,{2421,15},otp_cert},[{var,{2421,24},'Cert'}]}}, {match, {2423,5}, {tuple, {2423,5}, [{var,{2423,6},'ValidationState1'},{var,{2423,24},'UserState1'}]}, {call, {2424,2}, {remote, {2424,13}, {atom,{2424,2},pubkey_cert}, {atom,{2424,14},validate_extensions}}, [{var,{2424,34},'OtpCert'}, {var,{2424,43},'ValidationState0'}, {var,{2424,61},'UserState0'}, {var,{2425,6},'VerifyFun'}]}}, {match, {2431,5}, {var,{2431,5},'UserState2'}, {call, {2431,18}, {remote, {2431,29}, {atom,{2431,18},pubkey_cert}, {atom,{2431,30},validate_time}}, [{var,{2431,44},'OtpCert'}, {var,{2431,53},'UserState1'}, {var,{2431,65},'VerifyFun'}]}}, {match, {2433,5}, {var,{2433,5},'UserState3'}, {call, {2433,18}, {remote, {2433,29}, {atom,{2433,18},pubkey_cert}, {atom,{2433,30},validate_issuer}}, [{var,{2433,46},'OtpCert'}, {var,{2433,55},'Issuer'}, {var,{2433,63},'UserState2'}, {var,{2433,75},'VerifyFun'}]}}, {match, {2435,5}, {var,{2435,5},'UserState4'}, {call, {2435,18}, {remote, {2435,29}, {atom,{2435,18},pubkey_cert}, {atom,{2435,30},validate_names}}, [{var,{2435,45},'OtpCert'}, {var,{2435,54},'Permit'}, {var,{2435,62},'Exclude'}, {var,{2435,71},'Last'}, {var,{2436,10},'UserState3'}, {var,{2436,22},'VerifyFun'}]}}, {match, {2438,5}, {var,{2438,5},'UserState5'}, {call, {2438,18}, {remote, {2438,29}, {atom,{2438,18},pubkey_cert}, {atom,{2438,30},validate_signature}}, [{var,{2438,49},'OtpCert'}, {call,{2438,58},{atom,{2438,58},der_cert},[{var,{2438,67},'Cert'}]}, {var,{2439,7},'Key'}, {var,{2439,12},'KeyParams'}, {var,{2439,23},'UserState4'}, {var,{2439,35},'VerifyFun'}]}}, {match, {2440,5}, {var,{2440,5},'UserState'}, {'case', {2440,17}, {var,{2440,22},'Last'}, [{clause, {2441,7}, [{atom,{2441,7},false}], [], [{call, {2442,4}, {remote, {2442,15}, {atom,{2442,4},pubkey_cert}, {atom,{2442,16},verify_fun}}, [{var,{2442,27},'OtpCert'}, {atom,{2442,36},valid}, {var,{2442,43},'UserState5'}, {var,{2442,55},'VerifyFun'}]}]}, {clause, {2443,7}, [{atom,{2443,7},true}], [], [{call, {2444,4}, {remote, {2444,15}, {atom,{2444,4},pubkey_cert}, {atom,{2444,16},verify_fun}}, [{var,{2444,27},'OtpCert'}, {atom,{2444,36},valid_peer}, {var,{2445,13},'UserState5'}, {var,{2445,25},'VerifyFun'}]}]}]}}, {match, {2448,5}, {var,{2448,5},'ValidationState'}, {record, {2449,18}, {var,{2449,2},'ValidationState1'}, path_validation_state, [{record_field, {2449,41}, {atom,{2449,41},user_state}, {var,{2449,54},'UserState'}}]}}, {call, {2451,5}, {remote, {2451,16}, {atom,{2451,5},pubkey_cert}, {atom,{2451,17},prepare_for_next_cert}}, [{var,{2451,39},'OtpCert'},{var,{2451,48},'ValidationState'}]}]}]}, {function, {2453,1}, otp_cert,1, [{clause, {2453,1}, [{var,{2453,10},'Der'}], [[{call,{2453,20},{atom,{2453,20},is_binary},[{var,{2453,30},'Der'}]}]], [{call, {2454,5}, {atom,{2454,5},pkix_decode_cert}, [{var,{2454,22},'Der'},{atom,{2454,27},otp}]}]}, {clause, {2455,1}, [{match, {2455,10}, {record,{2455,10},'OTPCertificate',[]}, {var,{2455,32},'Cert'}}], [], [{var,{2456,5},'Cert'}]}, {clause, {2457,1}, [{record, {2457,10}, cert, [{record_field, {2457,16}, {atom,{2457,16},otp}, {var,{2457,22},'OtpCert'}}]}], [], [{var,{2458,5},'OtpCert'}]}]}, {function, {2460,1}, combined_cert,1, [{clause, {2460,1}, [{match, {2460,15}, {record,{2460,15},'Certificate',[]}, {var,{2460,34},'Cert'}}], [], [{match, {2461,5}, {var,{2461,5},'Der'}, {call, {2461,11}, {atom,{2461,11},der_encode}, [{atom,{2461,22},'Certificate'},{var,{2461,37},'Cert'}]}}, {match, {2462,5}, {var,{2462,5},'Otp'}, {call, {2462,11}, {atom,{2462,11},pkix_decode_cert}, [{var,{2462,28},'Der'},{atom,{2462,33},otp}]}}, {record, {2463,5}, cert, [{record_field,{2463,11},{atom,{2463,11},der},{var,{2463,17},'Der'}}, {record_field, {2463,22}, {atom,{2463,22},otp}, {var,{2463,28},'Otp'}}]}]}]}, {function, {2465,1}, der_cert,1, [{clause, {2465,1}, [{match, {2465,10}, {record,{2465,10},'OTPCertificate',[]}, {var,{2465,32},'Cert'}}], [], [{call, {2466,5}, {atom,{2466,5},pkix_encode}, [{atom,{2466,17},'OTPCertificate'}, {var,{2466,35},'Cert'}, {atom,{2466,41},otp}]}]}, {clause, {2467,1}, [{var,{2467,10},'Der'}], [[{call,{2467,20},{atom,{2467,20},is_binary},[{var,{2467,30},'Der'}]}]], [{var,{2468,5},'Der'}]}, {clause, {2469,1}, [{record, {2469,10}, cert, [{record_field, {2469,16}, {atom,{2469,16},der}, {var,{2469,22},'DerCert'}}]}], [], [{var,{2470,5},'DerCert'}]}]}, {function, {2472,1}, pkix_crls_validate,5, [{clause, {2472,1}, [{var,{2472,20},'_'}, {nil,{2472,23}}, {var,{2472,26},'_'}, {var,{2472,29},'Options'}, {record, {2472,38}, revoke_state, [{record_field, {2472,52}, {atom,{2472,52},details}, {var,{2472,62},'Details'}}]}], [], [{'case', {2473,6}, {call, {2473,11}, {remote, {2473,20}, {atom,{2473,11},proplists}, {atom,{2473,21},get_value}}, [{atom,{2473,31},undetermined_details}, {var,{2473,53},'Options'}, {atom,{2473,62},false}]}, [{clause, {2474,10}, [{atom,{2474,10},false}], [], [{tuple, {2475,14}, [{atom,{2475,15},bad_cert}, {atom,{2475,25},revocation_status_undetermined}]}]}, {clause, {2476,10}, [{atom,{2476,10},true}], [], [{tuple, {2477,14}, [{atom,{2477,15},bad_cert}, {tuple, {2477,25}, [{atom,{2477,26},revocation_status_undetermined}, {tuple, {2477,58}, [{atom,{2477,59},bad_crls}, {call, {2477,69}, {atom,{2477,69},format_details}, [{var,{2477,84},'Details'}]}]}]}]}]}]}]}, {clause, {2479,1}, [{var,{2479,20},'OtpCert'}, {cons, {2479,29}, {tuple, {2479,30}, [{var,{2479,31},'DP'}, {var,{2479,35},'CRL'}, {var,{2479,40},'DeltaCRL'}]}, {var,{2479,52},'Rest'}}, {var,{2479,60},'All'}, {var,{2479,65},'Options'}, {var,{2479,74},'RevokedState0'}], [], [{match, {2480,5}, {var,{2480,5},'CallBack'}, {call, {2480,16}, {remote, {2480,25}, {atom,{2480,16},proplists}, {atom,{2480,26},get_value}}, [{atom,{2480,36},update_crl}, {var,{2480,48},'Options'}, {'fun', {2480,57}, {clauses, [{clause, {2480,60}, [{var,{2480,61},'_'},{var,{2480,64},'CurrCRL'}], [], [{var,{2481,15},'CurrCRL'}]}]}}]}}, {'case', {2483,5}, {call, {2483,10}, {remote, {2483,20}, {atom,{2483,10},pubkey_crl}, {atom,{2483,21},fresh_crl}}, [{var,{2483,31},'DP'}, {var,{2483,35},'CRL'}, {var,{2483,40},'CallBack'}]}, [{clause, {2484,2}, [{tuple,{2484,2},[{atom,{2484,3},fresh},{var,{2484,10},'CRL'}]}], [], [{call, {2485,6}, {atom,{2485,6},do_pkix_crls_validate}, [{var,{2485,28},'OtpCert'}, {cons, {2485,37}, {tuple, {2485,38}, [{var,{2485,39},'DP'}, {var,{2485,43},'CRL'}, {var,{2485,48},'DeltaCRL'}]}, {var,{2485,60},'Rest'}}, {var,{2486,7},'All'}, {var,{2486,12},'Options'}, {var,{2486,21},'RevokedState0'}]}]}, {clause, {2487,2}, [{tuple,{2487,2},[{atom,{2487,3},fresh},{var,{2487,10},'NewCRL'}]}], [], [{match, {2488,6}, {var,{2488,6},'NewAll'}, {cons, {2488,15}, {tuple, {2488,16}, [{var,{2488,17},'DP'}, {var,{2488,21},'NewCRL'}, {var,{2488,29},'DeltaCRL'}]}, {op, {2488,45}, '--', {var,{2488,41},'All'}, {cons, {2488,48}, {tuple, {2488,49}, [{var,{2488,50},'DP'}, {var,{2488,54},'CRL'}, {var,{2488,59},'DeltaCRL'}]}, {nil,{2488,68}}}}}}, {call, {2489,6}, {atom,{2489,6},do_pkix_crls_validate}, [{var,{2489,28},'OtpCert'}, {cons, {2489,37}, {tuple, {2489,38}, [{var,{2489,39},'DP'}, {var,{2489,43},'NewCRL'}, {var,{2489,51},'DeltaCRL'}]}, {var,{2489,63},'Rest'}}, {var,{2490,7},'NewAll'}, {var,{2490,15},'Options'}, {var,{2490,24},'RevokedState0'}]}]}, {clause, {2491,2}, [{atom,{2491,2},no_fresh_crl}], [], [{call, {2492,6}, {atom,{2492,6},pkix_crls_validate}, [{var,{2492,25},'OtpCert'}, {var,{2492,34},'Rest'}, {var,{2492,40},'All'}, {var,{2492,45},'Options'}, {var,{2492,54},'RevokedState0'}]}]}]}]}]}, {function, {2495,1}, do_pkix_crls_validate,5, [{clause, {2495,1}, [{var,{2495,23},'OtpCert'}, {cons, {2495,32}, {tuple, {2495,33}, [{var,{2495,34},'DP'}, {var,{2495,38},'CRL'}, {var,{2495,43},'DeltaCRL'}]}, {var,{2495,55},'Rest'}}, {var,{2495,63},'All'}, {var,{2495,68},'Options'}, {var,{2495,77},'RevokedState0'}], [], [{match, {2496,5}, {var,{2496,5},'OtherDPCRLs'}, {op, {2496,23}, '--', {var,{2496,19},'All'}, {cons, {2496,26}, {tuple, {2496,27}, [{var,{2496,28},'DP'}, {var,{2496,32},'CRL'}, {var,{2496,37},'DeltaCRL'}]}, {nil,{2496,46}}}}}, {'case', {2497,5}, {call, {2497,10}, {remote, {2497,20}, {atom,{2497,10},pubkey_crl}, {atom,{2497,21},validate}}, [{var,{2497,30},'OtpCert'}, {var,{2497,39},'OtherDPCRLs'}, {var,{2497,52},'DP'}, {var,{2497,56},'CRL'}, {var,{2497,61},'DeltaCRL'}, {var,{2497,71},'Options'}, {var,{2497,80},'RevokedState0'}]}, [{clause, {2498,2}, [{tuple, {2498,2}, [{atom,{2498,3},undetermined}, {atom,{2498,17},unrevoked}, {record, {2498,28}, revoke_state, [{record_field, {2498,42}, {atom,{2498,42},details}, {var,{2498,52},'Details'}}]}]}], [[{op,{2498,72},'==',{var,{2498,67},'Rest'},{nil,{2498,75}}}]], [{'case', {2499,13}, {call, {2499,18}, {remote, {2499,27}, {atom,{2499,18},proplists}, {atom,{2499,28},get_value}}, [{atom,{2499,38},undetermined_details}, {var,{2499,60},'Options'}, {atom,{2499,69},false}]}, [{clause, {2500,17}, [{atom,{2500,17},false}], [], [{tuple, {2501,21}, [{atom,{2501,22},bad_cert}, {atom,{2501,32},revocation_status_undetermined}]}]}, {clause, {2502,17}, [{atom,{2502,17},true}], [], [{tuple, {2503,21}, [{atom,{2503,22},bad_cert}, {tuple, {2503,32}, [{atom,{2503,33},revocation_status_undetermined}, {tuple, {2503,65}, [{atom,{2503,66},bad_crls}, {var,{2503,76},'Details'}]}]}]}]}]}]}, {clause, {2505,2}, [{tuple, {2505,2}, [{atom,{2505,3},undetermined}, {atom,{2505,17},unrevoked}, {var,{2505,28},'RevokedState'}]}], [[{op,{2505,52},'=/=',{var,{2505,47},'Rest'},{nil,{2505,56}}}]], [{call, {2506,6}, {atom,{2506,6},pkix_crls_validate}, [{var,{2506,25},'OtpCert'}, {var,{2506,34},'Rest'}, {var,{2506,40},'All'}, {var,{2506,45},'Options'}, {var,{2506,54},'RevokedState'}]}]}, {clause, {2507,2}, [{tuple, {2507,2}, [{atom,{2507,3},finished},{atom,{2507,13},unrevoked}]}], [], [{atom,{2508,6},valid}]}, {clause, {2509,2}, [{tuple, {2509,2}, [{atom,{2509,3},finished},{var,{2509,13},'Status'}]}], [], [{tuple, {2510,6}, [{atom,{2510,7},bad_cert},{var,{2510,17},'Status'}]}]}]}]}]}, {function, {2513,1}, sort_dp_crls,2, [{clause, {2513,1}, [{var,{2513,14},'DpsAndCrls'},{var,{2513,26},'FreshCB'}], [], [{call, {2514,5}, {atom,{2514,5},sort_crls}, [{call, {2514,15}, {remote,{2514,19},{atom,{2514,15},maps},{atom,{2514,20},to_list}}, [{call, {2514,28}, {remote,{2514,33},{atom,{2514,28},lists},{atom,{2514,34},foldl}}, [{'fun',{2514,40},{function,group_dp_crls,2}}, {map,{2515,40},[]}, {var,{2516,40},'DpsAndCrls'}]}]}, {var,{2517,15},'FreshCB'}, {nil,{2517,24}}]}]}]}, {function, {2519,1}, group_dp_crls,2, [{clause, {2519,1}, [{tuple,{2519,15},[{var,{2519,16},'DP'},{var,{2519,19},'CRL'}]}, {var,{2519,25},'M'}], [], [{'case', {2520,5}, {var,{2520,10},'M'}, [{clause, {2521,9}, [{map, {2521,9}, [{map_field_exact, {2521,14}, {var,{2521,11},'DP'}, {var,{2521,17},'CRLs'}}]}], [], [{map, {2521,27}, {var,{2521,26},'M'}, [{map_field_exact, {2521,32}, {var,{2521,29},'DP'}, {cons, {2521,35}, {var,{2521,36},'CRL'}, {var,{2521,40},'CRLs'}}}]}]}, {clause, {2522,9}, [{var,{2522,9},'_'}], [], [{map, {2522,15}, {var,{2522,14},'M'}, [{map_field_assoc, {2522,20}, {var,{2522,17},'DP'}, {cons, {2522,23}, {var,{2522,24},'CRL'}, {nil,{2522,27}}}}]}]}]}]}]}, {function, {2525,1}, sort_crls,3, [{clause, {2525,1}, [{nil,{2525,11}},{var,{2525,15},'_'},{var,{2525,18},'Acc'}], [], [{var,{2526,5},'Acc'}]}, {clause, {2528,1}, [{cons, {2528,11}, {tuple,{2528,12},[{var,{2528,13},'DP'},{var,{2528,17},'AllCRLs'}]}, {var,{2528,28},'Rest'}}, {var,{2528,35},'FreshCB'}, {var,{2528,44},'Acc'}], [], [{match, {2529,5}, {tuple,{2529,5},[{var,{2529,6},'DeltaCRLs'},{var,{2529,17},'CRLs'}]}, {call, {2529,25}, {atom,{2529,25},do_sort_crls}, [{var,{2529,38},'AllCRLs'}]}}, {match, {2530,5}, {var,{2530,5},'DpsAndCRLs'}, {call, {2530,18}, {atom,{2530,18},combine}, [{var,{2530,26},'CRLs'}, {var,{2530,32},'DeltaCRLs'}, {var,{2530,43},'DP'}, {var,{2530,47},'FreshCB'}, {nil,{2530,56}}]}}, {call, {2531,5}, {atom,{2531,5},sort_crls}, [{var,{2531,15},'Rest'}, {var,{2531,21},'FreshCB'}, {op, {2531,41}, '++', {var,{2531,30},'DpsAndCRLs'}, {var,{2531,44},'Acc'}}]}]}]}, {function, {2533,1}, do_sort_crls,1, [{clause, {2533,1}, [{var,{2533,14},'CRLs'}], [], [{call, {2534,5}, {remote,{2534,10},{atom,{2534,5},lists},{atom,{2534,11},partition}}, [{'fun', {2534,21}, {clauses, [{clause, {2534,24}, [{tuple,{2534,25},[{var,{2534,26},'_'},{var,{2534,29},'CRL'}]}], [], [{call, {2535,8}, {remote, {2535,18}, {atom,{2535,8},pubkey_crl}, {atom,{2535,19},is_delta_crl}}, [{var,{2535,32},'CRL'}]}]}]}}, {var,{2536,12},'CRLs'}]}]}]}, {function, {2538,1}, combine,5, [{clause, {2538,1}, [{nil,{2538,9}}, {var,{2538,13},'_'}, {var,{2538,15},'_'}, {var,{2538,17},'_'}, {var,{2538,19},'Acc'}], [], [{var,{2539,5},'Acc'}]}, {clause, {2540,1}, [{cons, {2540,9}, {match, {2540,10}, {tuple,{2540,10},[{var,{2540,11},'_'},{var,{2540,14},'CRL'}]}, {var,{2540,21},'Entry'}}, {var,{2540,29},'CRLs'}}, {var,{2540,36},'DeltaCRLs'}, {var,{2540,47},'DP'}, {var,{2540,51},'FreshCB'}, {var,{2540,60},'Acc'}], [], [{match, {2541,5}, {var,{2541,5},'DeltaCRL'}, {call, {2541,16}, {atom,{2541,16},combine}, [{var,{2541,24},'CRL'},{var,{2541,29},'DeltaCRLs'}]}}, {'case', {2542,5}, {call, {2542,10}, {remote, {2542,20}, {atom,{2542,10},pubkey_crl}, {atom,{2542,21},fresh_crl}}, [{var,{2542,31},'DP'}, {var,{2542,35},'DeltaCRL'}, {var,{2542,45},'FreshCB'}]}, [{clause, {2543,2}, [{atom,{2543,2},no_fresh_crl}], [], [{call, {2544,6}, {atom,{2544,6},combine}, [{var,{2544,14},'CRLs'}, {var,{2544,20},'DeltaCRLs'}, {var,{2544,31},'DP'}, {var,{2544,35},'FreshCB'}, {cons, {2544,44}, {tuple, {2544,45}, [{var,{2544,46},'DP'}, {var,{2544,50},'Entry'}, {tuple, {2544,57}, [{atom,{2544,58},undefined},{atom,{2544,69},undefined}]}]}, {var,{2544,83},'Acc'}}]}]}, {clause, {2545,2}, [{tuple, {2545,2}, [{atom,{2545,3},fresh},{var,{2545,10},'NewDeltaCRL'}]}], [], [{call, {2546,6}, {atom,{2546,6},combine}, [{var,{2546,14},'CRLs'}, {var,{2546,20},'DeltaCRLs'}, {var,{2546,31},'DP'}, {var,{2546,35},'FreshCB'}, {cons, {2546,44}, {tuple, {2546,45}, [{var,{2546,46},'DP'}, {var,{2546,50},'Entry'}, {var,{2546,57},'NewDeltaCRL'}]}, {var,{2546,72},'Acc'}}]}]}]}]}]}, {function, {2549,1}, combine,2, [{clause, {2549,1}, [{var,{2549,9},'CRL'},{var,{2549,14},'DeltaCRLs'}], [], [{match, {2550,5}, {var,{2550,5},'Deltas'}, {call, {2550,14}, {remote,{2550,19},{atom,{2550,14},lists},{atom,{2550,20},filter}}, [{'fun', {2550,27}, {clauses, [{clause, {2550,30}, [{tuple, {2550,31}, [{var,{2550,32},'_'},{var,{2550,34},'DeltaCRL'}]}], [], [{call, {2551,7}, {remote, {2551,17}, {atom,{2551,7},pubkey_crl}, {atom,{2551,18},combines}}, [{var,{2551,27},'CRL'},{var,{2551,32},'DeltaCRL'}]}]}]}}, {var,{2552,11},'DeltaCRLs'}]}}, {'case', {2553,5}, {var,{2553,10},'Deltas'}, [{clause, {2554,2}, [{nil,{2554,2}}], [], [{tuple, {2555,6}, [{atom,{2555,7},undefined},{atom,{2555,18},undefined}]}]}, {clause, {2556,2}, [{cons,{2556,2},{var,{2556,3},'Delta'},{nil,{2556,8}}}], [], [{var,{2557,6},'Delta'}]}, {clause, {2558,2}, [{cons, {2558,2}, {var,{2558,3},'_'}, {cons,{2558,5},{var,{2558,5},'_'},{var,{2558,7},'_'}}}], [], [{match, {2559,6}, {var,{2559,6},'Fun'}, {'fun', {2560,3}, {clauses, [{clause, {2560,6}, [{match, {2560,7}, {tuple, {2560,7}, [{var,{2560,8},'_'}, {record, {2560,11}, 'CertificateList', [{record_field, {2560,30}, {atom,{2560,30},tbsCertList}, {var,{2560,44},'FirstTBSCRL'}}]}]}, {var,{2560,60},'CRL1'}}, {match, {2561,7}, {tuple, {2561,7}, [{var,{2561,8},'_'}, {record, {2561,11}, 'CertificateList', [{record_field, {2561,30}, {atom,{2561,30},tbsCertList}, {var,{2561,44},'SecondTBSCRL'}}]}]}, {var,{2561,61},'CRL2'}}], [], [{match, {2562,4}, {var,{2562,4},'Time1'}, {call, {2562,12}, {remote, {2562,23}, {atom,{2562,12},pubkey_cert}, {atom,{2562,24},time_str_2_gregorian_sec}}, [{record_field, {2563,18}, {var,{2563,7},'FirstTBSCRL'}, 'TBSCertList', {atom,{2563,33},thisUpdate}}]}}, {match, {2564,4}, {var,{2564,4},'Time2'}, {call, {2564,12}, {remote, {2564,23}, {atom,{2564,12},pubkey_cert}, {atom,{2564,24},time_str_2_gregorian_sec}}, [{record_field, {2565,19}, {var,{2565,7},'SecondTBSCRL'}, 'TBSCertList', {atom,{2565,34},thisUpdate}}]}}, {'case', {2566,4}, {op, {2566,15}, '>', {var,{2566,9},'Time1'}, {var,{2566,17},'Time2'}}, [{clause, {2567,10}, [{atom,{2567,10},true}], [], [{var,{2568,5},'CRL1'}]}, {clause, {2569,8}, [{atom,{2569,8},false}], [], [{var,{2570,5},'CRL2'}]}]}]}]}}}, {call, {2573,6}, {remote,{2573,11},{atom,{2573,6},lists},{atom,{2573,12},foldl}}, [{var,{2573,18},'Fun'}, {call,{2573,24},{atom,{2573,24},hd},[{var,{2573,27},'Deltas'}]}, {call, {2573,36}, {atom,{2573,36},tl}, [{var,{2573,39},'Deltas'}]}]}]}]}]}]}, {function, {2576,1}, format_rsa_private_key,1, [{clause, {2576,1}, [{record, {2576,24}, 'RSAPrivateKey', [{record_field, {2576,41}, {atom,{2576,41},modulus}, {var,{2576,51},'N'}}, {record_field, {2576,54}, {atom,{2576,54},publicExponent}, {var,{2576,71},'E'}}, {record_field, {2577,6}, {atom,{2577,6},privateExponent}, {var,{2577,24},'D'}}, {record_field,{2578,6},{atom,{2578,6},prime1},{var,{2578,15},'P1'}}, {record_field, {2578,19}, {atom,{2578,19},prime2}, {var,{2578,28},'P2'}}, {record_field, {2579,6}, {atom,{2579,6},exponent1}, {var,{2579,18},'E1'}}, {record_field, {2579,22}, {atom,{2579,22},exponent2}, {var,{2579,34},'E2'}}, {record_field, {2580,6}, {atom,{2580,6},coefficient}, {var,{2580,20},'C'}}]}], [[{call,{2581,8},{atom,{2581,8},is_integer},[{var,{2581,19},'N'}]}, {call,{2581,23},{atom,{2581,23},is_integer},[{var,{2581,34},'E'}]}, {call,{2581,38},{atom,{2581,38},is_integer},[{var,{2581,49},'D'}]}, {call,{2582,8},{atom,{2582,8},is_integer},[{var,{2582,19},'P1'}]}, {call,{2582,24},{atom,{2582,24},is_integer},[{var,{2582,35},'P2'}]}, {call,{2583,8},{atom,{2583,8},is_integer},[{var,{2583,19},'E1'}]}, {call,{2583,24},{atom,{2583,24},is_integer},[{var,{2583,35},'E2'}]}, {call,{2583,40},{atom,{2583,40},is_integer},[{var,{2583,51},'C'}]}]], [{cons, {2584,4}, {var,{2584,5},'E'}, {cons, {2584,8}, {var,{2584,8},'N'}, {cons, {2584,11}, {var,{2584,11},'D'}, {cons, {2584,14}, {var,{2584,14},'P1'}, {cons, {2584,18}, {var,{2584,18},'P2'}, {cons, {2584,22}, {var,{2584,22},'E1'}, {cons, {2584,26}, {var,{2584,26},'E2'}, {cons,{2584,30},{var,{2584,30},'C'},{nil,{2584,31}}}}}}}}}}]}, {clause, {2586,1}, [{record, {2586,24}, 'RSAPrivateKey', [{record_field, {2586,41}, {atom,{2586,41},modulus}, {var,{2586,51},'N'}}, {record_field, {2586,54}, {atom,{2586,54},publicExponent}, {var,{2586,71},'E'}}, {record_field, {2587,6}, {atom,{2587,6},privateExponent}, {var,{2587,24},'D'}}]}], [[{call,{2587,33},{atom,{2587,33},is_integer},[{var,{2587,44},'N'}]}, {call,{2588,12},{atom,{2588,12},is_integer},[{var,{2588,23},'E'}]}, {call,{2589,12},{atom,{2589,12},is_integer},[{var,{2589,23},'D'}]}]], [{cons, {2590,4}, {var,{2590,5},'E'}, {cons, {2590,8}, {var,{2590,8},'N'}, {cons,{2590,11},{var,{2590,11},'D'},{nil,{2590,12}}}}}]}]}, {function, {2592,1}, ec_generate_key,1, [{clause, {2592,1}, [{var,{2592,17},'Params'}], [], [{match, {2593,5}, {var,{2593,5},'Curve'}, {call, {2593,13}, {atom,{2593,13},ec_curve_spec}, [{var,{2593,27},'Params'}]}}, {match, {2594,5}, {var,{2594,5},'CurveType'}, {call, {2594,17}, {atom,{2594,17},ec_curve_type}, [{var,{2594,31},'Curve'}]}}, {match, {2595,5}, {var,{2595,5},'Term'}, {call, {2595,12}, {remote, {2595,18}, {atom,{2595,12},crypto}, {atom,{2595,19},generate_key}}, [{var,{2595,32},'CurveType'},{var,{2595,43},'Curve'}]}}, {match, {2596,5}, {var,{2596,5},'NormParams'}, {call, {2596,18}, {atom,{2596,18},ec_normalize_params}, [{var,{2596,38},'Params'}]}}, {call, {2597,5}, {atom,{2597,5},ec_key}, [{var,{2597,12},'Term'},{var,{2597,18},'NormParams'}]}]}]}, {function, {2599,1}, ec_normalize_params,1, [{clause, {2599,1}, [{tuple, {2599,21}, [{atom,{2599,22},namedCurve},{var,{2599,34},'Name'}]}], [[{call,{2599,46},{atom,{2599,46},is_atom},[{var,{2599,54},'Name'}]}]], [{tuple, {2600,2}, [{atom,{2600,3},namedCurve}, {call, {2600,15}, {remote, {2600,34}, {atom,{2600,15},pubkey_cert_records}, {atom,{2600,35},namedCurves}}, [{var,{2600,47},'Name'}]}]}]}, {clause, {2601,1}, [{match, {2601,21}, {record,{2601,21},'ECParameters',[]}, {var,{2601,41},'ECParams'}}], [], [{tuple, {2602,2}, [{atom,{2602,3},ecParameters},{var,{2602,17},'ECParams'}]}]}, {clause, {2603,1}, [{var,{2603,21},'Other'}], [], [{var,{2603,31},'Other'}]}]}, {function, {2605,1}, ec_curve_spec,1, [{clause, {2605,1}, [{record, {2605,16}, 'ECParameters', [{record_field, {2605,32}, {atom,{2605,32},fieldID}, {record, {2605,42}, 'FieldID', [{record_field, {2605,53}, {atom,{2605,53},fieldType}, {var,{2605,65},'Type'}}, {record_field, {2606,53}, {atom,{2606,53},parameters}, {var,{2606,66},'Params'}}]}}, {record_field, {2606,75}, {atom,{2606,75},curve}, {var,{2606,83},'PCurve'}}, {record_field, {2606,91}, {atom,{2606,91},base}, {var,{2606,98},'Base'}}, {record_field, {2606,104}, {atom,{2606,104},order}, {var,{2606,112},'Order'}}, {record_field, {2606,119}, {atom,{2606,119},cofactor}, {var,{2606,130},'CoFactor'}}]}], [], [{match, {2607,5}, {var,{2607,5},'Field'}, {call, {2607,13}, {atom,{2607,13},format_field}, [{call, {2607,26}, {remote, {2607,45}, {atom,{2607,26},pubkey_cert_records}, {atom,{2607,46},supportedCurvesTypes}}, [{var,{2607,67},'Type'}]}, {var,{2607,74},'Params'}]}}, {match, {2608,5}, {var,{2608,5},'Curve'}, {tuple, {2608,13}, [{record_field, {2608,20}, {var,{2608,14},'PCurve'}, 'Curve', {atom,{2608,29},a}}, {record_field, {2608,38}, {var,{2608,32},'PCurve'}, 'Curve', {atom,{2608,47},b}}, {atom,{2608,50},none}]}}, {tuple, {2609,5}, [{var,{2609,6},'Field'}, {var,{2609,13},'Curve'}, {var,{2609,20},'Base'}, {var,{2609,26},'Order'}, {var,{2609,33},'CoFactor'}]}]}, {clause, {2610,1}, [{tuple, {2610,15}, [{atom,{2610,16},ecParameters},{var,{2610,30},'ECParams'}]}], [], [{call, {2611,5}, {atom,{2611,5},ec_curve_spec}, [{var,{2611,19},'ECParams'}]}]}, {clause, {2612,1}, [{tuple,{2612,15},[{atom,{2612,16},namedCurve},{var,{2612,28},'OID'}]}], [[{call,{2612,39},{atom,{2612,39},is_tuple},[{var,{2612,48},'OID'}]}, {call, {2612,54}, {atom,{2612,54},is_integer}, [{call, {2612,65}, {atom,{2612,65},element}, [{integer,{2612,73},1},{var,{2612,75},'OID'}]}]}]], [{call, {2613,5}, {atom,{2613,5},ec_curve_spec}, [{tuple, {2613,19}, [{atom,{2613,20},namedCurve}, {call, {2613,33}, {remote, {2613,52}, {atom,{2613,33},pubkey_cert_records}, {atom,{2613,53},namedCurves}}, [{var,{2613,65},'OID'}]}]}]}]}, {clause, {2614,1}, [{tuple, {2614,15}, [{atom,{2614,16},namedCurve}, {match,{2614,28},{atom,{2614,28},x25519},{var,{2614,37},'Name'}}]}], [], [{var,{2615,5},'Name'}]}, {clause, {2616,1}, [{tuple, {2616,15}, [{atom,{2616,16},namedCurve}, {match,{2616,28},{atom,{2616,28},x448},{var,{2616,35},'Name'}}]}], [], [{var,{2617,5},'Name'}]}, {clause, {2618,1}, [{tuple, {2618,15}, [{atom,{2618,16},namedCurve}, {match,{2618,28},{atom,{2618,28},ed25519},{var,{2618,38},'Name'}}]}], [], [{var,{2619,5},'Name'}]}, {clause, {2620,1}, [{tuple, {2620,15}, [{atom,{2620,16},namedCurve}, {match,{2620,28},{atom,{2620,28},ed448},{var,{2620,36},'Name'}}]}], [], [{var,{2621,5},'Name'}]}, {clause, {2622,1}, [{tuple, {2622,15}, [{atom,{2622,16},namedCurve},{var,{2622,28},'Name'}]}], [[{call,{2622,40},{atom,{2622,40},is_atom},[{var,{2622,48},'Name'}]}]], [{var,{2623,5},'Name'}]}]}, {function, {2625,1}, ec_curve_type,1, [{clause,{2625,1},[{atom,{2625,15},ed25519}],[],[{atom,{2626,5},eddsa}]}, {clause,{2627,1},[{atom,{2627,15},ed448}],[],[{atom,{2628,5},eddsa}]}, {clause,{2629,1},[{atom,{2629,15},x25519}],[],[{atom,{2630,5},eddh}]}, {clause,{2631,1},[{atom,{2631,15},x448}],[],[{atom,{2632,5},eddh}]}, {clause,{2633,1},[{var,{2633,15},'_'}],[],[{atom,{2634,5},ecdh}]}]}, {function, {2636,1}, format_field,2, [{clause, {2636,1}, [{match, {2636,14}, {atom,{2636,14},characteristic_two_field}, {var,{2636,41},'Type'}}, {var,{2636,47},'Params0'}], [], [{match, {2637,5}, {record, {2637,5}, 'Characteristic-two', [{record_field,{2638,8},{atom,{2638,8},m},{var,{2638,12},'M'}}, {record_field, {2639,8}, {atom,{2639,8},basis}, {var,{2639,16},'BasisOid'}}, {record_field, {2640,8}, {atom,{2640,8},parameters}, {var,{2640,21},'Params'}}]}, {call, {2640,31}, {atom,{2640,31},der_decode}, [{atom,{2640,42},'Characteristic-two'},{var,{2640,64},'Params0'}]}}, {tuple, {2641,5}, [{var,{2641,6},'Type'}, {var,{2641,12},'M'}, {call, {2641,15}, {atom,{2641,15},field_param_decode}, [{var,{2641,34},'BasisOid'},{var,{2641,44},'Params'}]}]}]}, {clause, {2642,1}, [{atom,{2642,14},prime_field},{var,{2642,27},'Params0'}], [], [{match, {2643,5}, {var,{2643,5},'Prime'}, {call, {2643,13}, {atom,{2643,13},der_decode}, [{atom,{2643,24},'Prime-p'},{var,{2643,35},'Params0'}]}}, {tuple, {2644,5}, [{atom,{2644,6},prime_field},{var,{2644,19},'Prime'}]}]}]}, {function, {2646,1}, field_param_decode,2, [{clause, {2646,1}, [{tuple, {2646,21}, [{integer,{2646,21},1}, {integer,{2646,21},2}, {integer,{2646,21},840}, {integer,{2646,21},10045}, {integer,{2646,21},1}, {integer,{2646,21},2}, {integer,{2646,21},3}, {integer,{2646,21},3}]}, {var,{2646,32},'Params'}], [], [{match, {2647,5}, {record, {2647,5}, 'Pentanomial', [{record_field,{2647,20},{atom,{2647,20},k1},{var,{2647,25},'K1'}}, {record_field,{2647,29},{atom,{2647,29},k2},{var,{2647,34},'K2'}}, {record_field,{2647,38},{atom,{2647,38},k3},{var,{2647,43},'K3'}}]}, {call, {2648,9}, {atom,{2648,9},der_decode}, [{atom,{2648,20},'Pentanomial'},{var,{2648,35},'Params'}]}}, {tuple, {2649,5}, [{atom,{2649,6},ppbasis}, {var,{2649,15},'K1'}, {var,{2649,19},'K2'}, {var,{2649,23},'K3'}]}]}, {clause, {2650,1}, [{tuple, {2650,21}, [{integer,{2650,21},1}, {integer,{2650,21},2}, {integer,{2650,21},840}, {integer,{2650,21},10045}, {integer,{2650,21},1}, {integer,{2650,21},2}, {integer,{2650,21},3}, {integer,{2650,21},2}]}, {var,{2650,32},'Params'}], [], [{match, {2651,5}, {var,{2651,5},'K'}, {call, {2651,9}, {atom,{2651,9},der_decode}, [{atom,{2651,20},'Trinomial'},{var,{2651,33},'Params'}]}}, {tuple,{2652,5},[{atom,{2652,6},tpbasis},{var,{2652,15},'K'}]}]}, {clause, {2653,1}, [{tuple, {2653,21}, [{integer,{2653,21},1}, {integer,{2653,21},2}, {integer,{2653,21},840}, {integer,{2653,21},10045}, {integer,{2653,21},1}, {integer,{2653,21},2}, {integer,{2653,21},3}, {integer,{2653,21},1}]}, {var,{2653,32},'_'}], [], [{atom,{2654,5},onbasis}]}]}, {function, {2656,1}, ec_key,2, [{clause, {2656,1}, [{tuple, {2656,8}, [{var,{2656,9},'PubKey'},{var,{2656,17},'PrivateKey'}]}, {var,{2656,30},'Params'}], [], [{record, {2657,5}, 'ECPrivateKey', [{record_field, {2657,21}, {atom,{2657,21},version}, {integer,{2657,31},1}}, {record_field, {2658,7}, {atom,{2658,7},privateKey}, {var,{2658,20},'PrivateKey'}}, {record_field, {2659,7}, {atom,{2659,7},parameters}, {var,{2659,20},'Params'}}, {record_field, {2660,7}, {atom,{2660,7},publicKey}, {var,{2660,19},'PubKey'}}]}]}]}, {function, {2662,1}, encode_name_for_short_hash,1, [{clause, {2662,1}, [{tuple, {2662,28}, [{atom,{2662,29},rdnSequence},{var,{2662,42},'Attributes0'}]}], [], [{match, {2663,5}, {var,{2663,5},'Attributes'}, {call, {2663,18}, {remote,{2663,23},{atom,{2663,18},lists},{atom,{2663,24},map}}, [{'fun',{2663,28},{function,normalise_attribute,1}}, {var,{2663,55},'Attributes0'}]}}, {match, {2664,5}, {tuple,{2664,5},[{var,{2664,6},'Encoded'},{var,{2664,15},'_'}]}, {call, {2664,20}, {remote, {2664,33}, {atom,{2664,20},'OTP-PUB-KEY'}, {atom,{2664,34},enc_RDNSequence}}, [{var,{2664,52},'Attributes'},{nil,{2664,64}}]}}, {var,{2665,5},'Encoded'}]}]}, {function, {2669,1}, normalise_attribute,1, [{clause, {2669,1}, [{cons, {2669,21}, {match, {2669,22}, {record, {2669,22}, 'AttributeTypeAndValue', [{record_field, {2670,25}, {atom,{2670,25},type}, {var,{2670,32},'_Type'}}, {record_field, {2671,25}, {atom,{2671,25},value}, {var,{2671,33},'Binary'}}]}, {var,{2671,43},'ATV'}}, {nil,{2671,46}}}], [[{call, {2671,54}, {atom,{2671,54},is_binary}, [{var,{2671,64},'Binary'}]}]], [{'case', {2672,5}, {call, {2672,10}, {remote, {2672,29}, {atom,{2672,10},pubkey_cert_records}, {atom,{2672,30},transform}}, [{var,{2672,40},'ATV'},{atom,{2672,45},decode}]}, [{clause, {2673,2}, [{record, {2673,2}, 'AttributeTypeAndValue', [{record_field, {2673,27}, {atom,{2673,27},value}, {var,{2673,35},'Binary'}}]}], [], [{cons,{2675,6},{var,{2675,7},'ATV'},{nil,{2675,10}}}]}, {clause, {2676,2}, [{match, {2676,2}, {var,{2676,2},'DecodedATV'}, {record,{2676,15},'AttributeTypeAndValue',[]}}], [], [{call, {2678,6}, {atom,{2678,6},normalise_attribute}, [{cons, {2678,26}, {var,{2678,27},'DecodedATV'}, {nil,{2678,37}}}]}]}]}]}, {clause, {2680,1}, [{cons, {2680,21}, {match, {2680,22}, {record, {2680,22}, 'AttributeTypeAndValue', [{record_field, {2681,25}, {atom,{2681,25},type}, {var,{2681,32},'_Type'}}, {record_field, {2682,25}, {atom,{2682,25},value}, {tuple, {2682,33}, [{var,{2682,34},'Encoding'},{var,{2682,44},'String'}]}}]}, {var,{2682,55},'ATV'}}, {nil,{2682,58}}}], [[{op, {2684,16}, '=:=', {var,{2684,7},'Encoding'}, {atom,{2684,20},utf8String}}], [{op, {2685,16}, '=:=', {var,{2685,7},'Encoding'}, {atom,{2685,20},printableString}}], [{op, {2686,16}, '=:=', {var,{2686,7},'Encoding'}, {atom,{2686,20},teletexString}}], [{op, {2687,16}, '=:=', {var,{2687,7},'Encoding'}, {atom,{2687,20},ia5String}}]], [{match, {2690,5}, {var,{2690,5},'NewValue'}, {call, {2690,16}, {atom,{2690,16},normalise_attribute_value}, [{var,{2690,42},'String'}]}}, {cons, {2691,5}, {record, {2691,9}, {var,{2691,6},'ATV'}, 'AttributeTypeAndValue', [{record_field, {2691,34}, {atom,{2691,34},value}, {var,{2691,42},'NewValue'}}]}, {nil,{2691,51}}}]}, {clause, {2692,1}, [{cons, {2692,21}, {match, {2692,22}, {record, {2692,22}, 'AttributeTypeAndValue', [{record_field, {2693,25}, {atom,{2693,25},type}, {var,{2693,32},'_Type'}}, {record_field, {2694,25}, {atom,{2694,25},value}, {var,{2694,33},'String'}}]}, {var,{2694,43},'ATV'}}, {nil,{2694,46}}}], [[{call, {2694,54}, {atom,{2694,54},is_list}, [{var,{2694,62},'String'}]}]], [{match, {2697,5}, {var,{2697,5},'NewValue'}, {call, {2697,16}, {atom,{2697,16},normalise_attribute_value}, [{var,{2697,42},'String'}]}}, {cons, {2698,5}, {record, {2698,9}, {var,{2698,6},'ATV'}, 'AttributeTypeAndValue', [{record_field, {2698,34}, {atom,{2698,34},value}, {var,{2698,42},'NewValue'}}]}, {nil,{2698,51}}}]}]}, {function, {2700,1}, normalise_attribute_value,1, [{clause, {2700,1}, [{var,{2700,27},'String'}], [], [{match, {2701,5}, {var,{2701,5},'Converted'}, {call, {2701,17}, {remote, {2701,24}, {atom,{2701,17},unicode}, {atom,{2701,25},characters_to_binary}}, [{var,{2701,46},'String'}]}}, {match, {2702,5}, {var,{2702,5},'NormalisedString'}, {call, {2702,24}, {atom,{2702,24},normalise_string}, [{var,{2702,41},'Converted'}]}}, {match, {2706,5}, {tuple,{2706,5},[{var,{2706,6},'NewBinary'},{var,{2706,17},'_'}]}, {call, {2706,22}, {remote, {2706,35}, {atom,{2706,22},'OTP-PUB-KEY'}, {atom,{2706,36},enc_X520CommonName}}, [{tuple, {2706,57}, [{atom,{2706,58},utf8String},{var,{2706,70},'NormalisedString'}]}, {nil,{2706,89}}]}}, {var,{2707,5},'NewBinary'}]}]}, {function, {2709,1}, normalise_string,1, [{clause, {2709,1}, [{var,{2709,18},'String'}], [], [{match, {2714,5}, {var,{2714,5},'TrimmedLeft'}, {call, {2714,19}, {remote,{2714,21},{atom,{2714,19},re},{atom,{2714,22},replace}}, [{var,{2714,30},'String'}, {string,{2714,38},"^[ \f\n\r\t\v]+"}, {string,{2714,58},[]}, {cons, {2714,62}, {atom,{2714,63},unicode}, {cons,{2714,72},{atom,{2714,72},global},{nil,{2714,78}}}}]}}, {match, {2715,5}, {var,{2715,5},'TrimmedRight'}, {call, {2715,20}, {remote,{2715,22},{atom,{2715,20},re},{atom,{2715,23},replace}}, [{var,{2715,31},'TrimmedLeft'}, {string,{2715,44},"[ \f\n\r\t\v]+$"}, {string,{2715,64},[]}, {cons, {2715,68}, {atom,{2715,69},unicode}, {cons,{2715,78},{atom,{2715,78},global},{nil,{2715,84}}}}]}}, {match, {2717,5}, {var,{2717,5},'Collapsed'}, {call, {2717,17}, {remote,{2717,19},{atom,{2717,17},re},{atom,{2717,20},replace}}, [{var,{2717,28},'TrimmedRight'}, {string,{2717,42},"[ \f\n\r\t\v]+"}, {string,{2717,61}," "}, {cons, {2717,67}, {atom,{2717,68},unicode}, {cons,{2717,77},{atom,{2717,77},global},{nil,{2717,83}}}}]}}, {match, {2719,5}, {var,{2719,5},'Lower'}, {call, {2719,13}, {atom,{2719,13},ascii_to_lower}, [{var,{2719,28},'Collapsed'}]}}, {var,{2721,5},'Lower'}]}]}, {function, {2723,1}, ascii_to_lower,1, [{clause, {2723,1}, [{var,{2723,16},'String'}], [], [{bc, {2726,5}, {bin, {2726,8}, [{bin_element, {2726,11}, {'if', {2726,11}, [{clause, {2726,14}, [], [[{op,{2726,17},'=<',{char,{2726,14},65},{var,{2726,20},'C'}}, {op,{2726,25},'=<',{var,{2726,23},'C'},{char,{2726,28},90}}]], [{op, {2727,21}, '+', {var,{2727,19},'C'}, {op,{2727,27},'-',{char,{2727,24},97},{char,{2727,29},65}}}]}, {clause, {2728,14}, [], [[{atom,{2728,14},true}]], [{var,{2729,19},'C'}]}]}, default,default}]}, [{b_generate, {2732,15}, {bin, {2732,9}, [{bin_element,{2732,11},{var,{2732,11},'C'},default,default}]}, {call, {2732,18}, {atom,{2732,18},iolist_to_binary}, [{var,{2732,35},'String'}]}}]}]}]}, {function, {2736,1}, verify_hostname_extract_fqdn_default,1, [{clause, {2736,1}, [{tuple,{2736,38},[{atom,{2736,39},dns_id},{var,{2736,46},'S'}]}], [], [{var,{2737,5},'S'}]}, {clause, {2738,1}, [{tuple,{2738,38},[{atom,{2738,39},uri_id},{var,{2738,46},'URI'}]}], [], [{match, {2739,5}, {map, {2739,5}, [{map_field_exact, {2739,14}, {atom,{2739,7},scheme}, {string,{2739,17},"https"}}, {map_field_exact, {2739,31}, {atom,{2739,26},host}, {var,{2739,34},'Host'}}]}, {call, {2739,42}, {remote, {2739,52}, {atom,{2739,42},uri_string}, {atom,{2739,53},normalize}}, [{var,{2739,63},'URI'}, {cons,{2739,68},{atom,{2739,69},return_map},{nil,{2739,79}}}]}}, {var,{2740,5},'Host'}]}]}, {function, {2743,1}, verify_hostname_fqnds,2, [{clause, {2743,1}, [{var,{2743,23},'L'},{var,{2743,26},'FqdnFun'}], [], [{lc, {2744,5}, {var,{2744,6},'E'}, [{generate,{2744,14},{var,{2744,11},'E0'},{var,{2744,17},'L'}}, {generate, {2745,6}, {var,{2745,4},'E'}, {cons, {2745,9}, {'try', {2745,10}, [{'case', {2745,14}, {call, {2745,19}, {var,{2745,19},'FqdnFun'}, [{var,{2745,27},'E0'}]}, [{clause, {2746,4}, [{atom,{2746,4},default}], [], [{call, {2746,15}, {atom,{2746,15},verify_hostname_extract_fqdn_default}, [{var,{2746,52},'E0'}]}]}, {clause, {2747,25}, [{atom,{2747,25},undefined}], [], [{atom,{2747,38},undefined}]}, {clause, {2748,4}, [{var,{2748,4},'Other'}], [], [{var,{2748,13},'Other'}]}]}], [], [{clause, {2750,9}, [{tuple, {2750,9}, [{var,{2750,9},'_'}, {var,{2750,11},'_'}, {var,{2750,11},'_'}]}], [], [{atom,{2750,15},undefined}]}], []}, {nil,{2751,6}}}}, {call,{2752,4},{atom,{2752,4},is_list},[{var,{2752,12},'E'}]}, {op,{2753,6},'=/=',{var,{2753,4},'E'},{string,{2753,10},[]}}, {op, {2754,19}, '==', {tuple,{2754,4},[{atom,{2754,5},error},{atom,{2754,11},einval}]}, {call, {2754,22}, {remote, {2754,26}, {atom,{2754,22},inet}, {atom,{2754,27},parse_address}}, [{var,{2754,41},'E'}]}}]}]}]}, {function, {2760,1}, verify_hostname_match_default,2, [{clause, {2760,1}, [{var,{2760,31},'Ref'},{var,{2760,36},'Pres'}], [], [{call, {2761,5}, {atom,{2761,5},verify_hostname_match_default0}, [{call, {2761,36}, {atom,{2761,36},to_lower_ascii}, [{var,{2761,51},'Ref'}]}, {call, {2761,57}, {atom,{2761,57},to_lower_ascii}, [{var,{2761,72},'Pres'}]}]}]}]}, {function, {2763,1}, verify_hostname_match_default0,2, [{clause, {2763,1}, [{match, {2763,32}, {var,{2763,32},'FQDN'}, {cons,{2763,37},{var,{2763,38},'_'},{var,{2763,40},'_'}}}, {tuple,{2763,44},[{atom,{2763,45},cn},{var,{2763,48},'FQDN'}]}], [], [{op, {2764,5}, 'not', {call, {2764,9}, {remote,{2764,14},{atom,{2764,9},lists},{atom,{2764,15},member}}, [{char,{2764,22},42},{var,{2764,26},'FQDN'}]}}]}, {clause, {2765,1}, [{match, {2765,32}, {var,{2765,32},'FQDN'}, {cons,{2765,37},{var,{2765,38},'_'},{var,{2765,40},'_'}}}, {tuple, {2765,44}, [{atom,{2765,45},cn}, {match, {2765,48}, {var,{2765,48},'Name'}, {cons,{2765,53},{var,{2765,54},'_'},{var,{2765,56},'_'}}}]}], [], [{call, {2766,5}, {atom,{2766,5},verify_hostname_match_wildcard}, [{var,{2766,36},'FQDN'},{var,{2766,42},'Name'}]}]}, {clause, {2767,1}, [{tuple,{2767,32},[{atom,{2767,33},dns_id},{var,{2767,40},'R'}]}, {tuple,{2767,44},[{atom,{2767,45},dNSName},{var,{2767,53},'P'}]}], [], [{op,{2768,6},'==',{var,{2768,5},'R'},{var,{2768,8},'P'}}]}, {clause, {2769,1}, [{tuple,{2769,32},[{atom,{2769,33},uri_id},{var,{2769,40},'R'}]}, {tuple, {2769,44}, [{atom,{2769,45},uniformResourceIdentifier},{var,{2769,71},'P'}]}], [], [{op,{2770,6},'==',{var,{2770,5},'R'},{var,{2770,8},'P'}}]}, {clause, {2771,1}, [{tuple,{2771,32},[{atom,{2771,33},ip},{var,{2771,36},'R'}]}, {tuple,{2771,40},[{atom,{2771,41},iPAddress},{var,{2771,51},'P'}]}], [[{op, {2771,70}, '==', {call,{2771,60},{atom,{2771,60},length},[{var,{2771,67},'P'}]}, {integer,{2771,73},4}}]], [{'try', {2773,5}, [{op, {2775,13}, '==', {call,{2774,9},{atom,{2774,9},list_to_tuple},[{var,{2774,23},'P'}]}, {'if', {2775,16}, [{clause, {2775,19}, [], [[{op, {2775,32}, '==', {call, {2775,19}, {atom,{2775,19},tuple_size}, [{var,{2775,30},'R'}]}, {integer,{2775,34},4}}]], [{var,{2775,39},'R'}]}, {clause, {2776,19}, [], [[{call, {2776,19}, {atom,{2776,19},is_list}, [{var,{2776,27},'R'}]}]], [{call, {2776,33}, {atom,{2776,33},ok}, [{call, {2776,36}, {remote, {2776,40}, {atom,{2776,36},inet}, {atom,{2776,41},parse_ipv4strict_address}}, [{var,{2776,66},'R'}]}]}]}]}}], [], [{clause, {2779,9}, [{tuple, {2779,9}, [{var,{2779,9},'_'},{var,{2779,11},'_'},{var,{2779,11},'_'}]}], [], [{atom,{2780,13},false}]}], []}]}, {clause, {2783,1}, [{tuple,{2783,32},[{atom,{2783,33},ip},{var,{2783,36},'R'}]}, {tuple,{2783,40},[{atom,{2783,41},iPAddress},{var,{2783,51},'P'}]}], [[{op, {2783,70}, '==', {call,{2783,60},{atom,{2783,60},length},[{var,{2783,67},'P'}]}, {integer,{2783,73},16}}]], [{'try', {2785,5}, [{op, {2787,13}, '==', {call,{2786,9},{atom,{2786,9},l16_to_tup},[{var,{2786,20},'P'}]}, {'if', {2787,16}, [{clause, {2787,19}, [], [[{op, {2787,32}, '==', {call, {2787,19}, {atom,{2787,19},tuple_size}, [{var,{2787,30},'R'}]}, {integer,{2787,34},8}}]], [{var,{2787,39},'R'}]}, {clause, {2788,19}, [], [[{call, {2788,19}, {atom,{2788,19},is_list}, [{var,{2788,27},'R'}]}]], [{call, {2788,33}, {atom,{2788,33},ok}, [{call, {2788,36}, {remote, {2788,40}, {atom,{2788,36},inet}, {atom,{2788,41},parse_ipv6strict_address}}, [{var,{2788,66},'R'}]}]}]}]}}], [], [{clause, {2791,9}, [{tuple, {2791,9}, [{var,{2791,9},'_'},{var,{2791,11},'_'},{var,{2791,11},'_'}]}], [], [{atom,{2792,13},false}]}], []}]}, {clause, {2794,1}, [{tuple,{2794,32},[{atom,{2794,33},srv_id},{var,{2794,40},'R'}]}, {tuple,{2794,44},[{atom,{2794,45},srvName},{var,{2794,53},'P'}]}], [], [{op,{2795,6},'==',{var,{2795,5},'R'},{var,{2795,8},'P'}}]}, {clause, {2796,1}, [{tuple,{2796,32},[{atom,{2796,33},srv_id},{var,{2796,40},'R'}]}, {tuple, {2796,44}, [{tuple, {2796,46}, [{integer,{2796,46},1}, {integer,{2796,46},3}, {integer,{2796,46},6}, {integer,{2796,46},1}, {integer,{2796,46},4}, {integer,{2796,46},1}, {integer,{2796,46},434}, {integer,{2796,46},2}, {integer,{2796,46},2}, {integer,{2796,46},1}, {integer,{2796,46},37}, {integer,{2796,46},0}]}, {var,{2796,58},'P'}]}], [], [{op,{2797,6},'==',{var,{2797,5},'R'},{var,{2797,8},'P'}}]}, {clause, {2798,1}, [{var,{2798,32},'_'},{var,{2798,35},'_'}], [], [{atom,{2799,5},false}]}]}, {function, {2802,1}, verify_hostname_match_wildcard,2, [{clause, {2802,1}, [{var,{2802,32},'FQDN'},{var,{2802,38},'Name'}], [], [{match, {2803,5}, {cons,{2803,5},{var,{2803,6},'F1'},{var,{2803,9},'Fs'}}, {call, {2803,15}, {remote,{2803,21},{atom,{2803,15},string},{atom,{2803,22},split}}, [{call, {2803,28}, {atom,{2803,28},to_lower_ascii}, [{var,{2803,43},'FQDN'}]}, {string,{2803,50},"."}]}}, {match, {2804,5}, {cons,{2804,5},{var,{2804,6},'N1'},{var,{2804,9},'Ns'}}, {call, {2804,15}, {remote,{2804,21},{atom,{2804,15},string},{atom,{2804,22},split}}, [{call, {2804,28}, {atom,{2804,28},to_lower_ascii}, [{var,{2804,43},'Name'}]}, {string,{2804,50},"."}]}}, {op, {2805,23}, 'andalso', {call, {2805,5}, {atom,{2805,5},match_wild}, [{var,{2805,16},'F1'},{var,{2805,19},'N1'}]}, {op,{2805,33},'==',{var,{2805,31},'Fs'},{var,{2805,35},'Ns'}}}]}]}, {function, {2808,1}, ok,1, [{clause, {2808,1}, [{tuple,{2808,4},[{atom,{2808,5},ok},{var,{2808,8},'X'}]}], [], [{var,{2808,15},'X'}]}]}, {function, {2810,1}, l16_to_tup,1, [{clause, {2810,1}, [{var,{2810,12},'L'}], [], [{call, {2810,18}, {atom,{2810,18},list_to_tuple}, [{call, {2810,32}, {atom,{2810,32},l16_to_tup}, [{var,{2810,43},'L'},{nil,{2810,46}}]}]}]}]}, {function, {2812,1}, l16_to_tup,2, [{clause, {2812,1}, [{cons, {2812,12}, {var,{2812,13},'A'}, {cons,{2812,15},{var,{2812,15},'B'},{var,{2812,17},'T'}}}, {var,{2812,21},'Acc'}], [], [{call, {2812,29}, {atom,{2812,29},l16_to_tup}, [{var,{2812,40},'T'}, {cons, {2812,43}, {op, {2812,54}, 'bor', {op,{2812,47},'bsl',{var,{2812,45},'A'},{integer,{2812,51},8}}, {var,{2812,58},'B'}}, {var,{2812,62},'Acc'}}]}]}, {clause, {2813,1}, [{nil,{2813,12}},{var,{2813,16},'Acc'}], [], [{call, {2813,24}, {remote,{2813,29},{atom,{2813,24},lists},{atom,{2813,30},reverse}}, [{var,{2813,38},'Acc'}]}]}]}, {function, {2815,1}, match_wild,2, [{clause, {2815,1}, [{var,{2815,12},'A'}, {cons,{2815,19},{char,{2815,20},42},{var,{2815,23},'B'}}], [], [{call, {2815,30}, {atom,{2815,30},match_wild_suffixes}, [{var,{2815,50},'A'},{var,{2815,53},'B'}]}]}, {clause, {2816,1}, [{cons,{2816,12},{var,{2816,13},'C'},{var,{2816,15},'A'}}, {cons,{2816,19},{var,{2816,21},'C'},{var,{2816,23},'B'}}], [], [{call, {2816,30}, {atom,{2816,30},match_wild}, [{var,{2816,41},'A'},{var,{2816,44},'B'}]}]}, {clause, {2817,1}, [{nil,{2817,12}},{nil,{2817,23}}], [], [{atom,{2817,30},true}]}, {clause, {2818,1}, [{var,{2818,12},'_'},{var,{2818,24},'_'}], [], [{atom,{2818,30},false}]}]}, {function, {2821,1}, match_wild_suffixes,2, [{clause, {2821,1}, [{var,{2821,21},'A'},{var,{2821,24},'B'}], [], [{call, {2821,30}, {atom,{2821,30},match_wild_sfx}, [{call, {2821,45}, {remote,{2821,50},{atom,{2821,45},lists},{atom,{2821,51},reverse}}, [{var,{2821,59},'A'}]}, {call, {2821,63}, {remote,{2821,68},{atom,{2821,63},lists},{atom,{2821,69},reverse}}, [{var,{2821,77},'B'}]}]}]}]}, {function, {2823,1}, match_wild_sfx,2, [{clause, {2823,1}, [{cons,{2823,16},{char,{2823,17},42},{var,{2823,20},'_'}}, {var,{2823,29},'_'}], [], [{atom,{2823,35},false}]}, {clause, {2824,1}, [{var,{2824,16},'_'}, {cons,{2824,24},{char,{2824,25},42},{var,{2824,28},'_'}}], [], [{atom,{2824,35},false}]}, {clause, {2825,1}, [{cons,{2825,16},{var,{2825,17},'A'},{var,{2825,19},'Ar'}}, {cons,{2825,24},{var,{2825,25},'A'},{var,{2825,27},'Br'}}], [], [{call, {2825,35}, {atom,{2825,35},match_wild_sfx}, [{var,{2825,50},'Ar'},{var,{2825,54},'Br'}]}]}, {clause, {2826,1}, [{var,{2826,16},'Ar'},{nil,{2826,28}}], [], [{op, {2826,35}, 'not', {call, {2826,39}, {remote,{2826,44},{atom,{2826,39},lists},{atom,{2826,45},member}}, [{char,{2826,52},42},{var,{2826,56},'Ar'}]}}]}, {clause, {2827,1}, [{var,{2827,16},'_'},{var,{2827,29},'_'}], [], [{atom,{2827,35},false}]}]}, {function, {2830,1}, verify_hostname_match_loop,5, [{clause, {2830,1}, [{var,{2830,28},'Refs0'}, {var,{2830,35},'Pres0'}, {atom,{2830,42},undefined}, {var,{2830,53},'FailCB'}, {var,{2830,61},'Cert'}], [], [{match, {2831,5}, {var,{2831,5},'Pres'}, {call, {2831,12}, {remote,{2831,17},{atom,{2831,12},lists},{atom,{2831,18},map}}, [{'fun',{2831,22},{function,to_lower_ascii,1}}, {var,{2831,44},'Pres0'}]}}, {match, {2832,5}, {var,{2832,5},'Refs'}, {call, {2832,12}, {remote,{2832,17},{atom,{2832,12},lists},{atom,{2832,18},map}}, [{'fun',{2832,22},{function,to_lower_ascii,1}}, {var,{2832,44},'Refs0'}]}}, {call, {2833,5}, {remote,{2833,10},{atom,{2833,5},lists},{atom,{2833,11},any}}, [{'fun', {2834,7}, {clauses, [{clause, {2834,10}, [{var,{2834,11},'R'}], [], [{call, {2835,8}, {remote,{2835,13},{atom,{2835,8},lists},{atom,{2835,14},any}}, [{'fun', {2835,18}, {clauses, [{clause, {2835,21}, [{var,{2835,22},'P'}], [], [{op, {2836,68}, 'orelse', {call, {2836,33}, {atom,{2836,33},verify_hostname_match_default}, [{var,{2836,63},'R'},{var,{2836,65},'P'}]}, {call, {2836,75}, {var,{2836,75},'FailCB'}, [{var,{2836,82},'Cert'}]}}]}]}}, {var,{2837,9},'Pres'}]}]}]}}, {var,{2838,12},'Refs'}]}]}, {clause, {2839,1}, [{var,{2839,28},'Refs'}, {var,{2839,34},'Pres'}, {var,{2839,40},'MatchFun'}, {var,{2839,50},'FailCB'}, {var,{2839,58},'Cert'}], [], [{call, {2840,5}, {remote,{2840,10},{atom,{2840,5},lists},{atom,{2840,11},any}}, [{'fun', {2841,7}, {clauses, [{clause, {2841,10}, [{var,{2841,11},'R'}], [], [{call, {2842,8}, {remote,{2842,13},{atom,{2842,8},lists},{atom,{2842,14},any}}, [{'fun', {2842,18}, {clauses, [{clause, {2842,21}, [{var,{2842,22},'P'}], [], [{op, {2846,11}, 'orelse', {'case', {2843,6}, {call, {2843,11}, {var,{2843,11},'MatchFun'}, [{var,{2843,20},'R'},{var,{2843,22},'P'}]}, [{clause, {2844,10}, [{atom,{2844,10},default}], [], [{call, {2844,21}, {atom,{2844,21},verify_hostname_match_default}, [{var,{2844,51},'R'},{var,{2844,53},'P'}]}]}, {clause, {2845,10}, [{var,{2845,10},'Bool'}], [], [{var,{2845,18},'Bool'}]}]}, {call, {2846,18}, {var,{2846,18},'FailCB'}, [{var,{2846,25},'Cert'}]}}]}]}}, {var,{2848,4},'Pres'}]}]}]}}, {var,{2850,7},'Refs'}]}]}]}, {function, {2853,1}, to_lower_ascii,1, [{clause, {2853,1}, [{match, {2853,16}, {tuple,{2853,16},[{atom,{2853,17},ip},{var,{2853,20},'_'}]}, {var,{2853,23},'X'}}], [], [{var,{2853,29},'X'}]}, {clause, {2854,1}, [{match, {2854,16}, {tuple,{2854,16},[{atom,{2854,17},iPAddress},{var,{2854,27},'_'}]}, {var,{2854,30},'X'}}], [], [{var,{2854,36},'X'}]}, {clause, {2855,1}, [{var,{2855,16},'S'}], [[{call,{2855,24},{atom,{2855,24},is_list},[{var,{2855,32},'S'}]}]], [{call, {2855,38}, {remote,{2855,43},{atom,{2855,38},lists},{atom,{2855,44},map}}, [{'fun',{2855,48},{function,to_lower_ascii,1}}, {var,{2855,70},'S'}]}]}, {clause, {2856,1}, [{tuple,{2856,16},[{var,{2856,17},'T'},{var,{2856,19},'S'}]}], [], [{tuple, {2856,26}, [{var,{2856,27},'T'}, {call, {2856,30}, {atom,{2856,30},to_lower_ascii}, [{var,{2856,45},'S'}]}]}]}, {clause, {2857,1}, [{var,{2857,16},'C'}], [[{op,{2857,27},'=<',{char,{2857,24},65},{var,{2857,30},'C'}}, {op,{2857,34},'=<',{var,{2857,32},'C'},{char,{2857,37},90}}]], [{op, {2857,45}, '+', {var,{2857,43},'C'}, {op,{2857,50},'-',{char,{2857,48},97},{char,{2857,51},65}}}]}, {clause,{2858,1},[{var,{2858,16},'C'}],[],[{var,{2858,22},'C'}]}]}, {function, {2860,1}, to_string,1, [{clause, {2860,1}, [{var,{2860,11},'S'}], [[{call,{2860,19},{atom,{2860,19},is_list},[{var,{2860,27},'S'}]}]], [{var,{2860,33},'S'}]}, {clause, {2861,1}, [{var,{2861,11},'B'}], [[{call,{2861,19},{atom,{2861,19},is_binary},[{var,{2861,29},'B'}]}]], [{call, {2861,35}, {atom,{2861,35},binary_to_list}, [{var,{2861,50},'B'}]}]}, {clause,{2862,1},[{var,{2862,11},'X'}],[],[{var,{2862,17},'X'}]}]}, {function, {2864,1}, format_details,1, [{clause, {2864,1}, [{nil,{2864,16}}], [], [{atom,{2865,5},no_relevant_crls}]}, {clause, {2866,1}, [{var,{2866,16},'Details'}], [], [{var,{2867,5},'Details'}]}]}, {function, {2869,1}, subject_public_key_info,2, [{clause, {2869,1}, [{var,{2869,25},'Alg'},{var,{2869,30},'PubKey'}], [], [{record, {2870,5}, 'OTPSubjectPublicKeyInfo', [{record_field, {2870,32}, {atom,{2870,32},algorithm}, {var,{2870,44},'Alg'}}, {record_field, {2870,49}, {atom,{2870,49},subjectPublicKey}, {var,{2870,68},'PubKey'}}]}]}]}, {function, {2877,1}, handle_trace,3, [{clause, {2877,1}, [{atom,{2877,14},crt}, {tuple, {2878,14}, [{atom,{2878,15},call}, {tuple, {2878,21}, [{atom,{2878,23},public_key}, {atom,{2878,31},pkix_decode_cert}, {cons, {2878,49}, {var,{2878,50},'Cert'}, {cons,{2878,56},{var,{2878,56},'_Type'},{nil,{2878,61}}}}]}]}, {var,{2878,66},'Stack'}], [], [{tuple, {2879,5}, [{call, {2879,6}, {remote,{2879,12},{atom,{2879,6},io_lib},{atom,{2879,13},format}}, [{string,{2879,20},"Cert = ~W"}, {cons, {2879,33}, {var,{2879,34},'Cert'}, {cons,{2879,40},{integer,{2879,40},5},{nil,{2879,41}}}}]}, {var,{2879,45},'Stack'}]}]}, {clause, {2881,1}, [{atom,{2881,14},csp}, {tuple, {2882,14}, [{atom,{2882,15},call}, {tuple, {2882,21}, [{atom,{2882,23},public_key}, {atom,{2882,31},pkix_ocsp_validate}, {cons, {2882,51}, {var,{2882,52},'Cert'}, {cons, {2882,58}, {var,{2882,58},'IssuerCert'}, {var,{2882,71},'_'}}}]}]}, {var,{2882,77},'Stack'}], [], [{tuple, {2883,5}, [{call, {2883,6}, {remote,{2883,12},{atom,{2883,6},io_lib},{atom,{2883,13},format}}, [{string, {2883,20}, "#2 OCSP validation started~nCert = ~W IssuerCert = ~W"}, {cons, {2884,20}, {var,{2884,21},'Cert'}, {cons, {2884,27}, {integer,{2884,27},7}, {cons, {2884,30}, {var,{2884,30},'IssuerCert'}, {cons,{2884,42},{integer,{2884,42},7},{nil,{2884,43}}}}}}]}, {var,{2884,47},'Stack'}]}]}, {clause, {2888,1}, [{atom,{2888,14},csp}, {tuple, {2889,14}, [{atom,{2889,15},call}, {tuple, {2889,21}, [{atom,{2889,23},public_key}, {atom,{2889,31},otp_cert}, {cons,{2889,41},{var,{2889,42},'Cert'},{nil,{2889,46}}}]}]}, {var,{2889,51},'Stack'}], [], [{tuple, {2890,5}, [{call, {2890,6}, {remote,{2890,12},{atom,{2890,6},io_lib},{atom,{2890,13},format}}, [{string,{2890,20},"Cert = ~W"}, {cons, {2890,33}, {var,{2890,34},'Cert'}, {cons,{2890,40},{integer,{2890,40},5},{nil,{2890,41}}}}]}, {var,{2890,45},'Stack'}]}]}, {clause, {2892,1}, [{atom,{2892,14},csp}, {tuple, {2893,14}, [{atom,{2893,15},return_from}, {tuple, {2893,28}, [{atom,{2893,30},public_key}, {atom,{2893,38},pkix_ocsp_validate}, {integer,{2893,58},5}]}, {var,{2893,62},'Return'}]}, {var,{2894,14},'Stack'}], [], [{tuple, {2895,5}, [{call, {2895,6}, {remote,{2895,12},{atom,{2895,6},io_lib},{atom,{2895,13},format}}, [{string,{2895,20},"#2 OCSP validation result = ~p"}, {cons,{2895,54},{var,{2895,55},'Return'},{nil,{2895,61}}}]}, {var,{2895,65},'Stack'}]}]}]}, {eof,{2896,1}}]}, [{rebar_xref,find_function_source,4, [{file,"src/rebar_xref.erl"},{line,289}]}, {rebar_xref,format_mfa_source,1,[{file,"src/rebar_xref.erl"},{line,257}]}, {rebar_xref,display_xref_result,2,[{file,"src/rebar_xref.erl"},{line,225}]}, {lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]}, {rebar_xref,run_xref_check,2,[{file,"src/rebar_xref.erl"},{line,136}]}, {lists,foldl,3,[{file,"lists.erl"},{line,2146}]}, {rebar_xref,xref_checks,1,[{file,"src/rebar_xref.erl"},{line,130}]}, {rebar_xref,xref,2,[{file,"src/rebar_xref.erl"},{line,81}]}]}} gmake: *** [Makefile:7: src] Error 1 *** Error code 2 Stop. make[1]: stopped in /usr/pkgsrc/databases/erlang-p1_mysql *** Error code 1 Stop. make: stopped in /usr/pkgsrc/databases/erlang-p1_mysql