mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 03:34:39 +02:00
implement wolfSSL_dup_CA_list()
wolfSSL_dup_CA_list() duplicates a WOLF_STACK_OF(WOLFSSL_X509_NAME) (replaces stub function)
This commit is contained in:
committed by
Daniel Pouzzner
parent
e5ed227a87
commit
be7592fb43
@@ -17187,7 +17187,7 @@ int SendCertificateRequest(WOLFSSL* ssl)
|
||||
int sendSz;
|
||||
word32 i = RECORD_HEADER_SZ + HANDSHAKE_HEADER_SZ;
|
||||
word32 dnLen = 0;
|
||||
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX)
|
||||
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(HAVE_LIGHTY)
|
||||
WOLF_STACK_OF(WOLFSSL_X509_NAME)* names;
|
||||
#endif
|
||||
|
||||
@@ -17200,7 +17200,7 @@ int SendCertificateRequest(WOLFSSL* ssl)
|
||||
if (IsAtLeastTLSv1_2(ssl))
|
||||
reqSz += LENGTH_SZ + ssl->suites->hashSigAlgoSz;
|
||||
|
||||
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX)
|
||||
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(HAVE_LIGHTY)
|
||||
/* Certificate Authorities */
|
||||
names = ssl->ctx->ca_names;
|
||||
while (names != NULL) {
|
||||
@@ -17269,7 +17269,7 @@ int SendCertificateRequest(WOLFSSL* ssl)
|
||||
/* Certificate Authorities */
|
||||
c16toa((word16)dnLen, &output[i]); /* auth's */
|
||||
i += REQ_HEADER_SZ;
|
||||
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX)
|
||||
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(HAVE_LIGHTY)
|
||||
names = ssl->ctx->ca_names;
|
||||
while (names != NULL) {
|
||||
byte seq[MAX_SEQ_SZ];
|
||||
|
42
src/ssl.c
42
src/ssl.c
@@ -39855,16 +39855,6 @@ err:
|
||||
|
||||
return WOLFSSL_SUCCESS;
|
||||
}
|
||||
|
||||
WOLF_STACK_OF(WOLFSSL_X509_NAME) *wolfSSL_dup_CA_list(
|
||||
WOLF_STACK_OF(WOLFSSL_X509_NAME) *sk)
|
||||
{
|
||||
(void) sk;
|
||||
WOLFSSL_ENTER("wolfSSL_dup_CA_list");
|
||||
WOLFSSL_STUB("SSL_dup_CA_list");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* wolfSSL uses negative values for error states. This function returns an
|
||||
@@ -41996,6 +41986,38 @@ WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_sk_X509_NAME_new(wolf_sk_compare_cb cb
|
||||
return sk;
|
||||
}
|
||||
|
||||
|
||||
/* Creates a duplicate of WOLF_STACK_OF(WOLFSSL_X509_NAME).
|
||||
* Returns a new WOLF_STACK_OF(WOLFSSL_X509_NAME) or NULL on failure */
|
||||
WOLF_STACK_OF(WOLFSSL_X509_NAME) *wolfSSL_dup_CA_list(
|
||||
WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk)
|
||||
{
|
||||
int i;
|
||||
const int num = wolfSSL_sk_X509_NAME_num(sk);
|
||||
WOLF_STACK_OF(WOLFSSL_X509_NAME) *copy;
|
||||
WOLFSSL_X509_NAME *name;
|
||||
|
||||
WOLFSSL_ENTER("wolfSSL_dup_CA_list");
|
||||
|
||||
copy = wolfSSL_sk_X509_NAME_new(NULL);
|
||||
if (copy == NULL) {
|
||||
WOLFSSL_MSG("Memory error");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < num; i++) {
|
||||
name = wolfSSL_X509_NAME_dup(wolfSSL_sk_X509_NAME_value(sk, i));
|
||||
if (name == NULL || 0 != wolfSSL_sk_X509_NAME_push(copy, name)) {
|
||||
WOLFSSL_MSG("Memory error");
|
||||
wolfSSL_sk_X509_NAME_pop_free(copy, wolfSSL_X509_NAME_free);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
|
||||
int wolfSSL_sk_X509_NAME_push(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk,
|
||||
WOLFSSL_X509_NAME* name)
|
||||
{
|
||||
|
@@ -3633,7 +3633,7 @@ struct WOLFSSL_X509_NAME {
|
||||
WOLFSSL_X509_NAME_ENTRY entry[MAX_NAME_ENTRIES]; /* all entries i.e. CN */
|
||||
WOLFSSL_X509* x509; /* x509 that struct belongs to */
|
||||
#endif /* OPENSSL_EXTRA */
|
||||
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX)
|
||||
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(HAVE_LIGHTY)
|
||||
byte raw[ASN_NAME_MAX];
|
||||
int rawLen;
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user