diff options
author | djm <> | 2009-01-09 12:14:11 +0000 |
---|---|---|
committer | djm <> | 2009-01-09 12:14:11 +0000 |
commit | a0fdc9ec41594852f67ec77dfad9cb06bacc4186 (patch) | |
tree | c43f6b3a4d93ad2cb3dcf93275295679d895a033 /src/lib/libssl/ssl_lib.c | |
parent | 5a3c0a05c7f2c5d3c584b7c8d6aec836dd724c80 (diff) | |
download | openbsd-a0fdc9ec41594852f67ec77dfad9cb06bacc4186.tar.gz openbsd-a0fdc9ec41594852f67ec77dfad9cb06bacc4186.tar.bz2 openbsd-a0fdc9ec41594852f67ec77dfad9cb06bacc4186.zip |
import openssl-0.9.8j
Diffstat (limited to 'src/lib/libssl/ssl_lib.c')
-rw-r--r-- | src/lib/libssl/ssl_lib.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 065411aea8..68eee77e6f 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
@@ -130,6 +130,9 @@ | |||
130 | #ifndef OPENSSL_NO_DH | 130 | #ifndef OPENSSL_NO_DH |
131 | #include <openssl/dh.h> | 131 | #include <openssl/dh.h> |
132 | #endif | 132 | #endif |
133 | #ifndef OPENSSL_NO_ENGINE | ||
134 | #include <openssl/engine.h> | ||
135 | #endif | ||
133 | 136 | ||
134 | const char *SSL_version_str=OPENSSL_VERSION_TEXT; | 137 | const char *SSL_version_str=OPENSSL_VERSION_TEXT; |
135 | 138 | ||
@@ -1393,6 +1396,14 @@ SSL_CTX *SSL_CTX_new(SSL_METHOD *meth) | |||
1393 | return(NULL); | 1396 | return(NULL); |
1394 | } | 1397 | } |
1395 | 1398 | ||
1399 | #ifdef OPENSSL_FIPS | ||
1400 | if (FIPS_mode() && (meth->version < TLS1_VERSION)) | ||
1401 | { | ||
1402 | SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE); | ||
1403 | return NULL; | ||
1404 | } | ||
1405 | #endif | ||
1406 | |||
1396 | if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) | 1407 | if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) |
1397 | { | 1408 | { |
1398 | SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); | 1409 | SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); |
@@ -1513,6 +1524,27 @@ SSL_CTX *SSL_CTX_new(SSL_METHOD *meth) | |||
1513 | 1524 | ||
1514 | #endif | 1525 | #endif |
1515 | 1526 | ||
1527 | #ifndef OPENSSL_NO_ENGINE | ||
1528 | ret->client_cert_engine = NULL; | ||
1529 | #ifdef OPENSSL_SSL_CLIENT_ENGINE_AUTO | ||
1530 | #define eng_strx(x) #x | ||
1531 | #define eng_str(x) eng_strx(x) | ||
1532 | /* Use specific client engine automatically... ignore errors */ | ||
1533 | { | ||
1534 | ENGINE *eng; | ||
1535 | eng = ENGINE_by_id(eng_str(OPENSSL_SSL_CLIENT_ENGINE_AUTO)); | ||
1536 | if (!eng) | ||
1537 | { | ||
1538 | ERR_clear_error(); | ||
1539 | ENGINE_load_builtin_engines(); | ||
1540 | eng = ENGINE_by_id(eng_str(OPENSSL_SSL_CLIENT_ENGINE_AUTO)); | ||
1541 | } | ||
1542 | if (!eng || !SSL_CTX_set_client_cert_engine(ret, eng)) | ||
1543 | ERR_clear_error(); | ||
1544 | } | ||
1545 | #endif | ||
1546 | #endif | ||
1547 | |||
1516 | return(ret); | 1548 | return(ret); |
1517 | err: | 1549 | err: |
1518 | SSLerr(SSL_F_SSL_CTX_NEW,ERR_R_MALLOC_FAILURE); | 1550 | SSLerr(SSL_F_SSL_CTX_NEW,ERR_R_MALLOC_FAILURE); |
@@ -1583,6 +1615,10 @@ void SSL_CTX_free(SSL_CTX *a) | |||
1583 | #else | 1615 | #else |
1584 | a->comp_methods = NULL; | 1616 | a->comp_methods = NULL; |
1585 | #endif | 1617 | #endif |
1618 | #ifndef OPENSSL_NO_ENGINE | ||
1619 | if (a->client_cert_engine) | ||
1620 | ENGINE_finish(a->client_cert_engine); | ||
1621 | #endif | ||
1586 | OPENSSL_free(a); | 1622 | OPENSSL_free(a); |
1587 | } | 1623 | } |
1588 | 1624 | ||