=> 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