forked from wolfSSL/wolfssl
added ASN template code and WOLFSSL_CERT_EXT, still missing testcase
This commit is contained in:
@@ -24344,8 +24344,17 @@ static int EncodeExtensions(Cert* cert, byte* output, word32 maxSz,
|
|||||||
/* Set Basic Constraints to be a Certificate Authority. */
|
/* Set Basic Constraints to be a Certificate Authority. */
|
||||||
SetASN_Boolean(&dataASN[CERTEXTSASN_IDX_BC_CA], 1);
|
SetASN_Boolean(&dataASN[CERTEXTSASN_IDX_BC_CA], 1);
|
||||||
SetASN_Buffer(&dataASN[CERTEXTSASN_IDX_BC_OID], bcOID, sizeof(bcOID));
|
SetASN_Buffer(&dataASN[CERTEXTSASN_IDX_BC_OID], bcOID, sizeof(bcOID));
|
||||||
/* TODO: consider adding path length field in Cert. */
|
if (cert->pathLen
|
||||||
dataASN[CERTEXTSASN_IDX_BC_PATHLEN].noOut = 1;
|
#ifdef WOLFSSL_CERT_EXT
|
||||||
|
&& ((cert->keyUsage & KEYUSE_KEY_CERT_SIGN) || (!cert->keyUsage))
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
|
SetASN_Int8Bit(&dataASN[CERTEXTSASN_IDX_BC_PATHLEN],
|
||||||
|
cert->pathLen);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
dataASN[CERTEXTSASN_IDX_BC_PATHLEN].noOut = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (cert->basicConstSet) {
|
else if (cert->basicConstSet) {
|
||||||
/* Set Basic Constraints to be a non Certificate Authority. */
|
/* Set Basic Constraints to be a non Certificate Authority. */
|
||||||
@@ -24941,8 +24950,11 @@ static int EncodeCert(Cert* cert, DerCert* der, RsaKey* rsaKey, ecc_key* eccKey,
|
|||||||
* asserted and the key usage extension, if present, asserts the
|
* asserted and the key usage extension, if present, asserts the
|
||||||
* keyCertSign bit */
|
* keyCertSign bit */
|
||||||
/* Set CA and path length */
|
/* Set CA and path length */
|
||||||
if ((cert->isCA) && (cert->pathLen) &&
|
if ((cert->isCA) && (cert->pathLen)
|
||||||
((cert->keyUsage & KEYUSE_KEY_CERT_SIGN) || (!cert->keyUsage))) {
|
#ifdef WOLFSSL_CERT_EXT
|
||||||
|
&& ((cert->keyUsage & KEYUSE_KEY_CERT_SIGN) || (!cert->keyUsage))
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
der->caSz = SetCaWithPathLen(der->ca, sizeof(der->ca), cert->pathLen);
|
der->caSz = SetCaWithPathLen(der->ca, sizeof(der->ca), cert->pathLen);
|
||||||
if (der->caSz <= 0)
|
if (der->caSz <= 0)
|
||||||
return CA_TRUE_E;
|
return CA_TRUE_E;
|
||||||
|
Reference in New Issue
Block a user