Merge pull request #3581 from cconlon/releasefixes_selftest

Release fixes for CAVP selftest builds
This commit is contained in:
toddouska
2020-12-18 14:15:53 -08:00
committed by GitHub
3 changed files with 79 additions and 78 deletions

View File

@ -549,60 +549,60 @@ static RevokedCert *DupRevokedCertList(RevokedCert* in, void* heap)
/* returns a deep copy of ent on success and null on fail */ /* returns a deep copy of ent on success and null on fail */
static CRL_Entry* DupCRL_Entry(const CRL_Entry* ent, void* heap) static CRL_Entry* DupCRL_Entry(const CRL_Entry* ent, void* heap)
{ {
CRL_Entry *dup; CRL_Entry *dupl;
dup = (CRL_Entry*)XMALLOC(sizeof(CRL_Entry), heap, DYNAMIC_TYPE_CRL_ENTRY); dupl = (CRL_Entry*)XMALLOC(sizeof(CRL_Entry), heap, DYNAMIC_TYPE_CRL_ENTRY);
if (dup == NULL) { if (dupl == NULL) {
WOLFSSL_MSG("alloc CRL Entry failed"); WOLFSSL_MSG("alloc CRL Entry failed");
return NULL; return NULL;
} }
XMEMSET(dup, 0, sizeof(CRL_Entry)); XMEMSET(dupl, 0, sizeof(CRL_Entry));
XMEMCPY(dup->issuerHash, ent->issuerHash, CRL_DIGEST_SIZE); XMEMCPY(dupl->issuerHash, ent->issuerHash, CRL_DIGEST_SIZE);
XMEMCPY(dup->lastDate, ent->lastDate, MAX_DATE_SIZE); XMEMCPY(dupl->lastDate, ent->lastDate, MAX_DATE_SIZE);
XMEMCPY(dup->nextDate, ent->nextDate, MAX_DATE_SIZE); XMEMCPY(dupl->nextDate, ent->nextDate, MAX_DATE_SIZE);
dup->lastDateFormat = ent->lastDateFormat; dupl->lastDateFormat = ent->lastDateFormat;
dup->nextDateFormat = ent->nextDateFormat; dupl->nextDateFormat = ent->nextDateFormat;
dup->certs = DupRevokedCertList(ent->certs, heap); dupl->certs = DupRevokedCertList(ent->certs, heap);
dup->totalCerts = ent->totalCerts; dupl->totalCerts = ent->totalCerts;
dup->verified = ent->verified; dupl->verified = ent->verified;
if (!ent->verified) { if (!ent->verified) {
dup->tbsSz = ent->tbsSz; dupl->tbsSz = ent->tbsSz;
dup->signatureSz = ent->signatureSz; dupl->signatureSz = ent->signatureSz;
dup->signatureOID = ent->signatureOID; dupl->signatureOID = ent->signatureOID;
dup->toBeSigned = (byte*)XMALLOC(dup->tbsSz, heap, dupl->toBeSigned = (byte*)XMALLOC(dupl->tbsSz, heap,
DYNAMIC_TYPE_CRL_ENTRY); DYNAMIC_TYPE_CRL_ENTRY);
if (dup->toBeSigned == NULL) { if (dupl->toBeSigned == NULL) {
FreeCRL_Entry(dup, heap); FreeCRL_Entry(dupl, heap);
XFREE(dup, heap, DYNAMIC_TYPE_CRL_ENTRY); XFREE(dupl, heap, DYNAMIC_TYPE_CRL_ENTRY);
return NULL; return NULL;
} }
dup->signature = (byte*)XMALLOC(dup->signatureSz, heap, dupl->signature = (byte*)XMALLOC(dupl->signatureSz, heap,
DYNAMIC_TYPE_CRL_ENTRY); DYNAMIC_TYPE_CRL_ENTRY);
if (dup->signature == NULL) { if (dupl->signature == NULL) {
FreeCRL_Entry(dup, heap); FreeCRL_Entry(dupl, heap);
XFREE(dup, heap, DYNAMIC_TYPE_CRL_ENTRY); XFREE(dupl, heap, DYNAMIC_TYPE_CRL_ENTRY);
return NULL; return NULL;
} }
XMEMCPY(dup->toBeSigned, ent->toBeSigned, dup->tbsSz); XMEMCPY(dupl->toBeSigned, ent->toBeSigned, dupl->tbsSz);
XMEMCPY(dup->signature, ent->signature, dup->signatureSz); XMEMCPY(dupl->signature, ent->signature, dupl->signatureSz);
#ifndef NO_SKID #ifndef NO_SKID
dup->extAuthKeyIdSet = ent->extAuthKeyIdSet; dupl->extAuthKeyIdSet = ent->extAuthKeyIdSet;
if (dup->extAuthKeyIdSet) if (dupl->extAuthKeyIdSet)
XMEMCPY(dup->extAuthKeyId, ent->extAuthKeyId, KEYID_SIZE); XMEMCPY(dupl->extAuthKeyId, ent->extAuthKeyId, KEYID_SIZE);
#endif #endif
} }
else { else {
dup->toBeSigned = NULL; dupl->toBeSigned = NULL;
dup->tbsSz = 0; dupl->tbsSz = 0;
dup->signature = NULL; dupl->signature = NULL;
dup->signatureSz = 0; dupl->signatureSz = 0;
} }
return dup; return dupl;
} }
@ -642,20 +642,20 @@ static CRL_Entry* DupCRL_list(CRL_Entry* crl, void* heap)
/* Duplicates everything except the parent cm pointed to. /* Duplicates everything except the parent cm pointed to.
* Expects that Init has already been done to 'dup' * Expects that Init has already been done to 'dupl'
* return 0 on success */ * return 0 on success */
static int DupX509_CRL(WOLFSSL_X509_CRL *dup, const WOLFSSL_X509_CRL* crl) static int DupX509_CRL(WOLFSSL_X509_CRL *dupl, const WOLFSSL_X509_CRL* crl)
{ {
if (dup == NULL || crl == NULL) { if (dupl == NULL || crl == NULL) {
return BAD_FUNC_ARG; return BAD_FUNC_ARG;
} }
if (crl->monitors[0].path) { if (crl->monitors[0].path) {
int pathSz = (int)XSTRLEN(crl->monitors[0].path) + 1; int pathSz = (int)XSTRLEN(crl->monitors[0].path) + 1;
dup->monitors[0].path = (char*)XMALLOC(pathSz, dup->heap, dupl->monitors[0].path = (char*)XMALLOC(pathSz, dupl->heap,
DYNAMIC_TYPE_CRL_MONITOR); DYNAMIC_TYPE_CRL_MONITOR);
if (dup->monitors[0].path != NULL) { if (dupl->monitors[0].path != NULL) {
XSTRNCPY(dup->monitors[0].path, crl->monitors[0].path, pathSz); XSTRNCPY(dupl->monitors[0].path, crl->monitors[0].path, pathSz);
} }
else { else {
return MEMORY_E; return MEMORY_E;
@ -664,23 +664,23 @@ static int DupX509_CRL(WOLFSSL_X509_CRL *dup, const WOLFSSL_X509_CRL* crl)
if (crl->monitors[1].path) { if (crl->monitors[1].path) {
int pathSz = (int)XSTRLEN(crl->monitors[1].path) + 1; int pathSz = (int)XSTRLEN(crl->monitors[1].path) + 1;
dup->monitors[1].path = (char*)XMALLOC(pathSz, dup->heap, dupl->monitors[1].path = (char*)XMALLOC(pathSz, dupl->heap,
DYNAMIC_TYPE_CRL_MONITOR); DYNAMIC_TYPE_CRL_MONITOR);
if (dup->monitors[1].path != NULL) { if (dupl->monitors[1].path != NULL) {
XSTRNCPY(dup->monitors[1].path, crl->monitors[1].path, pathSz); XSTRNCPY(dupl->monitors[1].path, crl->monitors[1].path, pathSz);
} }
else { else {
if (dup->monitors[0].path != NULL) { if (dupl->monitors[0].path != NULL) {
XFREE(dup->monitors[0].path, dup->heap, XFREE(dupl->monitors[0].path, dupl->heap,
DYNAMIC_TYPE_CRL_MONITOR); DYNAMIC_TYPE_CRL_MONITOR);
} }
return MEMORY_E; return MEMORY_E;
} }
} }
dup->crlList = DupCRL_list(crl->crlList, dup->heap); dupl->crlList = DupCRL_list(crl->crlList, dupl->heap);
#ifdef HAVE_CRL_IO #ifdef HAVE_CRL_IO
dup->crlIOCb = crl->crlIOCb; dupl->crlIOCb = crl->crlIOCb;
#endif #endif
return 0; return 0;

View File

@ -19147,7 +19147,7 @@ WOLFSSL_GENERAL_NAME* wolfSSL_GENERAL_NAME_new(void)
static WOLFSSL_GENERAL_NAME* wolfSSL_GENERAL_NAME_dup(WOLFSSL_GENERAL_NAME* gn) static WOLFSSL_GENERAL_NAME* wolfSSL_GENERAL_NAME_dup(WOLFSSL_GENERAL_NAME* gn)
{ {
WOLFSSL_GENERAL_NAME* dup = NULL; WOLFSSL_GENERAL_NAME* dupl = NULL;
WOLFSSL_ENTER("wolfSSL_GENERAL_NAME_dup"); WOLFSSL_ENTER("wolfSSL_GENERAL_NAME_dup");
@ -19156,7 +19156,7 @@ static WOLFSSL_GENERAL_NAME* wolfSSL_GENERAL_NAME_dup(WOLFSSL_GENERAL_NAME* gn)
return NULL; return NULL;
} }
if (!(dup = wolfSSL_GENERAL_NAME_new())) { if (!(dupl = wolfSSL_GENERAL_NAME_new())) {
WOLFSSL_MSG("wolfSSL_GENERAL_NAME_new error"); WOLFSSL_MSG("wolfSSL_GENERAL_NAME_new error");
return NULL; return NULL;
} }
@ -19164,25 +19164,25 @@ static WOLFSSL_GENERAL_NAME* wolfSSL_GENERAL_NAME_dup(WOLFSSL_GENERAL_NAME* gn)
switch (gn->type) { switch (gn->type) {
/* WOLFSSL_ASN1_STRING types */ /* WOLFSSL_ASN1_STRING types */
case GEN_DNS: case GEN_DNS:
if (!(dup->d.dNSName = wolfSSL_ASN1_STRING_dup(gn->d.dNSName))) { if (!(dupl->d.dNSName = wolfSSL_ASN1_STRING_dup(gn->d.dNSName))) {
WOLFSSL_MSG("wolfSSL_ASN1_STRING_dup error"); WOLFSSL_MSG("wolfSSL_ASN1_STRING_dup error");
goto error; goto error;
} }
break; break;
case GEN_IPADD: case GEN_IPADD:
if (!(dup->d.iPAddress = wolfSSL_ASN1_STRING_dup(gn->d.iPAddress))) { if (!(dupl->d.iPAddress = wolfSSL_ASN1_STRING_dup(gn->d.iPAddress))) {
WOLFSSL_MSG("wolfSSL_ASN1_STRING_dup error"); WOLFSSL_MSG("wolfSSL_ASN1_STRING_dup error");
goto error; goto error;
} }
break; break;
case GEN_EMAIL: case GEN_EMAIL:
if (!(dup->d.rfc822Name = wolfSSL_ASN1_STRING_dup(gn->d.rfc822Name))) { if (!(dupl->d.rfc822Name = wolfSSL_ASN1_STRING_dup(gn->d.rfc822Name))) {
WOLFSSL_MSG("wolfSSL_ASN1_STRING_dup error"); WOLFSSL_MSG("wolfSSL_ASN1_STRING_dup error");
goto error; goto error;
} }
break; break;
case GEN_URI: case GEN_URI:
if (!(dup->d.uniformResourceIdentifier = if (!(dupl->d.uniformResourceIdentifier =
wolfSSL_ASN1_STRING_dup(gn->d.uniformResourceIdentifier))) { wolfSSL_ASN1_STRING_dup(gn->d.uniformResourceIdentifier))) {
WOLFSSL_MSG("wolfSSL_ASN1_STRING_dup error"); WOLFSSL_MSG("wolfSSL_ASN1_STRING_dup error");
goto error; goto error;
@ -19198,10 +19198,10 @@ static WOLFSSL_GENERAL_NAME* wolfSSL_GENERAL_NAME_dup(WOLFSSL_GENERAL_NAME* gn)
goto error; goto error;
} }
return dup; return dupl;
error: error:
if (dup) { if (dupl) {
wolfSSL_GENERAL_NAME_free(dup); wolfSSL_GENERAL_NAME_free(dupl);
} }
return NULL; return NULL;
} }
@ -20850,7 +20850,7 @@ WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_new(void)
WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_dup(WOLFSSL_ASN1_OBJECT* obj) WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_dup(WOLFSSL_ASN1_OBJECT* obj)
{ {
WOLFSSL_ASN1_OBJECT* dup = NULL; WOLFSSL_ASN1_OBJECT* dupl = NULL;
WOLFSSL_ENTER("wolfSSL_ASN1_OBJECT_dup"); WOLFSSL_ENTER("wolfSSL_ASN1_OBJECT_dup");
@ -20858,29 +20858,29 @@ WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_dup(WOLFSSL_ASN1_OBJECT* obj)
WOLFSSL_MSG("Bad parameter"); WOLFSSL_MSG("Bad parameter");
return NULL; return NULL;
} }
dup = wolfSSL_ASN1_OBJECT_new(); dupl = wolfSSL_ASN1_OBJECT_new();
if (!dup) { if (!dupl) {
WOLFSSL_MSG("wolfSSL_ASN1_OBJECT_new error"); WOLFSSL_MSG("wolfSSL_ASN1_OBJECT_new error");
return NULL; return NULL;
} }
/* Copy data */ /* Copy data */
XMEMCPY(dup->sName, obj->sName, WOLFSSL_MAX_SNAME); XMEMCPY(dupl->sName, obj->sName, WOLFSSL_MAX_SNAME);
dup->type = obj->type; dupl->type = obj->type;
dup->grp = obj->grp; dupl->grp = obj->grp;
dup->nid = obj->nid; dupl->nid = obj->nid;
dup->objSz = obj->objSz; dupl->objSz = obj->objSz;
if (obj->obj) { if (obj->obj) {
dup->obj = (const unsigned char*)XMALLOC( dupl->obj = (const unsigned char*)XMALLOC(
obj->objSz, NULL, DYNAMIC_TYPE_ASN1); obj->objSz, NULL, DYNAMIC_TYPE_ASN1);
if (!dup->obj) { if (!dupl->obj) {
WOLFSSL_MSG("ASN1 obj malloc error"); WOLFSSL_MSG("ASN1 obj malloc error");
wolfSSL_ASN1_OBJECT_free(dup); wolfSSL_ASN1_OBJECT_free(dupl);
return NULL; return NULL;
} }
XMEMCPY((byte*)dup->obj, obj->obj, obj->objSz); XMEMCPY((byte*)dupl->obj, obj->obj, obj->objSz);
dup->dynamic |= WOLFSSL_ASN1_DYNAMIC_DATA; dupl->dynamic |= WOLFSSL_ASN1_DYNAMIC_DATA;
} }
return dup; return dupl;
} }
#endif /* !NO_ASN && (OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL) */ #endif /* !NO_ASN && (OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL) */
@ -22511,7 +22511,7 @@ int wolfSSL_X509_cmp(const WOLFSSL_X509 *a, const WOLFSSL_X509 *b)
*/ */
WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_dup(WOLFSSL_ASN1_STRING* asn1) WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_dup(WOLFSSL_ASN1_STRING* asn1)
{ {
WOLFSSL_ASN1_STRING* dup = NULL; WOLFSSL_ASN1_STRING* dupl = NULL;
WOLFSSL_ENTER("wolfSSL_ASN1_STRING_dup"); WOLFSSL_ENTER("wolfSSL_ASN1_STRING_dup");
if (!asn1) { if (!asn1) {
@ -22519,23 +22519,23 @@ int wolfSSL_X509_cmp(const WOLFSSL_X509 *a, const WOLFSSL_X509 *b)
return NULL; return NULL;
} }
dup = wolfSSL_ASN1_STRING_new(); dupl = wolfSSL_ASN1_STRING_new();
if (!dup) { if (!dupl) {
WOLFSSL_MSG("wolfSSL_ASN1_STRING_new error"); WOLFSSL_MSG("wolfSSL_ASN1_STRING_new error");
return NULL; return NULL;
} }
dup->type = asn1->type; dupl->type = asn1->type;
dup->flags = asn1->flags; dupl->flags = asn1->flags;
if (wolfSSL_ASN1_STRING_set(dup, asn1->data, asn1->length) if (wolfSSL_ASN1_STRING_set(dupl, asn1->data, asn1->length)
!= WOLFSSL_SUCCESS) { != WOLFSSL_SUCCESS) {
WOLFSSL_MSG("wolfSSL_ASN1_STRING_set error"); WOLFSSL_MSG("wolfSSL_ASN1_STRING_set error");
wolfSSL_ASN1_STRING_free(dup); wolfSSL_ASN1_STRING_free(dupl);
return NULL; return NULL;
} }
return dup; return dupl;
} }

View File

@ -158,7 +158,8 @@ enum Pkcs7_Misc {
MAX_SEQ_SZ + ASN_NAME_MAX + MAX_SN_SZ + MAX_SEQ_SZ + ASN_NAME_MAX + MAX_SN_SZ +
MAX_SEQ_SZ + MAX_ALGO_SZ + 1 + MAX_ENCRYPTED_KEY_SZ, MAX_SEQ_SZ + MAX_ALGO_SZ + 1 + MAX_ENCRYPTED_KEY_SZ,
#if (defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \ #if (defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \
(HAVE_FIPS_VERSION <= 2)) || (defined(HAVE_SELFTEST)) (HAVE_FIPS_VERSION <= 2)) || (defined(HAVE_SELFTEST) && \
(!defined(HAVE_SELFTEST_VERSION) || (HAVE_SELFTEST_VERSION < 2)))
/* In the event of fips cert 3389 or CAVP selftest v1 build, these enums are /* In the event of fips cert 3389 or CAVP selftest v1 build, these enums are
* not in aes.h for use with pkcs7 so enumerate it here outside the fips * not in aes.h for use with pkcs7 so enumerate it here outside the fips
* boundary */ * boundary */