Skip to content

Commit aa020f3

Browse files
committed
Extend AIA interface
1 parent c807903 commit aa020f3

6 files changed

Lines changed: 85 additions & 0 deletions

File tree

certs/aia/ca-issuers-cert.pem

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDUDCCAjigAwIBAgIUQy4lyOzJcvFVekNsQWuUegW0kGgwDQYJKoZIhvcNAQEL
3+
BQAwGzEZMBcGA1UEAwwQd29sZnNzbC1haWEtdGVzdDAeFw0yNjAxMjYyMzE1NTZa
4+
Fw0yNzAxMjYyMzE1NTZaMBsxGTAXBgNVBAMMEHdvbGZzc2wtYWlhLXRlc3QwggEi
5+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDM1vUyiX+qtPFhhEqZq3bCUKpd
6+
6QtswO7YWj+us79yh99mIGE7EZlSfTv0n3rn2//m5bQ7a+TSYMkDyNjPEH6Z+ub2
7+
qW4EJyc4J9DfC+T9gJM4dvsij+F8TUne/o5iCwFdiZEycEj0vtyYh53du3oqlZTY
8+
yt8q4k5INoTl+ELCX/L0YqR/+Fl2qaloK7YHUb3EdSqBEGoa/IEfnxHMreZWhVYd
9+
pSdDnT9rfNqT5Kb2e+eZbZZSouEmebhx9ioRfIXDadSCCa1JNp4fO3YlcDmmEahx
10+
6TcjEmhUt80+hjhJhqrh4vPlxI24qHmfOe+k2qSimpJse/AUuz7wGRjx6ktfAgMB
11+
AAGjgYswgYgwHQYDVR0OBBYEFMvT3KE5dvI6t3KNrcuctkm6wvXMMB8GA1UdIwQY
12+
MBaAFMvT3KE5dvI6t3KNrcuctkm6wvXMMA8GA1UdEwEB/wQFMAMBAf8wNQYIKwYB
13+
BQUHAQEEKTAnMCUGCCsGAQUFBzAChhlodHRwOi8vZXhhbXBsZS5jb20vY2EucGVt
14+
MA0GCSqGSIb3DQEBCwUAA4IBAQCjxEHOlxVfmE8xgcQCnr1b4IK5EBuIMUaS7lko
15+
AHmHvj7z9rr2cxbJhGYQxcttZ4/SQldRqpmiB0cUmko4LbD9yos4FKlyGe3xWvKa
16+
W17SdpJU2PREShGLLqP7bwiWV6wVyo6puwDHLYSjH5vYr+IcSNNc0GuMZg1OhTWt
17+
2PYG2vGbHoNR0/UyNibGmaPBimg0nb2GTizY7yWm+N/yXnWa6Wc5yyiF1zExw/GO
18+
8O/rF0Lg/Gy/v6LnnNmhSOr9ENPKgQEAHFmJRXBXqDYUNhcm2U3PzlfBa06SHFcr
19+
b59n5jgJmcNSwYDJAYKEhMvjBL40DmiWaRfol2DPoIZ7YtRf
20+
-----END CERTIFICATE-----

src/x509.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15021,6 +15021,34 @@ WOLF_STACK_OF(WOLFSSL_STRING) *wolfSSL_X509_get1_ocsp(WOLFSSL_X509 *x)
1502115021
return list;
1502215022
}
1502315023

15024+
#ifdef WOLFSSL_ASN_CA_ISSUER
15025+
WOLF_STACK_OF(WOLFSSL_STRING) *wolfSSL_X509_get1_ca_issuers(WOLFSSL_X509 *x)
15026+
{
15027+
WOLFSSL_STACK* list = NULL;
15028+
char* url;
15029+
15030+
if (x == NULL || x->authInfoCaIssuerSz == 0)
15031+
return NULL;
15032+
15033+
list = (WOLFSSL_STACK*)XMALLOC(sizeof(WOLFSSL_STACK) +
15034+
x->authInfoCaIssuerSz + 1,
15035+
NULL, DYNAMIC_TYPE_OPENSSL);
15036+
if (list == NULL)
15037+
return NULL;
15038+
15039+
url = (char*)list;
15040+
url += sizeof(WOLFSSL_STACK);
15041+
XMEMCPY(url, x->authInfoCaIssuer, x->authInfoCaIssuerSz);
15042+
url[x->authInfoCaIssuerSz] = '\0';
15043+
15044+
list->data.string = url;
15045+
list->next = NULL;
15046+
list->num = 1;
15047+
15048+
return list;
15049+
}
15050+
#endif /* WOLFSSL_ASN_CA_ISSUER */
15051+
1502415052
int wolfSSL_X509_check_issued(WOLFSSL_X509 *issuer, WOLFSSL_X509 *subject)
1502515053
{
1502615054
WOLFSSL_X509_NAME *issuerName = wolfSSL_X509_get_issuer_name(subject);

tests/api.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19199,6 +19199,31 @@ static int test_wolfSSL_OCSP_REQ_CTX(void)
1919919199
return EXPECT_RESULT();
1920019200
}
1920119201

19202+
static int test_wolfSSL_X509_get1_ca_issuers(void)
19203+
{
19204+
EXPECT_DECLS;
19205+
#if (defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) || \
19206+
defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)) && \
19207+
defined(WOLFSSL_ASN_CA_ISSUER) && !defined(NO_FILESYSTEM)
19208+
X509* cert = NULL;
19209+
STACK_OF(WOLFSSL_STRING) *skStr = NULL;
19210+
WOLFSSL_STRING url = NULL;
19211+
const char* expected = "http://example.com/ca.pem";
19212+
19213+
ExpectNull(wolfSSL_X509_get1_ca_issuers(NULL));
19214+
ExpectNotNull(cert = wolfSSL_X509_load_certificate_file(
19215+
"certs/aia/ca-issuers-cert.pem", WOLFSSL_FILETYPE_PEM));
19216+
ExpectNotNull(skStr = wolfSSL_X509_get1_ca_issuers(cert));
19217+
ExpectIntEQ(wolfSSL_sk_WOLFSSL_STRING_num(skStr), 1);
19218+
ExpectNotNull(url = wolfSSL_sk_WOLFSSL_STRING_value(skStr, 0));
19219+
ExpectIntEQ(XSTRCMP(url, expected), 0);
19220+
19221+
wolfSSL_X509_email_free(skStr);
19222+
wolfSSL_X509_free(cert);
19223+
#endif
19224+
return EXPECT_RESULT();
19225+
}
19226+
1920219227
static int test_no_op_functions(void)
1920319228
{
1920419229
EXPECT_DECLS;
@@ -31666,6 +31691,7 @@ TEST_CASE testCases[] = {
3166631691
TEST_DECL(test_wolfSSL_OCSP_resp_get0),
3166731692
TEST_DECL(test_wolfSSL_OCSP_parse_url),
3166831693
TEST_DECL(test_wolfSSL_OCSP_REQ_CTX),
31694+
TEST_DECL(test_wolfSSL_X509_get1_ca_issuers),
3166931695

3167031696
TEST_DECL(test_wolfSSL_PEM_read),
3167131697

wolfssl/openssl/ssl.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,9 @@ typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
565565
#define X509_get_ex_data wolfSSL_X509_get_ex_data
566566
#define X509_set_ex_data wolfSSL_X509_set_ex_data
567567
#define X509_get1_ocsp wolfSSL_X509_get1_ocsp
568+
#ifdef WOLFSSL_ASN_CA_ISSUER
569+
#define X509_get1_ca_issuers wolfSSL_X509_get1_ca_issuers
570+
#endif /* WOLFSSL_ASN_CA_ISSUER */
568571
#define X509_get_version wolfSSL_X509_get_version
569572
#define X509_get_signature_nid wolfSSL_X509_get_signature_nid
570573
#define X509_set_subject_name wolfSSL_X509_set_subject_name

wolfssl/openssl/x509v3.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,10 @@ typedef struct WOLFSSL_NAME_CONSTRAINTS NAME_CONSTRAINTS;
224224
#define X509V3_EXT_print wolfSSL_X509V3_EXT_print
225225
#define X509V3_EXT_conf_nid wolfSSL_X509V3_EXT_conf_nid
226226
#define X509V3_set_ctx wolfSSL_X509V3_set_ctx
227+
#define X509_get1_ocsp wolfSSL_X509_get1_ocsp
228+
#ifdef WOLFSSL_ASN_CA_ISSUER
229+
#define X509_get1_ca_issuers wolfSSL_X509_get1_ca_issuers
230+
#endif /* WOLFSSL_ASN_CA_ISSUER */
227231
#ifndef NO_WOLFSSL_STUB
228232
#define X509V3_set_nconf(ctx, conf) WC_DO_NOTHING
229233
#define X509V3_EXT_cleanup() WC_DO_NOTHING

wolfssl/ssl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5796,6 +5796,10 @@ WOLFSSL_API int wolfSSL_X509_STORE_CTX_get1_issuer(WOLFSSL_X509 **issuer,
57965796

57975797
WOLFSSL_API void wolfSSL_X509_email_free(WOLF_STACK_OF(WOLFSSL_STRING) *sk);
57985798
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_STRING) *wolfSSL_X509_get1_ocsp(WOLFSSL_X509 *x);
5799+
#ifdef WOLFSSL_ASN_CA_ISSUER
5800+
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_STRING) *wolfSSL_X509_get1_ca_issuers(
5801+
WOLFSSL_X509 *x);
5802+
#endif /* WOLFSSL_ASN_CA_ISSUER */
57995803

58005804
WOLFSSL_API int wolfSSL_X509_check_issued(WOLFSSL_X509 *issuer,
58015805
WOLFSSL_X509 *subject);

0 commit comments

Comments
 (0)