Allow intermediate CA certs without keycertsign when added through X509 STORE

This commit is contained in:
Colton Willey
2024-10-16 21:59:48 -07:00
committed by Daniel Pouzzner
parent 38c7de1707
commit 12f4f69fb4

View File

@ -5535,13 +5535,15 @@ int AddCA(WOLFSSL_CERT_MANAGER* cm, DerBuffer** pDer, int type, int verify)
} }
} }
if (ret == 0 && cert->isCA == 0 && type != WOLFSSL_USER_CA) { if (ret == 0 && cert->isCA == 0 && type != WOLFSSL_USER_CA &&
type != WOLFSSL_INTER_CA) {
WOLFSSL_MSG("\tCan't add as CA if not actually one"); WOLFSSL_MSG("\tCan't add as CA if not actually one");
ret = NOT_CA_ERROR; ret = NOT_CA_ERROR;
} }
#ifndef ALLOW_INVALID_CERTSIGN #ifndef ALLOW_INVALID_CERTSIGN
else if (ret == 0 && cert->isCA == 1 && type != WOLFSSL_USER_CA && else if (ret == 0 && cert->isCA == 1 && type != WOLFSSL_USER_CA &&
!cert->selfSigned && (cert->extKeyUsage & KEYUSE_KEY_CERT_SIGN) == 0) { type != WOLFSSL_INTER_CA && !cert->selfSigned &&
(cert->extKeyUsage & KEYUSE_KEY_CERT_SIGN) == 0) {
/* Intermediate CA certs are required to have the keyCertSign /* Intermediate CA certs are required to have the keyCertSign
* extension set. User loaded root certs are not. */ * extension set. User loaded root certs are not. */
WOLFSSL_MSG("\tDoesn't have key usage certificate signing"); WOLFSSL_MSG("\tDoesn't have key usage certificate signing");