summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_lib.c
diff options
context:
space:
mode:
authorjsing <>2014-10-31 15:25:55 +0000
committerjsing <>2014-10-31 15:25:55 +0000
commitcd2b36b32fa0f08a47812cf4bc77f005cbba8fc4 (patch)
tree10ac57418996f21ce78687efb7443c1a142dd4a1 /src/lib/libssl/s3_lib.c
parent911a534951a7133a0e7f2314d3a57682c584c2f7 (diff)
downloadopenbsd-cd2b36b32fa0f08a47812cf4bc77f005cbba8fc4.tar.gz
openbsd-cd2b36b32fa0f08a47812cf4bc77f005cbba8fc4.tar.bz2
openbsd-cd2b36b32fa0f08a47812cf4bc77f005cbba8fc4.zip
Add support for automatic DH ephemeral keys.
This allows an SSL server to enable DHE ciphers with a single setting, which results in an DH key being generated based on the server key length. Partly based on OpenSSL.
Diffstat (limited to 'src/lib/libssl/s3_lib.c')
-rw-r--r--src/lib/libssl/s3_lib.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c
index 08c5111129..21f1367442 100644
--- a/src/lib/libssl/s3_lib.c
+++ b/src/lib/libssl/s3_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_lib.c,v 1.83 2014/10/31 14:51:01 jsing Exp $ */ 1/* $OpenBSD: s3_lib.c,v 1.84 2014/10/31 15:25:55 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1994,13 +1994,15 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
1994 ret = 1; 1994 ret = 1;
1995 } 1995 }
1996 break; 1996 break;
1997
1997 case SSL_CTRL_SET_TMP_DH_CB: 1998 case SSL_CTRL_SET_TMP_DH_CB:
1998 { 1999 SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1999 SSLerr(SSL_F_SSL3_CTRL, 2000 return (ret);
2000 ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 2001
2001 return (ret); 2002 case SSL_CTRL_SET_DH_AUTO:
2002 } 2003 s->cert->dh_tmp_auto = larg;
2003 break; 2004 return 1;
2005
2004 case SSL_CTRL_SET_TMP_ECDH: 2006 case SSL_CTRL_SET_TMP_ECDH:
2005 { 2007 {
2006 EC_KEY *ecdh = NULL; 2008 EC_KEY *ecdh = NULL;
@@ -2183,13 +2185,15 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
2183 return 1; 2185 return 1;
2184 } 2186 }
2185 /*break; */ 2187 /*break; */
2188
2186 case SSL_CTRL_SET_TMP_DH_CB: 2189 case SSL_CTRL_SET_TMP_DH_CB:
2187 { 2190 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
2188 SSLerr(SSL_F_SSL3_CTX_CTRL, 2191 return (0);
2189 ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 2192
2190 return (0); 2193 case SSL_CTRL_SET_DH_AUTO:
2191 } 2194 ctx->cert->dh_tmp_auto = larg;
2192 break; 2195 return (1);
2196
2193 case SSL_CTRL_SET_TMP_ECDH: 2197 case SSL_CTRL_SET_TMP_ECDH:
2194 { 2198 {
2195 EC_KEY *ecdh = NULL; 2199 EC_KEY *ecdh = NULL;