MCPcopy Create free account
hub / github.com/apache/httpd / stapling_get_issuer

Function stapling_get_issuer

modules/ssl/ssl_util_stapling.c:93–129  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

91}
92
93static X509 *stapling_get_issuer(modssl_ctx_t *mctx, X509 *x)
94{
95 X509 *issuer = NULL;
96 int i;
97 X509_STORE *st = SSL_CTX_get_cert_store(mctx->ssl_ctx);
98 X509_STORE_CTX *inctx;
99 STACK_OF(X509) *extra_certs = NULL;
100
101#ifdef OPENSSL_NO_SSL_INTERN
102 SSL_CTX_get_extra_chain_certs(mctx->ssl_ctx, &extra_certs);
103#else
104 extra_certs = mctx->ssl_ctx->extra_certs;
105#endif
106
107 for (i = 0; i < sk_X509_num(extra_certs); i++) {
108 issuer = sk_X509_value(extra_certs, i);
109 if (X509_check_issued(issuer, x) == X509_V_OK) {
110#if OPENSSL_VERSION_NUMBER < 0x10100000L
111 CRYPTO_add(&issuer->references, 1, CRYPTO_LOCK_X509);
112#else
113 X509_up_ref(issuer);
114#endif
115 return issuer;
116 }
117 }
118
119 inctx = X509_STORE_CTX_new();
120 if (!X509_STORE_CTX_init(inctx, st, NULL, NULL)) {
121 X509_STORE_CTX_free(inctx);
122 return 0;
123 }
124 if (X509_STORE_CTX_get1_issuer(&issuer, inctx, x) <= 0)
125 issuer = NULL;
126 X509_STORE_CTX_cleanup(inctx);
127 X509_STORE_CTX_free(inctx);
128 return issuer;
129}
130
131int ssl_stapling_init_cert(server_rec *s, apr_pool_t *p, apr_pool_t *ptemp,
132 modssl_ctx_t *mctx, X509 *x)

Callers 1

ssl_stapling_init_certFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected