diff options
Diffstat (limited to 'src/lib/libssl/ssl_sess.c')
-rw-r--r-- | src/lib/libssl/ssl_sess.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c index ee88be2b88..8391d62212 100644 --- a/src/lib/libssl/ssl_sess.c +++ b/src/lib/libssl/ssl_sess.c | |||
@@ -59,6 +59,9 @@ | |||
59 | #include <stdio.h> | 59 | #include <stdio.h> |
60 | #include <openssl/lhash.h> | 60 | #include <openssl/lhash.h> |
61 | #include <openssl/rand.h> | 61 | #include <openssl/rand.h> |
62 | #ifndef OPENSSL_NO_ENGINE | ||
63 | #include <openssl/engine.h> | ||
64 | #endif | ||
62 | #include "ssl_locl.h" | 65 | #include "ssl_locl.h" |
63 | 66 | ||
64 | static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s); | 67 | static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s); |
@@ -870,6 +873,25 @@ int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL * ssl, X509 ** x509 , EVP_PK | |||
870 | return ctx->client_cert_cb; | 873 | return ctx->client_cert_cb; |
871 | } | 874 | } |
872 | 875 | ||
876 | #ifndef OPENSSL_NO_ENGINE | ||
877 | int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e) | ||
878 | { | ||
879 | if (!ENGINE_init(e)) | ||
880 | { | ||
881 | SSLerr(SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE, ERR_R_ENGINE_LIB); | ||
882 | return 0; | ||
883 | } | ||
884 | if(!ENGINE_get_ssl_client_cert_function(e)) | ||
885 | { | ||
886 | SSLerr(SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE, SSL_R_NO_CLIENT_CERT_METHOD); | ||
887 | ENGINE_finish(e); | ||
888 | return 0; | ||
889 | } | ||
890 | ctx->client_cert_engine = e; | ||
891 | return 1; | ||
892 | } | ||
893 | #endif | ||
894 | |||
873 | void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, | 895 | void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, |
874 | int (*cb)(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)) | 896 | int (*cb)(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)) |
875 | { | 897 | { |