static STACK_OF(X509)* my_sk_X509_dup(glb_ctx *cc, STACK_OF(X509) *stack);
extern int proxy_verify_cert_chain(X509 * ucert, STACK_OF(X509) * cert_chain, proxy_verify_desc * pvd);
-extern void proxy_verify_ctx_init(proxy_verify_ctx_desc * pvxd);
-static proxy_verify_desc *setup_initializers(char *cadir);
-static void destroy_initializers(void *data);
+extern proxy_verify_desc *pvd_setup_initializers(char *cadir);
+extern void pvd_destroy_initializers(void *data);
static STACK_OF(X509)* my_sk_X509_dup(glb_ctx *cc, STACK_OF(X509) *stack)
{
{
proxy_verify_desc *pvd = NULL; /* verification context */
- pvd = setup_initializers(cadir);
+ pvd = pvd_setup_initializers(cadir);
proxy_verify_cert_chain(ucert, cert_chain, pvd);
- destroy_initializers(pvd);
+ pvd_destroy_initializers(pvd);
return ENOSYS;
}
-static proxy_verify_desc *setup_initializers(char *cadir)
+proxy_verify_desc *pvd_setup_initializers(char *cadir)
{
proxy_verify_ctx_desc *pvxd = NULL;
proxy_verify_desc *pvd = NULL;
}
-static void destroy_initializers(void *data)
+void pvd_destroy_initializers(void *data)
{
proxy_verify_desc *pvd = (proxy_verify_desc *)data;
static X509_STORE * canl_create_x509store(canl_x509store_t *store);
static canl_error get_verify_result(unsigned long ssl_err, const SSL *ssl);
+static void setup_SSL_proxy_handler(SSL *ssl, char *cadir);
+extern proxy_verify_desc *pvd_setup_initializers(char *cadir);
+extern void pvd_destroy_initializers(char *cadir);
+
#ifdef DEBUG
static void dbg_print_ssl_error(int errorcode);
#endif
return 0;
}
+void setup_SSL_proxy_handler(SSL *ssl, char *cadir)
+{
+ SSL_set_ex_data(ssl, PVD_SSL_EX_DATA_IDX,
+ pvd_setup_initializers(cadir));
+}
+
static canl_err_code
ssl_connect(glb_ctx *cc, io_handler *io, void *auth_ctx,
struct timeval *timeout, const char * host)
{
SSL *ssl = (SSL *) auth_ctx;
int err = 0, flags;
+ mech_glb_ctx *m_ctx = (mech_glb_ctx *)cc->mech_ctx;
+
if (!cc) {
return EINVAL;
flags = fcntl(io->sock, F_GETFL, 0);
(void)fcntl(io->sock, F_SETFL, flags | O_NONBLOCK);
- //setup_SSL_proxy_handler(cc->ssl_ctx, cacertdir);
+ setup_SSL_proxy_handler(auth_ctx, m_ctx->ca_dir);
SSL_set_fd(ssl, io->sock);
err = do_ssl_connect(cc, io, ssl, timeout);
{
SSL *ssl = (SSL *) auth_ctx;
int err = 0, flags;
+ mech_glb_ctx *m_ctx = (mech_glb_ctx *)cc->mech_ctx;
if (!cc) {
return EINVAL;
flags = fcntl(io->sock, F_GETFL, 0);
(void)fcntl(io->sock, F_SETFL, flags | O_NONBLOCK);
- //setup_SSL_proxy_handler(cc->ssl_ctx, cacertdir);
+ setup_SSL_proxy_handler(auth_ctx, m_ctx->ca_dir);
SSL_set_fd(ssl, io->sock);
err = do_ssl_accept(cc, io, ssl, timeout);