forked from wolfSSL/wolfssl
Correct wolfSSL_sk_X509_new in OpenSSL compatible API
This commit is contained in:
16
src/ssl.c
16
src/ssl.c
@@ -4367,7 +4367,7 @@ WOLFSSL_STACK* wolfSSL_CertManagerGetCerts(WOLFSSL_CERT_MANAGER* cm)
|
|||||||
if (cm == NULL)
|
if (cm == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
sk = wolfSSL_sk_X509_new();
|
sk = wolfSSL_sk_X509_new_null();
|
||||||
if (sk == NULL)
|
if (sk == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
@@ -19495,7 +19495,7 @@ WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_set_peer_cert_chain(WOLFSSL* ssl)
|
|||||||
if ((ssl == NULL) || (ssl->session->chain.count == 0))
|
if ((ssl == NULL) || (ssl->session->chain.count == 0))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
sk = wolfSSL_sk_X509_new();
|
sk = wolfSSL_sk_X509_new_null();
|
||||||
i = ssl->session->chain.count-1;
|
i = ssl->session->chain.count-1;
|
||||||
for (; i >= 0; i--) {
|
for (; i >= 0; i--) {
|
||||||
x509 = wolfSSL_X509_new();
|
x509 = wolfSSL_X509_new();
|
||||||
@@ -30397,9 +30397,9 @@ int wolfSSL_ASN1_STRING_canon(WOLFSSL_ASN1_STRING* asn_out,
|
|||||||
}
|
}
|
||||||
/* Store cert to free it later */
|
/* Store cert to free it later */
|
||||||
if (ret == WOLFSSL_SUCCESS && ctx->x509Chain == NULL) {
|
if (ret == WOLFSSL_SUCCESS && ctx->x509Chain == NULL) {
|
||||||
ctx->x509Chain = wolfSSL_sk_X509_new();
|
ctx->x509Chain = wolfSSL_sk_X509_new_null();
|
||||||
if (ctx->x509Chain == NULL) {
|
if (ctx->x509Chain == NULL) {
|
||||||
WOLFSSL_MSG("wolfSSL_sk_X509_new error");
|
WOLFSSL_MSG("wolfSSL_sk_X509_new_null error");
|
||||||
ret = WOLFSSL_FAILURE;
|
ret = WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -30445,9 +30445,9 @@ int wolfSSL_ASN1_STRING_canon(WOLFSSL_ASN1_STRING* asn_out,
|
|||||||
ssl->buffers.weOwnCertChain = 1;
|
ssl->buffers.weOwnCertChain = 1;
|
||||||
/* Store cert to free it later */
|
/* Store cert to free it later */
|
||||||
if (ssl->ourCertChain == NULL) {
|
if (ssl->ourCertChain == NULL) {
|
||||||
ssl->ourCertChain = wolfSSL_sk_X509_new();
|
ssl->ourCertChain = wolfSSL_sk_X509_new_null();
|
||||||
if (ssl->ourCertChain == NULL) {
|
if (ssl->ourCertChain == NULL) {
|
||||||
WOLFSSL_MSG("wolfSSL_sk_X509_new error");
|
WOLFSSL_MSG("wolfSSL_sk_X509_new_null error");
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -39806,7 +39806,7 @@ WOLFSSL_STACK* wolfSSL_PKCS7_to_stack(PKCS7* pkcs7)
|
|||||||
WOLFSSL_X509* x509 = wolfSSL_X509_d2i(NULL, p7->pkcs7.cert[i],
|
WOLFSSL_X509* x509 = wolfSSL_X509_d2i(NULL, p7->pkcs7.cert[i],
|
||||||
p7->pkcs7.certSz[i]);
|
p7->pkcs7.certSz[i]);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
ret = wolfSSL_sk_X509_new();
|
ret = wolfSSL_sk_X509_new_null();
|
||||||
if (x509) {
|
if (x509) {
|
||||||
if (wolfSSL_sk_X509_push(ret, x509) != WOLFSSL_SUCCESS) {
|
if (wolfSSL_sk_X509_push(ret, x509) != WOLFSSL_SUCCESS) {
|
||||||
wolfSSL_X509_free(x509);
|
wolfSSL_X509_free(x509);
|
||||||
@@ -39863,7 +39863,7 @@ WOLFSSL_STACK* wolfSSL_PKCS7_get0_signers(PKCS7* pkcs7, WOLFSSL_STACK* certs,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
signers = wolfSSL_sk_X509_new();
|
signers = wolfSSL_sk_X509_new_null();
|
||||||
if (signers == NULL)
|
if (signers == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
17
src/x509.c
17
src/x509.c
@@ -12766,7 +12766,20 @@ int wolfSSL_X509_get_signature_nid(const WOLFSSL_X509 *x)
|
|||||||
#endif /* OPENSSL_EXTRA */
|
#endif /* OPENSSL_EXTRA */
|
||||||
|
|
||||||
#if defined(OPENSSL_EXTRA)
|
#if defined(OPENSSL_EXTRA)
|
||||||
WOLFSSL_STACK* wolfSSL_sk_X509_new(void)
|
WOLFSSL_STACK* wolfSSL_sk_X509_new(WOLF_SK_COMPARE_CB(WOLFSSL_X509, cb))
|
||||||
|
{
|
||||||
|
(void)cb;
|
||||||
|
WOLFSSL_STACK* s = (WOLFSSL_STACK*)XMALLOC(sizeof(WOLFSSL_STACK), NULL,
|
||||||
|
DYNAMIC_TYPE_OPENSSL);
|
||||||
|
if (s != NULL) {
|
||||||
|
XMEMSET(s, 0, sizeof(*s));
|
||||||
|
s->type = STACK_TYPE_X509;
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
WOLFSSL_STACK* wolfSSL_sk_X509_new_null(void)
|
||||||
{
|
{
|
||||||
WOLFSSL_STACK* s = (WOLFSSL_STACK*)XMALLOC(sizeof(WOLFSSL_STACK), NULL,
|
WOLFSSL_STACK* s = (WOLFSSL_STACK*)XMALLOC(sizeof(WOLFSSL_STACK), NULL,
|
||||||
DYNAMIC_TYPE_OPENSSL);
|
DYNAMIC_TYPE_OPENSSL);
|
||||||
@@ -12777,7 +12790,7 @@ WOLFSSL_STACK* wolfSSL_sk_X509_new(void)
|
|||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* OPENSSL_EXTRA */
|
||||||
|
|
||||||
#ifdef OPENSSL_ALL
|
#ifdef OPENSSL_ALL
|
||||||
|
|
||||||
|
@@ -621,7 +621,7 @@ WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_X509_STORE_get1_certs(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (err == 0) {
|
if (err == 0) {
|
||||||
filteredCerts = wolfSSL_sk_X509_new();
|
filteredCerts = wolfSSL_sk_X509_new_null();
|
||||||
if (filteredCerts == NULL) {
|
if (filteredCerts == NULL) {
|
||||||
err = 1;
|
err = 1;
|
||||||
}
|
}
|
||||||
@@ -1138,7 +1138,7 @@ WOLFSSL_STACK* wolfSSL_X509_STORE_GetCerts(WOLFSSL_X509_STORE_CTX* s)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
sk = wolfSSL_sk_X509_new();
|
sk = wolfSSL_sk_X509_new_null();
|
||||||
|
|
||||||
if (sk == NULL) {
|
if (sk == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
12
tests/api.c
12
tests/api.c
@@ -34685,7 +34685,7 @@ static int test_wolfSSL_X509_STORE_CTX(void)
|
|||||||
AssertIntEQ(X509_STORE_add_cert(str, x509), SSL_SUCCESS);
|
AssertIntEQ(X509_STORE_add_cert(str, x509), SSL_SUCCESS);
|
||||||
#ifdef OPENSSL_ALL
|
#ifdef OPENSSL_ALL
|
||||||
/* sk_X509_new only in OPENSSL_ALL */
|
/* sk_X509_new only in OPENSSL_ALL */
|
||||||
sk = sk_X509_new();
|
sk = sk_X509_new_null();
|
||||||
AssertNotNull(sk);
|
AssertNotNull(sk);
|
||||||
AssertIntEQ(X509_STORE_CTX_init(ctx, str, x509, sk), SSL_SUCCESS);
|
AssertIntEQ(X509_STORE_CTX_init(ctx, str, x509, sk), SSL_SUCCESS);
|
||||||
#else
|
#else
|
||||||
@@ -34712,7 +34712,7 @@ static int test_wolfSSL_X509_STORE_CTX(void)
|
|||||||
SSL_FILETYPE_PEM)));
|
SSL_FILETYPE_PEM)));
|
||||||
AssertNotNull((x5092 = X509_load_certificate_file(cliCertFile,
|
AssertNotNull((x5092 = X509_load_certificate_file(cliCertFile,
|
||||||
SSL_FILETYPE_PEM)));
|
SSL_FILETYPE_PEM)));
|
||||||
AssertNotNull((sk = sk_X509_new()));
|
AssertNotNull((sk = sk_X509_new_null()));
|
||||||
AssertIntEQ(sk_X509_push(sk, x509), 1);
|
AssertIntEQ(sk_X509_push(sk, x509), 1);
|
||||||
AssertNotNull((str = X509_STORE_new()));
|
AssertNotNull((str = X509_STORE_new()));
|
||||||
AssertNotNull((ctx = X509_STORE_CTX_new()));
|
AssertNotNull((ctx = X509_STORE_CTX_new()));
|
||||||
@@ -49539,7 +49539,7 @@ static int test_sk_X509(void)
|
|||||||
{
|
{
|
||||||
STACK_OF(X509)* s;
|
STACK_OF(X509)* s;
|
||||||
|
|
||||||
AssertNotNull(s = sk_X509_new());
|
AssertNotNull(s = sk_X509_new_null());
|
||||||
AssertIntEQ(sk_X509_num(s), 0);
|
AssertIntEQ(sk_X509_num(s), 0);
|
||||||
sk_X509_pop_free(s, NULL);
|
sk_X509_pop_free(s, NULL);
|
||||||
|
|
||||||
@@ -49547,7 +49547,7 @@ static int test_sk_X509(void)
|
|||||||
AssertIntEQ(sk_X509_num(s), 0);
|
AssertIntEQ(sk_X509_num(s), 0);
|
||||||
sk_X509_pop_free(s, NULL);
|
sk_X509_pop_free(s, NULL);
|
||||||
|
|
||||||
AssertNotNull(s = sk_X509_new());
|
AssertNotNull(s = sk_X509_new_null());
|
||||||
sk_X509_push(s, (X509*)1);
|
sk_X509_push(s, (X509*)1);
|
||||||
AssertIntEQ(sk_X509_num(s), 1);
|
AssertIntEQ(sk_X509_num(s), 1);
|
||||||
AssertIntEQ((sk_X509_value(s, 0) == (X509*)1), 1);
|
AssertIntEQ((sk_X509_value(s, 0) == (X509*)1), 1);
|
||||||
@@ -49571,7 +49571,7 @@ static int test_sk_X509(void)
|
|||||||
AssertNotNull(xList[i] = X509_new());
|
AssertNotNull(xList[i] = X509_new());
|
||||||
|
|
||||||
/* test push, pop, and free */
|
/* test push, pop, and free */
|
||||||
AssertNotNull(s = sk_X509_new());
|
AssertNotNull(s = sk_X509_new_null());
|
||||||
|
|
||||||
for (i = 0; i < len; ++i) {
|
for (i = 0; i < len; ++i) {
|
||||||
sk_X509_push(s, xList[i]);
|
sk_X509_push(s, xList[i]);
|
||||||
@@ -49595,7 +49595,7 @@ static int test_sk_X509(void)
|
|||||||
sk_free(s);
|
sk_free(s);
|
||||||
|
|
||||||
/* test push, shift, and free */
|
/* test push, shift, and free */
|
||||||
AssertNotNull(s = sk_X509_new());
|
AssertNotNull(s = sk_X509_new_null());
|
||||||
|
|
||||||
for (i = 0; i < len; ++i) {
|
for (i = 0; i < len; ++i) {
|
||||||
sk_X509_push(s, xList[i]);
|
sk_X509_push(s, xList[i]);
|
||||||
|
@@ -522,7 +522,7 @@ typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
|
|||||||
#define X509_EXTENSION_dup wolfSSL_X509_EXTENSION_dup
|
#define X509_EXTENSION_dup wolfSSL_X509_EXTENSION_dup
|
||||||
|
|
||||||
#define sk_X509_new wolfSSL_sk_X509_new
|
#define sk_X509_new wolfSSL_sk_X509_new
|
||||||
#define sk_X509_new_null wolfSSL_sk_X509_new
|
#define sk_X509_new_null wolfSSL_sk_X509_new_null
|
||||||
#define sk_X509_num wolfSSL_sk_X509_num
|
#define sk_X509_num wolfSSL_sk_X509_num
|
||||||
#define sk_X509_value wolfSSL_sk_X509_value
|
#define sk_X509_value wolfSSL_sk_X509_value
|
||||||
#define sk_X509_shift wolfSSL_sk_X509_shift
|
#define sk_X509_shift wolfSSL_sk_X509_shift
|
||||||
|
@@ -4573,7 +4573,11 @@ WOLFSSL_API int wolfSSL_RAND_set_rand_method(const WOLFSSL_RAND_METHOD *methods)
|
|||||||
|
|
||||||
WOLFSSL_API int wolfSSL_CIPHER_get_bits(const WOLFSSL_CIPHER *c, int *alg_bits);
|
WOLFSSL_API int wolfSSL_CIPHER_get_bits(const WOLFSSL_CIPHER *c, int *alg_bits);
|
||||||
|
|
||||||
WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_new(void);
|
#define WOLF_SK_COMPARE_CB(type, arg) \
|
||||||
|
int (*(arg)) (const type* const* a, const type* const* b)
|
||||||
|
WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_new(
|
||||||
|
WOLF_SK_COMPARE_CB(WOLFSSL_X509, cb));
|
||||||
|
WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_new_null(void);
|
||||||
WOLFSSL_API int wolfSSL_sk_X509_num(const WOLF_STACK_OF(WOLFSSL_X509) *s);
|
WOLFSSL_API int wolfSSL_sk_X509_num(const WOLF_STACK_OF(WOLFSSL_X509) *s);
|
||||||
|
|
||||||
WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_OBJECT_new(void);
|
WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_OBJECT_new(void);
|
||||||
@@ -4596,8 +4600,6 @@ WOLFSSL_API void wolfSSL_sk_X509_INFO_pop_free(WOLF_STACK_OF(WOLFSSL_X509_INFO)*
|
|||||||
void (*f) (WOLFSSL_X509_INFO*));
|
void (*f) (WOLFSSL_X509_INFO*));
|
||||||
WOLFSSL_API void wolfSSL_sk_X509_INFO_free(WOLF_STACK_OF(WOLFSSL_X509_INFO)*);
|
WOLFSSL_API void wolfSSL_sk_X509_INFO_free(WOLF_STACK_OF(WOLFSSL_X509_INFO)*);
|
||||||
|
|
||||||
#define WOLF_SK_COMPARE_CB(type, arg) \
|
|
||||||
int (*(arg)) (const type* const* a, const type* const* b)
|
|
||||||
typedef unsigned long (*wolf_sk_hash_cb) (const void *v);
|
typedef unsigned long (*wolf_sk_hash_cb) (const void *v);
|
||||||
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_sk_X509_NAME_new(
|
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_sk_X509_NAME_new(
|
||||||
WOLF_SK_COMPARE_CB(WOLFSSL_X509_NAME, cb));
|
WOLF_SK_COMPARE_CB(WOLFSSL_X509_NAME, cb));
|
||||||
|
Reference in New Issue
Block a user