diff options
author | djm <> | 2009-01-05 21:36:39 +0000 |
---|---|---|
committer | djm <> | 2009-01-05 21:36:39 +0000 |
commit | 13c662ccd1d22d856f1f2defeea26dd18c0af043 (patch) | |
tree | e0d2d687fbd4e4e9eb6bc4b178ea069817f0aba4 /src/lib/libssl/ssl_lib.c | |
parent | acc5957d1b6d6872ce50e4100edebccea0476481 (diff) | |
download | openbsd-13c662ccd1d22d856f1f2defeea26dd18c0af043.tar.gz openbsd-13c662ccd1d22d856f1f2defeea26dd18c0af043.tar.bz2 openbsd-13c662ccd1d22d856f1f2defeea26dd18c0af043.zip |
update to openssl-0.9.8i; tested by several, especially krw@
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 31f6318357..1ac7d6f951 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 | ||
@@ -1390,6 +1393,14 @@ SSL_CTX *SSL_CTX_new(SSL_METHOD *meth) | |||
1390 | return(NULL); | 1393 | return(NULL); |
1391 | } | 1394 | } |
1392 | 1395 | ||
1396 | #ifdef OPENSSL_FIPS | ||
1397 | if (FIPS_mode() && (meth->version < TLS1_VERSION)) | ||
1398 | { | ||
1399 | SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE); | ||
1400 | return NULL; | ||
1401 | } | ||
1402 | #endif | ||
1403 | |||
1393 | if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) | 1404 | if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) |
1394 | { | 1405 | { |
1395 | SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); | 1406 | SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); |
@@ -1510,6 +1521,27 @@ SSL_CTX *SSL_CTX_new(SSL_METHOD *meth) | |||
1510 | 1521 | ||
1511 | #endif | 1522 | #endif |
1512 | 1523 | ||
1524 | #ifndef OPENSSL_NO_ENGINE | ||
1525 | ret->client_cert_engine = NULL; | ||
1526 | #ifdef OPENSSL_SSL_CLIENT_ENGINE_AUTO | ||
1527 | #define eng_strx(x) #x | ||
1528 | #define eng_str(x) eng_strx(x) | ||
1529 | /* Use specific client engine automatically... ignore errors */ | ||
1530 | { | ||
1531 | ENGINE *eng; | ||
1532 | eng = ENGINE_by_id(eng_str(OPENSSL_SSL_CLIENT_ENGINE_AUTO)); | ||
1533 | if (!eng) | ||
1534 | { | ||
1535 | ERR_clear_error(); | ||
1536 | ENGINE_load_builtin_engines(); | ||
1537 | eng = ENGINE_by_id(eng_str(OPENSSL_SSL_CLIENT_ENGINE_AUTO)); | ||
1538 | } | ||
1539 | if (!eng || !SSL_CTX_set_client_cert_engine(ret, eng)) | ||
1540 | ERR_clear_error(); | ||
1541 | } | ||
1542 | #endif | ||
1543 | #endif | ||
1544 | |||
1513 | return(ret); | 1545 | return(ret); |
1514 | err: | 1546 | err: |
1515 | SSLerr(SSL_F_SSL_CTX_NEW,ERR_R_MALLOC_FAILURE); | 1547 | SSLerr(SSL_F_SSL_CTX_NEW,ERR_R_MALLOC_FAILURE); |
@@ -1580,6 +1612,10 @@ void SSL_CTX_free(SSL_CTX *a) | |||
1580 | #else | 1612 | #else |
1581 | a->comp_methods = NULL; | 1613 | a->comp_methods = NULL; |
1582 | #endif | 1614 | #endif |
1615 | #ifndef OPENSSL_NO_ENGINE | ||
1616 | if (a->client_cert_engine) | ||
1617 | ENGINE_finish(a->client_cert_engine); | ||
1618 | #endif | ||
1583 | OPENSSL_free(a); | 1619 | OPENSSL_free(a); |
1584 | } | 1620 | } |
1585 | 1621 | ||