Skip to content

Commit a49f536

Browse files
committed
Speculative fix for build issues in CI. Will combine with previous commit upon success
1 parent 4919950 commit a49f536

File tree

8 files changed

+87
-131
lines changed

8 files changed

+87
-131
lines changed

src/crl.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -237,14 +237,6 @@ static void CRL_Entry_free(CRL_Entry* crle, void* heap)
237237
XFREE(crle->sigParams, heap, DYNAMIC_TYPE_CRL_ENTRY);
238238
#endif
239239
#if defined(OPENSSL_EXTRA)
240-
if (crle->sigBits != NULL) {
241-
wolfSSL_ASN1_BIT_STRING_free(crle->sigBits);
242-
crle->sigBits = NULL;
243-
}
244-
if (crle->sigAlgor != NULL) {
245-
wolfSSL_X509_ALGOR_free(crle->sigAlgor);
246-
crle->sigAlgor = NULL;
247-
}
248240
if (crle->issuer != NULL) {
249241
FreeX509Name(crle->issuer);
250242
XFREE(crle->issuer, heap, DYNAMIC_TYPE_X509);

src/pk.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ static int pem_mem_to_der(const char* pem, int pemSz, wc_pem_password_cb* cb,
127127
}
128128
#endif
129129

130-
#if !defined(NO_RSA) || !defined(WOLFCRYPT_ONLY)
130+
#if defined(OPENSSL_EXTRA) && (!defined(NO_RSA) || !defined(WOLFCRYPT_ONLY))
131131
#ifndef NO_BIO
132132
/* Read PEM data from a BIO and decode to DER in a new buffer.
133133
*
@@ -306,9 +306,10 @@ static int der_write_to_bio_as_pem(const unsigned char* der, int derSz,
306306
#endif
307307
#endif
308308

309-
#if (!defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)) || \
309+
#if defined(OPENSSL_EXTRA) && \
310+
((!defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)) || \
310311
(!defined(NO_DH) && defined(WOLFSSL_DH_EXTRA)) || \
311-
(defined(HAVE_ECC) && defined(WOLFSSL_KEY_GEN))
312+
(defined(HAVE_ECC) && defined(WOLFSSL_KEY_GEN)))
312313
#if !defined(NO_FILESYSTEM)
313314
/* Write the DER data as PEM into file pointer.
314315
*
@@ -342,7 +343,8 @@ static int der_write_to_file_as_pem(const unsigned char* der, int derSz,
342343
#endif
343344
#endif
344345

345-
#if defined(WOLFSSL_KEY_GEN) && defined(WOLFSSL_PEM_TO_DER)
346+
#if defined(OPENSSL_EXTRA) && defined(WOLFSSL_KEY_GEN) && \
347+
defined(WOLFSSL_PEM_TO_DER)
346348
/* Encrypt private key into PEM format.
347349
*
348350
* DER is encrypted in place.
@@ -464,10 +466,10 @@ int EncryptDerKey(byte *der, int *derSz, const WOLFSSL_EVP_CIPHER* cipher,
464466
WC_FREE_VAR_EX(info, NULL, DYNAMIC_TYPE_ENCRYPTEDINFO);
465467
return ret == 0;
466468
}
467-
#endif /* WOLFSSL_KEY_GEN || WOLFSSL_PEM_TO_DER */
469+
#endif /* OPENSSL_EXTRA && WOLFSSL_KEY_GEN && WOLFSSL_PEM_TO_DER */
468470

469471

470-
#if defined(WOLFSSL_KEY_GEN) && \
472+
#if defined(OPENSSL_EXTRA) && defined(WOLFSSL_KEY_GEN) && \
471473
(defined(WOLFSSL_PEM_TO_DER) || defined(WOLFSSL_DER_TO_PEM)) && \
472474
(!defined(NO_RSA) || defined(HAVE_ECC))
473475
/* Encrypt the DER in PEM format.
@@ -696,7 +698,8 @@ static int pk_bn_field_print_fp(XFILE fp, int indent, const char* field,
696698
#endif /* !NO_CERTS && XFPRINTF && !NO_FILESYSTEM && !NO_STDIO_FILESYSTEM &&
697699
* (!NO_DSA || !NO_RSA || HAVE_ECC) */
698700

699-
#if defined(XSNPRINTF) && !defined(NO_BIO) && !defined(NO_RSA)
701+
#if defined(OPENSSL_EXTRA) && defined(XSNPRINTF) && !defined(NO_BIO) && \
702+
!defined(NO_RSA)
700703
/* snprintf() must be available */
701704

702705
/* Maximum number of extra indent spaces on each line. */
@@ -905,7 +908,7 @@ static int wolfssl_print_number(WOLFSSL_BIO* bio, mp_int* num, const char* name,
905908
return ret;
906909
}
907910

908-
#endif /* XSNPRINTF && !NO_BIO && !NO_RSA */
911+
#endif /* OPENSSL_EXTRA && XSNPRINTF && !NO_BIO && !NO_RSA */
909912

910913
#endif /* OPENSSL_EXTRA */
911914

src/ssl.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16301,7 +16301,7 @@ void wolfSSL_set_dynlock_destroy_callback(
1630116301

1630216302
#endif /* OPENSSL_EXTRA */
1630316303

16304-
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
16304+
#ifdef OPENSSL_EXTRA
1630516305
#ifndef NO_CERTS
1630616306

1630716307
#if !defined(NO_ASN) && !defined(NO_PWDBASED)
@@ -16490,7 +16490,7 @@ int wolfSSL_i2d_PublicKey(const WOLFSSL_EVP_PKEY *key, unsigned char **der)
1649016490
#endif /* !NO_ASN && !NO_PWDBASED */
1649116491

1649216492
#endif /* !NO_CERTS */
16493-
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
16493+
#endif /* OPENSSL_EXTRA */
1649416494

1649516495
#ifdef OPENSSL_EXTRA
1649616496

src/ssl_asn1.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4550,7 +4550,8 @@ int wolfSSL_ASN1_UTCTIME_print(WOLFSSL_BIO* bio, const WOLFSSL_ASN1_UTCTIME* a)
45504550
* ASN1_TYPE APIs
45514551
******************************************************************************/
45524552

4553-
#if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)
4553+
#if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || \
4554+
defined(OPENSSL_EXTRA_X509_SMALL) || defined(WOLFSSL_WPAS_SMALL)
45544555

45554556
/**
45564557
* Allocate a new ASN.1 TYPE object.
@@ -4624,6 +4625,11 @@ void wolfSSL_ASN1_TYPE_free(WOLFSSL_ASN1_TYPE* at)
46244625
XFREE(at, NULL, DYNAMIC_TYPE_OPENSSL);
46254626
}
46264627

4628+
#endif /* OPENSSL_ALL || OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL ||
4629+
WOLFSSL_WPAS_SMALL */
4630+
4631+
#if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)
4632+
46274633
int wolfSSL_i2d_ASN1_TYPE(WOLFSSL_ASN1_TYPE* at, unsigned char** pp)
46284634
{
46294635
int ret = WC_NO_ERR_TRACE(WOLFSSL_FATAL_ERROR);
@@ -4659,11 +4665,10 @@ int wolfSSL_i2d_ASN1_TYPE(WOLFSSL_ASN1_TYPE* at, unsigned char** pp)
46594665
return ret;
46604666
}
46614667

4662-
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL || WOLFSSL_WPAS_SMALL */
4668+
#endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */
46634669

46644670
#if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || \
4665-
defined(OPENSSL_EXTRA_X509_SMALL) || defined(WOLFSSL_WPAS) || \
4666-
defined(WOLFSSL_WPAS_SMALL)
4671+
defined(OPENSSL_EXTRA_X509_SMALL) || defined(WOLFSSL_WPAS_SMALL)
46674672
/**
46684673
* Set ASN.1 TYPE object with a type and value.
46694674
*
@@ -4725,7 +4730,8 @@ int wolfSSL_ASN1_TYPE_get(const WOLFSSL_ASN1_TYPE *a)
47254730
return 0;
47264731
}
47274732

4728-
#endif /* OPENSSL_ALL || OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL || WOLFSSL_WPAS */
4733+
#endif /* OPENSSL_ALL || OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL ||
4734+
WOLFSSL_WPAS_SMALL */
47294735

47304736
#endif /* !NO_ASN */
47314737

src/x509.c

Lines changed: 44 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -9403,79 +9403,27 @@ int wolfSSL_X509_CRL_set_signature_nid(WOLFSSL_X509_CRL* crl, int nid)
94039403
/* Retrieve signature from CRL
94049404
* return WOLFSSL_SUCCESS on success and negative values on failure
94059405
*/
9406-
void wolfSSL_X509_CRL_get_signature(const WOLFSSL_X509_CRL* crl,
9407-
const WOLFSSL_ASN1_BIT_STRING **psig, const WOLFSSL_X509_ALGOR **palg)
9406+
int wolfSSL_X509_CRL_get_signature(WOLFSSL_X509_CRL* crl,
9407+
unsigned char* buf, int* bufSz)
94089408
{
9409-
CRL_Entry* entry;
9410-
WOLFSSL_ASN1_BIT_STRING* bitStr;
9411-
WOLFSSL_X509_ALGOR* algor;
9412-
int nid;
9413-
94149409
WOLFSSL_ENTER("wolfSSL_X509_CRL_get_signature");
94159410

9416-
if (psig) {
9417-
*psig = NULL;
9418-
}
9419-
if (palg) {
9420-
*palg = NULL;
9421-
}
9422-
94239411
if (crl == NULL || crl->crlList == NULL ||
9424-
crl->crlList->signature == NULL || crl->crlList->signatureSz == 0) {
9425-
return;
9426-
}
9427-
9428-
entry = ((WOLFSSL_X509_CRL*)crl)->crlList;
9412+
crl->crlList->signature == NULL || bufSz == NULL)
9413+
return BAD_FUNC_ARG;
94299414

9430-
if (psig) {
9431-
bitStr = entry->sigBits;
9432-
if (bitStr == NULL) {
9433-
bitStr = wolfSSL_ASN1_BIT_STRING_new();
9434-
if (bitStr == NULL) {
9435-
return;
9436-
}
9437-
entry->sigBits = bitStr;
9415+
if (buf != NULL) {
9416+
if (*bufSz < (int)crl->crlList->signatureSz) {
9417+
WOLFSSL_MSG("Signature buffer too small");
9418+
return BUFFER_E;
94389419
}
9439-
9440-
if (bitStr->data == NULL || bitStr->length != (int)entry->signatureSz) {
9441-
XFREE(bitStr->data, NULL, DYNAMIC_TYPE_OPENSSL);
9442-
bitStr->data = (byte*)XMALLOC(entry->signatureSz, NULL,
9443-
DYNAMIC_TYPE_OPENSSL);
9444-
if (bitStr->data == NULL) {
9445-
bitStr->length = 0;
9446-
return;
9447-
}
9420+
else {
9421+
XMEMCPY(buf, crl->crlList->signature, crl->crlList->signatureSz);
94489422
}
9449-
XMEMCPY(bitStr->data, entry->signature, entry->signatureSz);
9450-
bitStr->length = (int)entry->signatureSz;
9451-
bitStr->type = WOLFSSL_V_ASN1_BIT_STRING;
9452-
bitStr->flags = 0;
9453-
9454-
*psig = bitStr;
94559423
}
9424+
*bufSz = (int)crl->crlList->signatureSz;
94569425

9457-
if (palg) {
9458-
nid = oid2nid(entry->signatureOID, oidSigType);
9459-
algor = entry->sigAlgor;
9460-
if (algor == NULL ||
9461-
(algor->algorithm != NULL &&
9462-
wolfSSL_OBJ_obj2nid(algor->algorithm) != nid)) {
9463-
if (algor != NULL) {
9464-
wolfSSL_X509_ALGOR_free(algor);
9465-
}
9466-
algor = wolfSSL_X509_ALGOR_new();
9467-
if (algor == NULL) {
9468-
return;
9469-
}
9470-
if (wolfSSL_X509_ALGOR_set0(algor, wolfSSL_OBJ_nid2obj(nid),
9471-
WOLFSSL_V_ASN1_NULL, NULL) != WOLFSSL_SUCCESS) {
9472-
wolfSSL_X509_ALGOR_free(algor);
9473-
return;
9474-
}
9475-
entry->sigAlgor = algor;
9476-
}
9477-
*palg = algor;
9478-
}
9426+
return WOLFSSL_SUCCESS;
94799427
}
94809428

94819429
int wolfSSL_X509_CRL_set_signature(WOLFSSL_X509_CRL* crl,
@@ -9507,12 +9455,6 @@ int wolfSSL_X509_CRL_set_signature(WOLFSSL_X509_CRL* crl,
95079455

95089456
XMEMCPY(crl->crlList->signature, buf, bufSz);
95099457
crl->crlList->signatureSz = (word32)bufSz;
9510-
#if defined(OPENSSL_EXTRA)
9511-
if (crl->crlList->sigBits != NULL) {
9512-
wolfSSL_ASN1_BIT_STRING_free(crl->crlList->sigBits);
9513-
crl->crlList->sigBits = NULL;
9514-
}
9515-
#endif
95169458
return WOLFSSL_SUCCESS;
95179459
}
95189460

@@ -9592,17 +9534,34 @@ static int X509RevokedPrintSerial(WOLFSSL_BIO* bio, RevokedCert* rev,
95929534
static int X509CRLPrintSignature(WOLFSSL_BIO* bio, WOLFSSL_X509_CRL* crl,
95939535
int algOnly, int indent)
95949536
{
9595-
const WOLFSSL_ASN1_BIT_STRING* sig = NULL;
9596-
int sigNid = wolfSSL_X509_CRL_get_signature_nid(crl);
9537+
int sigSz = 0;
95979538

9598-
wolfSSL_X509_CRL_get_signature(crl, &sig, NULL);
9599-
if (sig == NULL || sig->data == NULL || sig->length <= 0) {
9539+
if (wolfSSL_X509_CRL_get_signature(crl, NULL, &sigSz) <= 0) {
96009540
return WOLFSSL_FAILURE;
96019541
}
96029542

9603-
if (X509PrintSignature_ex(bio, sig->data, sig->length, sigNid,
9604-
algOnly, indent) != WOLFSSL_SUCCESS) {
9605-
return WOLFSSL_FAILURE;
9543+
if (sigSz > 0) {
9544+
unsigned char* sig;
9545+
int sigNid = wolfSSL_X509_CRL_get_signature_nid(crl);
9546+
9547+
sig = (unsigned char*)XMALLOC(sigSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
9548+
if (sig == NULL) {
9549+
return WOLFSSL_FAILURE;
9550+
}
9551+
9552+
if (wolfSSL_X509_CRL_get_signature(crl, sig, &sigSz) <= 0) {
9553+
XFREE(sig, NULL, DYNAMIC_TYPE_TMP_BUFFER);
9554+
return WOLFSSL_FAILURE;
9555+
}
9556+
9557+
if (X509PrintSignature_ex(bio, sig, sigSz, sigNid, algOnly, indent)
9558+
!= WOLFSSL_SUCCESS) {
9559+
XFREE(sig, NULL, DYNAMIC_TYPE_TMP_BUFFER);
9560+
return WOLFSSL_FAILURE;
9561+
}
9562+
9563+
XFREE(sig, NULL, DYNAMIC_TYPE_TMP_BUFFER);
9564+
96069565
}
96079566

96089567
return WOLFSSL_SUCCESS;
@@ -10666,8 +10625,8 @@ WOLFSSL_ASN1_INTEGER* wolfSSL_X509_get_serialNumber(WOLFSSL_X509* x509)
1066610625
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
1066710626

1066810627
#if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || \
10669-
defined(OPENSSL_EXTRA_X509_SMALL) || defined(WOLFSSL_APACHE_HTTPD) || \
10670-
defined(WOLFSSL_HAPROXY) || defined(WOLFSSL_WPAS)
10628+
defined(WOLFSSL_APACHE_HTTPD) || defined(WOLFSSL_HAPROXY) || \
10629+
defined(WOLFSSL_WPAS)
1067110630
WOLFSSL_X509_ALGOR* wolfSSL_X509_ALGOR_new(void)
1067210631
{
1067310632
WOLFSSL_X509_ALGOR* ret;
@@ -11082,10 +11041,11 @@ int wolfSSL_X509_PUBKEY_set(WOLFSSL_X509_PUBKEY **x, WOLFSSL_EVP_PKEY *key)
1108211041
return WOLFSSL_FAILURE;
1108311042
}
1108411043

11085-
#endif /* OPENSSL_ALL || WOLFSSL_APACHE_HTTPD || WOLFSSL_HAPROXY ||
11086-
* WOLFSSL_WPAS */
11044+
#endif /* OPENSSL_ALL || OPENSSL_EXTRA || WOLFSSL_APACHE_HTTPD ||
11045+
* WOLFSSL_HAPROXY || WOLFSSL_WPAS */
1108711046

11088-
#if !defined(NO_CERTS) && !defined(NO_ASN) && !defined(NO_PWDBASED)
11047+
#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && !defined(NO_ASN) && \
11048+
!defined(NO_PWDBASED)
1108911049

1109011050
int wolfSSL_i2d_X509_PUBKEY(WOLFSSL_X509_PUBKEY* x509_PubKey,
1109111051
unsigned char** der)
@@ -11095,9 +11055,9 @@ int wolfSSL_i2d_X509_PUBKEY(WOLFSSL_X509_PUBKEY* x509_PubKey,
1109511055
return wolfSSL_i2d_PublicKey(x509_PubKey->pkey, der);
1109611056
}
1109711057

11098-
#endif /* !NO_CERTS && !NO_ASN && !NO_PWDBASED */
11058+
#endif /* OPENSSL_EXTRA && !NO_CERTS && !NO_ASN && !NO_PWDBASED */
1109911059

11100-
#endif /* OPENSSL_EXTRA */
11060+
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
1110111061

1110211062
#if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)
1110311063
WOLFSSL_BASIC_CONSTRAINTS* wolfSSL_BASIC_CONSTRAINTS_new(void)

tests/api.c

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20212,16 +20212,15 @@ static int test_sk_X509_CRL_decode(void)
2021220212
ExpectIntEQ(wolfSSL_X509_CRL_get_signature_nid(NULL), 0);
2021320213
ExpectIntEQ(wolfSSL_X509_CRL_get_signature_nid(&empty), 0);
2021420214
{
20215-
const WOLFSSL_ASN1_BIT_STRING* sig = NULL;
20216-
const WOLFSSL_X509_ALGOR* sigAlg = NULL;
20217-
wolfSSL_X509_CRL_get_signature(NULL, NULL, NULL);
20218-
wolfSSL_X509_CRL_get_signature(crl, NULL, NULL);
20219-
wolfSSL_X509_CRL_get_signature(NULL, &sig, &sigAlg);
20220-
ExpectNull(sig);
20221-
ExpectNull(sigAlg);
20222-
wolfSSL_X509_CRL_get_signature(&empty, &sig, &sigAlg);
20223-
ExpectNull(sig);
20224-
ExpectNull(sigAlg);
20215+
int sigSz = 0;
20216+
ExpectIntEQ(wolfSSL_X509_CRL_get_signature(NULL, NULL, NULL),
20217+
BAD_FUNC_ARG);
20218+
ExpectIntEQ(wolfSSL_X509_CRL_get_signature(crl, NULL, NULL),
20219+
BAD_FUNC_ARG);
20220+
ExpectIntEQ(wolfSSL_X509_CRL_get_signature(NULL, NULL, &sigSz),
20221+
BAD_FUNC_ARG);
20222+
ExpectIntEQ(wolfSSL_X509_CRL_get_signature(&empty, NULL, &sigSz),
20223+
BAD_FUNC_ARG);
2022520224
}
2022620225
ExpectIntEQ(wolfSSL_X509_REVOKED_get_serial_number(NULL, NULL, NULL),
2022720226
BAD_FUNC_ARG);
@@ -20240,13 +20239,10 @@ static int test_sk_X509_CRL_decode(void)
2024020239
ExpectIntEQ(wolfSSL_X509_CRL_get_signature_nid(crl),
2024120240
WC_NID_sha256WithRSAEncryption);
2024220241
{
20243-
const WOLFSSL_ASN1_BIT_STRING* sig = NULL;
20244-
const WOLFSSL_X509_ALGOR* sigAlg = NULL;
20245-
wolfSSL_X509_CRL_get_signature(crl, &sig, &sigAlg);
20246-
ExpectNotNull(sig);
20247-
ExpectNotNull(sig->data);
20248-
ExpectIntEQ(sig->length, 256);
20249-
ExpectNotNull(sigAlg);
20242+
int sigSz = 0;
20243+
ExpectIntEQ(wolfSSL_X509_CRL_get_signature(crl, NULL, &sigSz),
20244+
WOLFSSL_SUCCESS);
20245+
ExpectIntEQ(sigSz, 256);
2025020246
}
2025120247
ExpectNotNull(wolfSSL_X509_CRL_get_lastUpdate(crl));
2025220248
ExpectNotNull(wolfSSL_X509_CRL_get_nextUpdate(crl));

wolfssl/internal.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2503,8 +2503,6 @@ struct CRL_Entry {
25032503
byte* signature;
25042504
#if defined(OPENSSL_EXTRA)
25052505
WOLFSSL_X509_NAME* issuer; /* X509_NAME type issuer */
2506-
WOLFSSL_ASN1_BIT_STRING* sigBits; /* cached signature bit string */
2507-
WOLFSSL_X509_ALGOR* sigAlgor; /* cached signature algorithm */
25082506
#endif
25092507
CRL_Entry* next; /* next entry */
25102508
wolfSSL_Mutex verifyMutex;

0 commit comments

Comments
 (0)