blob: f88f542d180b84d0eade0c8a6e0e5c4124e84415 [file] [log] [blame]
/*
* Copyright(c) 2019 Free Software Foundation, Inc.
*
* This file is part of libtasn1.
*
* Libtasn1 is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Libtasn1 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with libtasn1. If not, see <https://www.gnu.org/licenses/>.
*
* This fuzzer is testing arbitrary DER input data with GnuTLS's ASN.1 definition (lib/pkix.asn).
* So, any issues found here likely have a real world impact on every software using libgnutls.
*/
#include <config.h>
#include <assert.h> // assert
#include <stdlib.h> // malloc, free
#include <string.h> // strcmp, memcpy
#include "libtasn1.h"
#include "fuzzer.h"
/*
* This is the ASN.1 definition array used by GnuTLS.
* It is created from lib/pkix.asn over at the GnuTLS project.
*/
static const asn1_static_node pkix_asn1_tab[] = {
{"PKIX1", 536875024, NULL},
{NULL, 1073741836, NULL},
{"PrivateKeyUsagePeriod", 1610612741, NULL},
{"notBefore", 1610637349, NULL},
{NULL, 4104, "0"},
{"notAfter", 536895525, NULL},
{NULL, 4104, "1"},
{"AuthorityKeyIdentifier", 1610612741, NULL},
{"keyIdentifier", 1610637319, NULL},
{NULL, 4104, "0"},
{"authorityCertIssuer", 1610637314, "GeneralNames"},
{NULL, 4104, "1"},
{"authorityCertSerialNumber", 536895490, "CertificateSerialNumber"},
{NULL, 4104, "2"},
{"SubjectKeyIdentifier", 1073741831, NULL},
{"KeyUsage", 1073741830, NULL},
{"DirectoryString", 1610612754, NULL},
{"teletexString", 1612709918, NULL},
{"MAX", 524298, "1"},
{"printableString", 1612709919, NULL},
{"MAX", 524298, "1"},
{"universalString", 1612709920, NULL},
{"MAX", 524298, "1"},
{"utf8String", 1612709922, NULL},
{"MAX", 524298, "1"},
{"bmpString", 1612709921, NULL},
{"MAX", 524298, "1"},
{"ia5String", 538968093, NULL},
{"MAX", 524298, "1"},
{"SubjectAltName", 1073741826, "GeneralNames"},
{"GeneralNames", 1612709899, NULL},
{"MAX", 1074266122, "1"},
{NULL, 2, "GeneralName"},
{"GeneralName", 1610612754, NULL},
{"otherName", 1610620930, "AnotherName"},
{NULL, 4104, "0"},
{"rfc822Name", 1610620957, NULL},
{NULL, 4104, "1"},
{"dNSName", 1610620957, NULL},
{NULL, 4104, "2"},
{"x400Address", 1610620941, NULL},
{NULL, 4104, "3"},
{"directoryName", 1610620939, NULL},
{NULL, 1073743880, "4"},
{NULL, 2, "RelativeDistinguishedName"},
{"ediPartyName", 1610620941, NULL},
{NULL, 4104, "5"},
{"uniformResourceIdentifier", 1610620957, NULL},
{NULL, 4104, "6"},
{"iPAddress", 1610620935, NULL},
{NULL, 4104, "7"},
{"registeredID", 536879116, NULL},
{NULL, 4104, "8"},
{"AnotherName", 1610612741, NULL},
{"type-id", 1073741836, NULL},
{"value", 541073421, NULL},
{NULL, 1073743880, "0"},
{"type-id", 1, NULL},
{"IssuerAltName", 1073741826, "GeneralNames"},
{"BasicConstraints", 1610612741, NULL},
{"cA", 1610645508, NULL},
{NULL, 131081, NULL},
{"pathLenConstraint", 537411587, NULL},
{"0", 10, "MAX"},
{"CRLDistributionPoints", 1612709899, NULL},
{"MAX", 1074266122, "1"},
{NULL, 2, "DistributionPoint"},
{"DistributionPoint", 1610612741, NULL},
{"distributionPoint", 1610637314, "DistributionPointName"},
{NULL, 2056, "0"},
{"reasons", 1610637314, "ReasonFlags"},
{NULL, 4104, "1"},
{"cRLIssuer", 536895490, "GeneralNames"},
{NULL, 4104, "2"},
{"DistributionPointName", 1610612754, NULL},
{"fullName", 1610620930, "GeneralNames"},
{NULL, 4104, "0"},
{"nameRelativeToCRLIssuer", 536879106, "RelativeDistinguishedName"},
{NULL, 4104, "1"},
{"ReasonFlags", 1073741830, NULL},
{"ExtKeyUsageSyntax", 1612709899, NULL},
{"MAX", 1074266122, "1"},
{NULL, 12, NULL},
{"AuthorityInfoAccessSyntax", 1612709899, NULL},
{"MAX", 1074266122, "1"},
{NULL, 2, "AccessDescription"},
{"AccessDescription", 1610612741, NULL},
{"accessMethod", 1073741836, NULL},
{"accessLocation", 2, "GeneralName"},
{"Attribute", 1610612741, NULL},
{"type", 1073741836, NULL},
{"values", 536870927, NULL},
{NULL, 13, NULL},
{"AttributeTypeAndValue", 1610612741, NULL},
{"type", 1073741836, NULL},
{"value", 13, NULL},
{"Name", 1610612754, NULL},
{"rdnSequence", 536870923, NULL},
{NULL, 2, "RelativeDistinguishedName"},
{"DistinguishedName", 1610612747, NULL},
{NULL, 2, "RelativeDistinguishedName"},
{"RelativeDistinguishedName", 1612709903, NULL},
{"MAX", 1074266122, "1"},
{NULL, 2, "AttributeTypeAndValue"},
{"Certificate", 1610612741, NULL},
{"tbsCertificate", 1073741826, "TBSCertificate"},
{"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"signature", 6, NULL},
{"TBSCertificate", 1610612741, NULL},
{"version", 1610653699, NULL},
{NULL, 1073741833, "0"},
{NULL, 2056, "0"},
{"serialNumber", 1073741826, "CertificateSerialNumber"},
{"signature", 1073741826, "AlgorithmIdentifier"},
{"issuer", 1073741826, "Name"},
{"validity", 1073741826, "Validity"},
{"subject", 1073741826, "Name"},
{"subjectPublicKeyInfo", 1073741826, "SubjectPublicKeyInfo"},
{"issuerUniqueID", 1610637314, "UniqueIdentifier"},
{NULL, 4104, "1"},
{"subjectUniqueID", 1610637314, "UniqueIdentifier"},
{NULL, 4104, "2"},
{"extensions", 536895490, "Extensions"},
{NULL, 2056, "3"},
{"CertificateSerialNumber", 1073741827, NULL},
{"Validity", 1610612741, NULL},
{"notBefore", 1073741826, "Time"},
{"notAfter", 2, "Time"},
{"Time", 1610612754, NULL},
{"utcTime", 1073741860, NULL},
{"generalTime", 37, NULL},
{"UniqueIdentifier", 1073741830, NULL},
{"SubjectPublicKeyInfo", 1610612741, NULL},
{"algorithm", 1073741826, "AlgorithmIdentifier"},
{"subjectPublicKey", 6, NULL},
{"Extensions", 1612709899, NULL},
{"MAX", 1074266122, "1"},
{NULL, 2, "Extension"},
{"Extension", 1610612741, NULL},
{"extnID", 1073741836, NULL},
{"critical", 1610645508, NULL},
{NULL, 131081, NULL},
{"extnValue", 7, NULL},
{"CertificateList", 1610612741, NULL},
{"tbsCertList", 1073741826, "TBSCertList"},
{"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"signature", 6, NULL},
{"TBSCertList", 1610612741, NULL},
{"version", 1073758211, NULL},
{"signature", 1073741826, "AlgorithmIdentifier"},
{"issuer", 1073741826, "Name"},
{"thisUpdate", 1073741826, "Time"},
{"nextUpdate", 1073758210, "Time"},
{"revokedCertificates", 1610629131, NULL},
{NULL, 536870917, NULL},
{"userCertificate", 1073741826, "CertificateSerialNumber"},
{"revocationDate", 1073741826, "Time"},
{"crlEntryExtensions", 16386, "Extensions"},
{"crlExtensions", 536895490, "Extensions"},
{NULL, 2056, "0"},
{"AlgorithmIdentifier", 1610612741, NULL},
{"algorithm", 1073741836, NULL},
{"parameters", 541081613, NULL},
{"algorithm", 1, NULL},
{"Dss-Sig-Value", 1610612741, NULL},
{"r", 1073741827, NULL},
{"s", 3, NULL},
{"Dss-Parms", 1610612741, NULL},
{"p", 1073741827, NULL},
{"q", 1073741827, NULL},
{"g", 3, NULL},
{"pkcs-7-ContentInfo", 1610612741, NULL},
{"contentType", 1073741836, NULL},
{"content", 541073421, NULL},
{NULL, 1073743880, "0"},
{"contentType", 1, NULL},
{"pkcs-7-DigestInfo", 1610612741, NULL},
{"digestAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"digest", 7, NULL},
{"pkcs-7-SignedData", 1610612741, NULL},
{"version", 1073741827, NULL},
{"digestAlgorithms", 1073741826, "pkcs-7-DigestAlgorithmIdentifiers"},
{"encapContentInfo", 1073741826, "pkcs-7-EncapsulatedContentInfo"},
{"certificates", 1610637314, "pkcs-7-CertificateSet"},
{NULL, 4104, "0"},
{"crls", 1610637314, "pkcs-7-CertificateRevocationLists"},
{NULL, 4104, "1"},
{"signerInfos", 2, "pkcs-7-SignerInfos"},
{"pkcs-7-DigestAlgorithmIdentifiers", 1610612751, NULL},
{NULL, 2, "AlgorithmIdentifier"},
{"pkcs-7-EncapsulatedContentInfo", 1610612741, NULL},
{"eContentType", 1073741836, NULL},
{"eContent", 536895501, NULL},
{NULL, 2056, "0"},
{"pkcs-7-CertificateRevocationLists", 1610612751, NULL},
{NULL, 13, NULL},
{"pkcs-7-CertificateChoices", 1610612754, NULL},
{"certificate", 13, NULL},
{"pkcs-7-CertificateSet", 1610612751, NULL},
{NULL, 2, "pkcs-7-CertificateChoices"},
{"IssuerAndSerialNumber", 1610612741, NULL},
{"issuer", 1073741826, "Name"},
{"serialNumber", 2, "CertificateSerialNumber"},
{"pkcs-7-SignerInfo", 1610612741, NULL},
{"version", 1073741827, NULL},
{"sid", 1073741826, "SignerIdentifier"},
{"digestAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"signedAttrs", 1610637314, "SignedAttributes"},
{NULL, 4104, "0"},
{"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"signature", 1073741831, NULL},
{"unsignedAttrs", 536895490, "SignedAttributes"},
{NULL, 4104, "1"},
{"SignedAttributes", 1612709903, NULL},
{"MAX", 1074266122, "1"},
{NULL, 2, "Attribute"},
{"SignerIdentifier", 1610612754, NULL},
{"issuerAndSerialNumber", 1073741826, "IssuerAndSerialNumber"},
{"subjectKeyIdentifier", 536879111, NULL},
{NULL, 4104, "0"},
{"pkcs-7-SignerInfos", 1610612751, NULL},
{NULL, 2, "pkcs-7-SignerInfo"},
{"pkcs-10-CertificationRequestInfo", 1610612741, NULL},
{"version", 1073741827, NULL},
{"subject", 1073741826, "Name"},
{"subjectPKInfo", 1073741826, "SubjectPublicKeyInfo"},
{"attributes", 536879106, "Attributes"},
{NULL, 4104, "0"},
{"Attributes", 1610612751, NULL},
{NULL, 2, "Attribute"},
{"pkcs-10-CertificationRequest", 1610612741, NULL},
{"certificationRequestInfo", 1073741826,
"pkcs-10-CertificationRequestInfo"},
{"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"signature", 6, NULL},
{"pkcs-9-at-challengePassword", 1879048204, NULL},
{"iso", 1073741825, "1"},
{"member-body", 1073741825, "2"},
{"us", 1073741825, "840"},
{"rsadsi", 1073741825, "113549"},
{"pkcs", 1073741825, "1"},
{NULL, 1073741825, "9"},
{NULL, 1, "7"},
{"pkcs-9-challengePassword", 1610612754, NULL},
{"printableString", 1073741855, NULL},
{"utf8String", 34, NULL},
{"pkcs-9-localKeyId", 1073741831, NULL},
{"pkcs-8-PrivateKeyInfo", 1610612741, NULL},
{"version", 1073741827, NULL},
{"privateKeyAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"privateKey", 1073741831, NULL},
{"attributes", 536895490, "Attributes"},
{NULL, 4104, "0"},
{"pkcs-8-EncryptedPrivateKeyInfo", 1610612741, NULL},
{"encryptionAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"encryptedData", 2, "pkcs-8-EncryptedData"},
{"pkcs-8-EncryptedData", 1073741831, NULL},
{"pkcs-5-des-CBC-params", 1612709895, NULL},
{NULL, 1048586, "8"},
{"pkcs-5-des-EDE3-CBC-params", 1612709895, NULL},
{NULL, 1048586, "8"},
{"pkcs-5-aes128-CBC-params", 1612709895, NULL},
{NULL, 1048586, "16"},
{"pkcs-5-aes192-CBC-params", 1612709895, NULL},
{NULL, 1048586, "16"},
{"pkcs-5-aes256-CBC-params", 1612709895, NULL},
{NULL, 1048586, "16"},
{"Gost28147-89-Parameters", 1610612741, NULL},
{"iv", 1073741831, NULL},
{"encryptionParamSet", 12, NULL},
{"pkcs-5-PBE-params", 1610612741, NULL},
{"salt", 1073741831, NULL},
{"iterationCount", 3, NULL},
{"pkcs-5-PBES2-params", 1610612741, NULL},
{"keyDerivationFunc", 1073741826, "AlgorithmIdentifier"},
{"encryptionScheme", 2, "AlgorithmIdentifier"},
{"pkcs-5-PBKDF2-params", 1610612741, NULL},
{"salt", 1610612754, NULL},
{"specified", 1073741831, NULL},
{"otherSource", 2, "AlgorithmIdentifier"},
{"iterationCount", 1611137027, NULL},
{"1", 10, "MAX"},
{"keyLength", 1611153411, NULL},
{"1", 10, "MAX"},
{"prf", 16386, "AlgorithmIdentifier"},
{"pkcs-12-PFX", 1610612741, NULL},
{"version", 1610874883, NULL},
{"v3", 1, "3"},
{"authSafe", 1073741826, "pkcs-7-ContentInfo"},
{"macData", 16386, "pkcs-12-MacData"},
{"pkcs-12-PbeParams", 1610612741, NULL},
{"salt", 1073741831, NULL},
{"iterations", 3, NULL},
{"pkcs-12-MacData", 1610612741, NULL},
{"mac", 1073741826, "pkcs-7-DigestInfo"},
{"macSalt", 1073741831, NULL},
{"iterations", 536903683, NULL},
{NULL, 9, "1"},
{"pkcs-12-AuthenticatedSafe", 1610612747, NULL},
{NULL, 2, "pkcs-7-ContentInfo"},
{"pkcs-12-SafeContents", 1610612747, NULL},
{NULL, 2, "pkcs-12-SafeBag"},
{"pkcs-12-SafeBag", 1610612741, NULL},
{"bagId", 1073741836, NULL},
{"bagValue", 1614815245, NULL},
{NULL, 1073743880, "0"},
{"badId", 1, NULL},
{"bagAttributes", 536887311, NULL},
{NULL, 2, "Attribute"},
{"pkcs-12-CertBag", 1610612741, NULL},
{"certId", 1073741836, NULL},
{"certValue", 541073421, NULL},
{NULL, 1073743880, "0"},
{"certId", 1, NULL},
{"pkcs-12-CRLBag", 1610612741, NULL},
{"crlId", 1073741836, NULL},
{"crlValue", 541073421, NULL},
{NULL, 1073743880, "0"},
{"crlId", 1, NULL},
{"pkcs-12-SecretBag", 1610612741, NULL},
{"secretTypeId", 1073741836, NULL},
{"secretValue", 541073421, NULL},
{NULL, 1073743880, "0"},
{"secretTypeId", 1, NULL},
{"pkcs-7-Data", 1073741831, NULL},
{"pkcs-7-EncryptedData", 1610612741, NULL},
{"version", 1073741827, NULL},
{"encryptedContentInfo", 1073741826, "pkcs-7-EncryptedContentInfo"},
{"unprotectedAttrs", 536895490, "pkcs-7-UnprotectedAttributes"},
{NULL, 4104, "1"},
{"pkcs-7-EncryptedContentInfo", 1610612741, NULL},
{"contentType", 1073741836, NULL},
{"contentEncryptionAlgorithm", 1073741826,
"pkcs-7-ContentEncryptionAlgorithmIdentifier"},
{"encryptedContent", 536895495, NULL},
{NULL, 4104, "0"},
{"pkcs-7-ContentEncryptionAlgorithmIdentifier", 1073741826,
"AlgorithmIdentifier"},
{"pkcs-7-UnprotectedAttributes", 1612709903, NULL},
{"MAX", 1074266122, "1"},
{NULL, 2, "Attribute"},
{"ProxyCertInfo", 1610612741, NULL},
{"pCPathLenConstraint", 1611153411, NULL},
{"0", 10, "MAX"},
{"proxyPolicy", 2, "ProxyPolicy"},
{"ProxyPolicy", 1610612741, NULL},
{"policyLanguage", 1073741836, NULL},
{"policy", 16391, NULL},
{"certificatePolicies", 1612709899, NULL},
{"MAX", 1074266122, "1"},
{NULL, 2, "PolicyInformation"},
{"PolicyInformation", 1610612741, NULL},
{"policyIdentifier", 1073741836, NULL},
{"policyQualifiers", 538984459, NULL},
{"MAX", 1074266122, "1"},
{NULL, 2, "PolicyQualifierInfo"},
{"PolicyQualifierInfo", 1610612741, NULL},
{"policyQualifierId", 1073741836, NULL},
{"qualifier", 541065229, NULL},
{"policyQualifierId", 1, NULL},
{"CPSuri", 1073741853, NULL},
{"UserNotice", 1610612741, NULL},
{"noticeRef", 1073758210, "NoticeReference"},
{"explicitText", 16386, "DisplayText"},
{"NoticeReference", 1610612741, NULL},
{"organization", 1073741826, "DisplayText"},
{"noticeNumbers", 536870923, NULL},
{NULL, 3, NULL},
{"DisplayText", 1610612754, NULL},
{"ia5String", 1612709917, NULL},
{"200", 524298, "1"},
{"visibleString", 1612709923, NULL},
{"200", 524298, "1"},
{"bmpString", 1612709921, NULL},
{"200", 524298, "1"},
{"utf8String", 538968098, NULL},
{"200", 524298, "1"},
{"OCSPRequest", 1610612741, NULL},
{"tbsRequest", 1073741826, "TBSRequest"},
{"optionalSignature", 536895490, "Signature"},
{NULL, 2056, "0"},
{"TBSRequest", 1610612741, NULL},
{"version", 1610653699, NULL},
{NULL, 1073741833, "0"},
{NULL, 2056, "0"},
{"requestorName", 1610637314, "GeneralName"},
{NULL, 2056, "1"},
{"requestList", 1610612747, NULL},
{NULL, 2, "Request"},
{"requestExtensions", 536895490, "Extensions"},
{NULL, 2056, "2"},
{"Signature", 1610612741, NULL},
{"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"signature", 1073741830, NULL},
{"certs", 536895499, NULL},
{NULL, 1073743880, "0"},
{NULL, 2, "Certificate"},
{"Request", 1610612741, NULL},
{"reqCert", 1073741826, "CertID"},
{"singleRequestExtensions", 536895490, "Extensions"},
{NULL, 2056, "0"},
{"CertID", 1610612741, NULL},
{"hashAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"issuerNameHash", 1073741831, NULL},
{"issuerKeyHash", 1073741831, NULL},
{"serialNumber", 2, "CertificateSerialNumber"},
{"OCSPResponse", 1610612741, NULL},
{"responseStatus", 1073741826, "OCSPResponseStatus"},
{"responseBytes", 536895490, "ResponseBytes"},
{NULL, 2056, "0"},
{"OCSPResponseStatus", 1610874901, NULL},
{"successful", 1073741825, "0"},
{"malformedRequest", 1073741825, "1"},
{"internalError", 1073741825, "2"},
{"tryLater", 1073741825, "3"},
{"sigRequired", 1073741825, "5"},
{"unauthorized", 1, "6"},
{"ResponseBytes", 1610612741, NULL},
{"responseType", 1073741836, NULL},
{"response", 7, NULL},
{"BasicOCSPResponse", 1610612741, NULL},
{"tbsResponseData", 1073741826, "ResponseData"},
{"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
{"signature", 1073741830, NULL},
{"certs", 536895499, NULL},
{NULL, 1073743880, "0"},
{NULL, 2, "Certificate"},
{"ResponseData", 1610612741, NULL},
{"version", 1610653699, NULL},
{NULL, 1073741833, "0"},
{NULL, 2056, "0"},
{"responderID", 1073741826, "ResponderID"},
{"producedAt", 1073741861, NULL},
{"responses", 1610612747, NULL},
{NULL, 2, "SingleResponse"},
{"responseExtensions", 536895490, "Extensions"},
{NULL, 2056, "1"},
{"ResponderID", 1610612754, NULL},
{"byName", 1610620939, NULL},
{NULL, 1073743880, "1"},
{NULL, 2, "RelativeDistinguishedName"},
{"byKey", 536879111, NULL},
{NULL, 2056, "2"},
{"SingleResponse", 1610612741, NULL},
{"certID", 1073741826, "CertID"},
{"certStatus", 1073741826, "CertStatus"},
{"thisUpdate", 1073741861, NULL},
{"nextUpdate", 1610637349, NULL},
{NULL, 2056, "0"},
{"singleExtensions", 536895490, "Extensions"},
{NULL, 2056, "1"},
{"CertStatus", 1610612754, NULL},
{"good", 1610620948, NULL},
{NULL, 4104, "0"},
{"revoked", 1610620930, "RevokedInfo"},
{NULL, 4104, "1"},
{"unknown", 536879106, "UnknownInfo"},
{NULL, 4104, "2"},
{"RevokedInfo", 1610612741, NULL},
{"revocationTime", 1073741861, NULL},
{"revocationReason", 537157653, NULL},
{NULL, 1073743880, "0"},
{"unspecified", 1, "0"},
{"UnknownInfo", 1073741844, NULL},
{"NameConstraints", 1610612741, NULL},
{"permittedSubtrees", 1610637314, "GeneralSubtrees"},
{NULL, 4104, "0"},
{"excludedSubtrees", 536895490, "GeneralSubtrees"},
{NULL, 4104, "1"},
{"GeneralSubtrees", 1612709899, NULL},
{"MAX", 1074266122, "1"},
{NULL, 2, "GeneralSubtree"},
{"GeneralSubtree", 1610612741, NULL},
{"base", 1073741826, "GeneralName"},
{"minimum", 1610653699, NULL},
{NULL, 1073741833, "0"},
{NULL, 4104, "0"},
{"maximum", 536895491, NULL},
{NULL, 4104, "1"},
{"TlsFeatures", 536870923, NULL},
{NULL, 3, NULL},
{NULL, 0, NULL}
};
int
LLVMFuzzerTestOneInput (const uint8_t * data, size_t size)
{
static asn1_node _gnutls_pkix1_asn = NULL;
static int first = 1;
asn1_node dn;
int res, start, end;
if (size > 10000) // same as max_len = 10000 in .options file
return 0;
if (first)
{
first = 0;
// from _gnutls_global_init()
res = asn1_array2tree (pkix_asn1_tab, &_gnutls_pkix1_asn, NULL);
assert (res == ASN1_SUCCESS);
}
// from cert_get_issuer_dn()
if ((res =
asn1_create_element (_gnutls_pkix1_asn, "PKIX1.Certificate",
&dn)) != ASN1_SUCCESS)
{
goto out;
}
// from cert_get_issuer_dn()
res = asn1_der_decoding (&dn, data, size, NULL);
if (res != ASN1_SUCCESS)
{
goto out;
}
// from cert_get_issuer_dn()
res =
asn1_der_decoding_startEnd (dn, data, size, "tbsCertificate.issuer",
&start, &end);
if (res != ASN1_SUCCESS)
{
goto out;
}
out:
asn1_delete_structure (&dn);
return 0;
}