forked from wolfSSL/wolfssl
Merge branch 'frankencert'
This commit is contained in:
@@ -3603,13 +3603,18 @@ int ParseCertRelative(DecodedCert* cert, int type, int verify, void* cm)
|
||||
|
||||
CYASSL_MSG("Parsed Past Key");
|
||||
|
||||
if (cert->srcIdx != cert->sigIndex) {
|
||||
if (cert->srcIdx < cert->sigIndex) {
|
||||
/* save extensions */
|
||||
cert->extensions = &cert->source[cert->srcIdx];
|
||||
cert->extensionsSz = cert->sigIndex - cert->srcIdx;
|
||||
cert->extensionsIdx = cert->srcIdx; /* for potential later use */
|
||||
}
|
||||
if (cert->srcIdx < cert->sigIndex) {
|
||||
#ifndef ALLOW_V1_EXTENSIONS
|
||||
if (cert->version < 2) {
|
||||
CYASSL_MSG(" v1 and v2 certs not allowed extensions");
|
||||
return ASN_VERSION_E;
|
||||
}
|
||||
#endif
|
||||
/* save extensions */
|
||||
cert->extensions = &cert->source[cert->srcIdx];
|
||||
cert->extensionsSz = cert->sigIndex - cert->srcIdx;
|
||||
cert->extensionsIdx = cert->srcIdx; /* for potential later use */
|
||||
|
||||
if ((ret = DecodeCertExtensions(cert)) < 0) {
|
||||
if (ret == ASN_CRIT_EXT_E)
|
||||
criticalExt = ret;
|
||||
@@ -6497,6 +6502,12 @@ int ParseCRL(DecodedCRL* dcrl, const byte* buff, word32 sz, void* cm)
|
||||
if (ca) {
|
||||
CYASSL_MSG("Found CRL issuer CA");
|
||||
/* try to confirm/verify signature */
|
||||
#ifndef IGNORE_KEY_EXTENSIONS
|
||||
if ((ca->keyUsage & KEYUSE_CRL_SIGN) == 0) {
|
||||
CYASSL_MSG("CA cannot sign CRLs");
|
||||
return ASN_CRL_NO_SIGNER_E;
|
||||
}
|
||||
#endif /* IGNORE_KEY_EXTENSIONS */
|
||||
if (!ConfirmSignature(buff + dcrl->certBegin,
|
||||
dcrl->sigIndex - dcrl->certBegin,
|
||||
ca->publicKey, ca->pubKeySize, ca->keyOID,
|
||||
|
||||
Reference in New Issue
Block a user