summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_lib.c
diff options
context:
space:
mode:
authordjm <>2009-01-05 21:36:39 +0000
committerdjm <>2009-01-05 21:36:39 +0000
commit13c662ccd1d22d856f1f2defeea26dd18c0af043 (patch)
treee0d2d687fbd4e4e9eb6bc4b178ea069817f0aba4 /src/lib/libssl/ssl_lib.c
parentacc5957d1b6d6872ce50e4100edebccea0476481 (diff)
downloadopenbsd-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.c36
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
134const char *SSL_version_str=OPENSSL_VERSION_TEXT; 137const 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);
1514err: 1546err:
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