diff options
26 files changed, 0 insertions, 434 deletions
diff --git a/src/lib/libssl/d1_clnt.c b/src/lib/libssl/d1_clnt.c index d82b099e08..4b8a11426f 100644 --- a/src/lib/libssl/d1_clnt.c +++ b/src/lib/libssl/d1_clnt.c | |||
| @@ -121,9 +121,7 @@ | |||
| 121 | #include <openssl/evp.h> | 121 | #include <openssl/evp.h> |
| 122 | #include <openssl/md5.h> | 122 | #include <openssl/md5.h> |
| 123 | #include <openssl/bn.h> | 123 | #include <openssl/bn.h> |
| 124 | #ifndef OPENSSL_NO_DH | ||
| 125 | #include <openssl/dh.h> | 124 | #include <openssl/dh.h> |
| 126 | #endif | ||
| 127 | 125 | ||
| 128 | static const SSL_METHOD *dtls1_get_client_method(int ver); | 126 | static const SSL_METHOD *dtls1_get_client_method(int ver); |
| 129 | static int dtls1_get_hello_verify(SSL *s); | 127 | static int dtls1_get_hello_verify(SSL *s); |
| @@ -958,14 +956,12 @@ dtls1_send_client_key_exchange(SSL *s) | |||
| 958 | unsigned long alg_k; | 956 | unsigned long alg_k; |
| 959 | unsigned char *q; | 957 | unsigned char *q; |
| 960 | EVP_PKEY *pkey = NULL; | 958 | EVP_PKEY *pkey = NULL; |
| 961 | #ifndef OPENSSL_NO_ECDH | ||
| 962 | EC_KEY *clnt_ecdh = NULL; | 959 | EC_KEY *clnt_ecdh = NULL; |
| 963 | const EC_POINT *srvr_ecpoint = NULL; | 960 | const EC_POINT *srvr_ecpoint = NULL; |
| 964 | EVP_PKEY *srvr_pub_pkey = NULL; | 961 | EVP_PKEY *srvr_pub_pkey = NULL; |
| 965 | unsigned char *encodedPoint = NULL; | 962 | unsigned char *encodedPoint = NULL; |
| 966 | int encoded_pt_len = 0; | 963 | int encoded_pt_len = 0; |
| 967 | BN_CTX * bn_ctx = NULL; | 964 | BN_CTX * bn_ctx = NULL; |
| 968 | #endif | ||
| 969 | 965 | ||
| 970 | if (s->state == SSL3_ST_CW_KEY_EXCH_A) { | 966 | if (s->state == SSL3_ST_CW_KEY_EXCH_A) { |
| 971 | d = (unsigned char *)s->init_buf->data; | 967 | d = (unsigned char *)s->init_buf->data; |
| @@ -1021,7 +1017,6 @@ dtls1_send_client_key_exchange(SSL *s) | |||
| 1021 | tmp_buf, sizeof tmp_buf); | 1017 | tmp_buf, sizeof tmp_buf); |
| 1022 | OPENSSL_cleanse(tmp_buf, sizeof tmp_buf); | 1018 | OPENSSL_cleanse(tmp_buf, sizeof tmp_buf); |
| 1023 | } | 1019 | } |
| 1024 | #ifndef OPENSSL_NO_DH | ||
| 1025 | else if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { | 1020 | else if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { |
| 1026 | DH *dh_srvr, *dh_clnt; | 1021 | DH *dh_srvr, *dh_clnt; |
| 1027 | 1022 | ||
| @@ -1071,8 +1066,6 @@ dtls1_send_client_key_exchange(SSL *s) | |||
| 1071 | 1066 | ||
| 1072 | /* perhaps clean things up a bit EAY EAY EAY EAY*/ | 1067 | /* perhaps clean things up a bit EAY EAY EAY EAY*/ |
| 1073 | } | 1068 | } |
| 1074 | #endif | ||
| 1075 | #ifndef OPENSSL_NO_ECDH | ||
| 1076 | else if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { | 1069 | else if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { |
| 1077 | const EC_GROUP *srvr_group = NULL; | 1070 | const EC_GROUP *srvr_group = NULL; |
| 1078 | EC_KEY *tkey; | 1071 | EC_KEY *tkey; |
| @@ -1236,7 +1229,6 @@ dtls1_send_client_key_exchange(SSL *s) | |||
| 1236 | EC_KEY_free(clnt_ecdh); | 1229 | EC_KEY_free(clnt_ecdh); |
| 1237 | EVP_PKEY_free(srvr_pub_pkey); | 1230 | EVP_PKEY_free(srvr_pub_pkey); |
| 1238 | } | 1231 | } |
| 1239 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 1240 | 1232 | ||
| 1241 | #ifndef OPENSSL_NO_PSK | 1233 | #ifndef OPENSSL_NO_PSK |
| 1242 | else if (alg_k & SSL_kPSK) { | 1234 | else if (alg_k & SSL_kPSK) { |
| @@ -1340,13 +1332,11 @@ psk_err: | |||
| 1340 | /* SSL3_ST_CW_KEY_EXCH_B */ | 1332 | /* SSL3_ST_CW_KEY_EXCH_B */ |
| 1341 | return (dtls1_do_write(s, SSL3_RT_HANDSHAKE)); | 1333 | return (dtls1_do_write(s, SSL3_RT_HANDSHAKE)); |
| 1342 | err: | 1334 | err: |
| 1343 | #ifndef OPENSSL_NO_ECDH | ||
| 1344 | BN_CTX_free(bn_ctx); | 1335 | BN_CTX_free(bn_ctx); |
| 1345 | free(encodedPoint); | 1336 | free(encodedPoint); |
| 1346 | if (clnt_ecdh != NULL) | 1337 | if (clnt_ecdh != NULL) |
| 1347 | EC_KEY_free(clnt_ecdh); | 1338 | EC_KEY_free(clnt_ecdh); |
| 1348 | EVP_PKEY_free(srvr_pub_pkey); | 1339 | EVP_PKEY_free(srvr_pub_pkey); |
| 1349 | #endif | ||
| 1350 | return (-1); | 1340 | return (-1); |
| 1351 | } | 1341 | } |
| 1352 | 1342 | ||
| @@ -1391,7 +1381,6 @@ dtls1_send_client_verify(SSL *s) | |||
| 1391 | s2n(j, p); | 1381 | s2n(j, p); |
| 1392 | n = j + 2; | 1382 | n = j + 2; |
| 1393 | } else | 1383 | } else |
| 1394 | #ifndef OPENSSL_NO_ECDSA | ||
| 1395 | if (pkey->type == EVP_PKEY_EC) { | 1384 | if (pkey->type == EVP_PKEY_EC) { |
| 1396 | if (!ECDSA_sign(pkey->save_type, | 1385 | if (!ECDSA_sign(pkey->save_type, |
| 1397 | &(data[MD5_DIGEST_LENGTH]), | 1386 | &(data[MD5_DIGEST_LENGTH]), |
| @@ -1404,7 +1393,6 @@ dtls1_send_client_verify(SSL *s) | |||
| 1404 | s2n(j, p); | 1393 | s2n(j, p); |
| 1405 | n = j + 2; | 1394 | n = j + 2; |
| 1406 | } else | 1395 | } else |
| 1407 | #endif | ||
| 1408 | { | 1396 | { |
| 1409 | SSLerr(SSL_F_DTLS1_SEND_CLIENT_VERIFY, ERR_R_INTERNAL_ERROR); | 1397 | SSLerr(SSL_F_DTLS1_SEND_CLIENT_VERIFY, ERR_R_INTERNAL_ERROR); |
| 1410 | goto err; | 1398 | goto err; |
diff --git a/src/lib/libssl/d1_srvr.c b/src/lib/libssl/d1_srvr.c index c8bfc1b03d..3f872de48b 100644 --- a/src/lib/libssl/d1_srvr.c +++ b/src/lib/libssl/d1_srvr.c | |||
| @@ -122,9 +122,7 @@ | |||
| 122 | #include <openssl/x509.h> | 122 | #include <openssl/x509.h> |
| 123 | #include <openssl/md5.h> | 123 | #include <openssl/md5.h> |
| 124 | #include <openssl/bn.h> | 124 | #include <openssl/bn.h> |
| 125 | #ifndef OPENSSL_NO_DH | ||
| 126 | #include <openssl/dh.h> | 125 | #include <openssl/dh.h> |
| 127 | #endif | ||
| 128 | 126 | ||
| 129 | static const SSL_METHOD *dtls1_get_server_method(int ver); | 127 | static const SSL_METHOD *dtls1_get_server_method(int ver); |
| 130 | static int dtls1_send_hello_verify_request(SSL *s); | 128 | static int dtls1_send_hello_verify_request(SSL *s); |
| @@ -1036,17 +1034,13 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1036 | RSA *rsa; | 1034 | RSA *rsa; |
| 1037 | unsigned char md_buf[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH]; | 1035 | unsigned char md_buf[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH]; |
| 1038 | unsigned int u; | 1036 | unsigned int u; |
| 1039 | #ifndef OPENSSL_NO_DH | ||
| 1040 | DH *dh = NULL, *dhp; | 1037 | DH *dh = NULL, *dhp; |
| 1041 | #endif | ||
| 1042 | #ifndef OPENSSL_NO_ECDH | ||
| 1043 | EC_KEY *ecdh = NULL, *ecdhp; | 1038 | EC_KEY *ecdh = NULL, *ecdhp; |
| 1044 | unsigned char *encodedPoint = NULL; | 1039 | unsigned char *encodedPoint = NULL; |
| 1045 | int encodedlen = 0; | 1040 | int encodedlen = 0; |
| 1046 | int curve_id = 0; | 1041 | int curve_id = 0; |
| 1047 | BN_CTX *bn_ctx = NULL; | 1042 | BN_CTX *bn_ctx = NULL; |
| 1048 | 1043 | ||
| 1049 | #endif | ||
| 1050 | #ifndef OPENSSL_NO_PSK | 1044 | #ifndef OPENSSL_NO_PSK |
| 1051 | size_t pskhintlen = 0; | 1045 | size_t pskhintlen = 0; |
| 1052 | #endif | 1046 | #endif |
| @@ -1093,7 +1087,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1093 | r[1] = rsa->e; | 1087 | r[1] = rsa->e; |
| 1094 | s->s3->tmp.use_rsa_tmp = 1; | 1088 | s->s3->tmp.use_rsa_tmp = 1; |
| 1095 | } else | 1089 | } else |
| 1096 | #ifndef OPENSSL_NO_DH | ||
| 1097 | if (type & SSL_kEDH) { | 1090 | if (type & SSL_kEDH) { |
| 1098 | dhp = cert->dh_tmp; | 1091 | dhp = cert->dh_tmp; |
| 1099 | if ((dhp == NULL) && (s->cert->dh_tmp_cb != NULL)) | 1092 | if ((dhp == NULL) && (s->cert->dh_tmp_cb != NULL)) |
| @@ -1138,8 +1131,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1138 | r[1] = dh->g; | 1131 | r[1] = dh->g; |
| 1139 | r[2] = dh->pub_key; | 1132 | r[2] = dh->pub_key; |
| 1140 | } else | 1133 | } else |
| 1141 | #endif | ||
| 1142 | #ifndef OPENSSL_NO_ECDH | ||
| 1143 | if (type & SSL_kEECDH) { | 1134 | if (type & SSL_kEECDH) { |
| 1144 | const EC_GROUP *group; | 1135 | const EC_GROUP *group; |
| 1145 | 1136 | ||
| @@ -1252,7 +1243,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1252 | r[2] = NULL; | 1243 | r[2] = NULL; |
| 1253 | r[3] = NULL; | 1244 | r[3] = NULL; |
| 1254 | } else | 1245 | } else |
| 1255 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 1256 | #ifndef OPENSSL_NO_PSK | 1246 | #ifndef OPENSSL_NO_PSK |
| 1257 | if (type & SSL_kPSK) { | 1247 | if (type & SSL_kPSK) { |
| 1258 | pskhintlen = strlen(s->ctx->psk_identity_hint); | 1248 | pskhintlen = strlen(s->ctx->psk_identity_hint); |
| @@ -1296,7 +1286,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1296 | p += nr[i]; | 1286 | p += nr[i]; |
| 1297 | } | 1287 | } |
| 1298 | 1288 | ||
| 1299 | #ifndef OPENSSL_NO_ECDH | ||
| 1300 | if (type & SSL_kEECDH) { | 1289 | if (type & SSL_kEECDH) { |
| 1301 | /* XXX: For now, we only support named (not generic) curves. | 1290 | /* XXX: For now, we only support named (not generic) curves. |
| 1302 | * In this situation, the serverKeyExchange message has: | 1291 | * In this situation, the serverKeyExchange message has: |
| @@ -1318,7 +1307,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1318 | encodedPoint = NULL; | 1307 | encodedPoint = NULL; |
| 1319 | p += encodedlen; | 1308 | p += encodedlen; |
| 1320 | } | 1309 | } |
| 1321 | #endif | ||
| 1322 | 1310 | ||
| 1323 | #ifndef OPENSSL_NO_PSK | 1311 | #ifndef OPENSSL_NO_PSK |
| 1324 | if (type & SSL_kPSK) { | 1312 | if (type & SSL_kPSK) { |
| @@ -1376,7 +1364,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1376 | s2n(i, p); | 1364 | s2n(i, p); |
| 1377 | n += i + 2; | 1365 | n += i + 2; |
| 1378 | } else | 1366 | } else |
| 1379 | #if !defined(OPENSSL_NO_ECDSA) | ||
| 1380 | if (pkey->type == EVP_PKEY_EC) { | 1367 | if (pkey->type == EVP_PKEY_EC) { |
| 1381 | /* let's do ECDSA */ | 1368 | /* let's do ECDSA */ |
| 1382 | EVP_SignInit_ex(&md_ctx, EVP_ecdsa(), NULL); | 1369 | EVP_SignInit_ex(&md_ctx, EVP_ecdsa(), NULL); |
| @@ -1391,7 +1378,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1391 | s2n(i, p); | 1378 | s2n(i, p); |
| 1392 | n += i + 2; | 1379 | n += i + 2; |
| 1393 | } else | 1380 | } else |
| 1394 | #endif | ||
| 1395 | { | 1381 | { |
| 1396 | /* Is this error check actually needed? */ | 1382 | /* Is this error check actually needed? */ |
| 1397 | al = SSL_AD_HANDSHAKE_FAILURE; | 1383 | al = SSL_AD_HANDSHAKE_FAILURE; |
| @@ -1418,10 +1404,8 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1418 | f_err: | 1404 | f_err: |
| 1419 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1405 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| 1420 | err: | 1406 | err: |
| 1421 | #ifndef OPENSSL_NO_ECDH | ||
| 1422 | free(encodedPoint); | 1407 | free(encodedPoint); |
| 1423 | BN_CTX_free(bn_ctx); | 1408 | BN_CTX_free(bn_ctx); |
| 1424 | #endif | ||
| 1425 | EVP_MD_CTX_cleanup(&md_ctx); | 1409 | EVP_MD_CTX_cleanup(&md_ctx); |
| 1426 | return (-1); | 1410 | return (-1); |
| 1427 | } | 1411 | } |
diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c index 602ab03fe1..4df299de9d 100644 --- a/src/lib/libssl/s3_clnt.c +++ b/src/lib/libssl/s3_clnt.c | |||
| @@ -155,9 +155,7 @@ | |||
| 155 | #include <openssl/objects.h> | 155 | #include <openssl/objects.h> |
| 156 | #include <openssl/evp.h> | 156 | #include <openssl/evp.h> |
| 157 | #include <openssl/md5.h> | 157 | #include <openssl/md5.h> |
| 158 | #ifndef OPENSSL_NO_DH | ||
| 159 | #include <openssl/dh.h> | 158 | #include <openssl/dh.h> |
| 160 | #endif | ||
| 161 | #include <openssl/bn.h> | 159 | #include <openssl/bn.h> |
| 162 | #ifndef OPENSSL_NO_ENGINE | 160 | #ifndef OPENSSL_NO_ENGINE |
| 163 | #include <openssl/engine.h> | 161 | #include <openssl/engine.h> |
| @@ -1263,16 +1261,12 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1263 | EVP_PKEY *pkey = NULL; | 1261 | EVP_PKEY *pkey = NULL; |
| 1264 | const EVP_MD *md = NULL; | 1262 | const EVP_MD *md = NULL; |
| 1265 | RSA *rsa = NULL; | 1263 | RSA *rsa = NULL; |
| 1266 | #ifndef OPENSSL_NO_DH | ||
| 1267 | DH *dh = NULL; | 1264 | DH *dh = NULL; |
| 1268 | #endif | ||
| 1269 | #ifndef OPENSSL_NO_ECDH | ||
| 1270 | EC_KEY *ecdh = NULL; | 1265 | EC_KEY *ecdh = NULL; |
| 1271 | BN_CTX *bn_ctx = NULL; | 1266 | BN_CTX *bn_ctx = NULL; |
| 1272 | EC_POINT *srvr_ecpoint = NULL; | 1267 | EC_POINT *srvr_ecpoint = NULL; |
| 1273 | int curve_nid = 0; | 1268 | int curve_nid = 0; |
| 1274 | int encoded_pt_len = 0; | 1269 | int encoded_pt_len = 0; |
| 1275 | #endif | ||
| 1276 | 1270 | ||
| 1277 | /* | 1271 | /* |
| 1278 | * Use same message size as in ssl3_get_certificate_request() | 1272 | * Use same message size as in ssl3_get_certificate_request() |
| @@ -1306,18 +1300,14 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1306 | RSA_free(s->session->sess_cert->peer_rsa_tmp); | 1300 | RSA_free(s->session->sess_cert->peer_rsa_tmp); |
| 1307 | s->session->sess_cert->peer_rsa_tmp = NULL; | 1301 | s->session->sess_cert->peer_rsa_tmp = NULL; |
| 1308 | } | 1302 | } |
| 1309 | #ifndef OPENSSL_NO_DH | ||
| 1310 | if (s->session->sess_cert->peer_dh_tmp) { | 1303 | if (s->session->sess_cert->peer_dh_tmp) { |
| 1311 | DH_free(s->session->sess_cert->peer_dh_tmp); | 1304 | DH_free(s->session->sess_cert->peer_dh_tmp); |
| 1312 | s->session->sess_cert->peer_dh_tmp = NULL; | 1305 | s->session->sess_cert->peer_dh_tmp = NULL; |
| 1313 | } | 1306 | } |
| 1314 | #endif | ||
| 1315 | #ifndef OPENSSL_NO_ECDH | ||
| 1316 | if (s->session->sess_cert->peer_ecdh_tmp) { | 1307 | if (s->session->sess_cert->peer_ecdh_tmp) { |
| 1317 | EC_KEY_free(s->session->sess_cert->peer_ecdh_tmp); | 1308 | EC_KEY_free(s->session->sess_cert->peer_ecdh_tmp); |
| 1318 | s->session->sess_cert->peer_ecdh_tmp = NULL; | 1309 | s->session->sess_cert->peer_ecdh_tmp = NULL; |
| 1319 | } | 1310 | } |
| 1320 | #endif | ||
| 1321 | } else { | 1311 | } else { |
| 1322 | s->session->sess_cert = ssl_sess_cert_new(); | 1312 | s->session->sess_cert = ssl_sess_cert_new(); |
| 1323 | } | 1313 | } |
| @@ -1424,7 +1414,6 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1424 | s->session->sess_cert->peer_rsa_tmp = rsa; | 1414 | s->session->sess_cert->peer_rsa_tmp = rsa; |
| 1425 | rsa = NULL; | 1415 | rsa = NULL; |
| 1426 | } | 1416 | } |
| 1427 | #ifndef OPENSSL_NO_DH | ||
| 1428 | else if (alg_k & SSL_kEDH) { | 1417 | else if (alg_k & SSL_kEDH) { |
| 1429 | if ((dh = DH_new()) == NULL) { | 1418 | if ((dh = DH_new()) == NULL) { |
| 1430 | SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, | 1419 | SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, |
| @@ -1495,9 +1484,7 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1495 | SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER); | 1484 | SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER); |
| 1496 | goto f_err; | 1485 | goto f_err; |
| 1497 | } | 1486 | } |
| 1498 | #endif /* !OPENSSL_NO_DH */ | ||
| 1499 | 1487 | ||
| 1500 | #ifndef OPENSSL_NO_ECDH | ||
| 1501 | else if (alg_k & SSL_kEECDH) { | 1488 | else if (alg_k & SSL_kEECDH) { |
| 1502 | EC_GROUP *ngroup; | 1489 | EC_GROUP *ngroup; |
| 1503 | const EC_GROUP *group; | 1490 | const EC_GROUP *group; |
| @@ -1585,12 +1572,10 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1585 | pkey = X509_get_pubkey( | 1572 | pkey = X509_get_pubkey( |
| 1586 | s->session->sess_cert->peer_pkeys[ | 1573 | s->session->sess_cert->peer_pkeys[ |
| 1587 | SSL_PKEY_RSA_ENC].x509); | 1574 | SSL_PKEY_RSA_ENC].x509); |
| 1588 | #ifndef OPENSSL_NO_ECDSA | ||
| 1589 | else if (alg_a & SSL_aECDSA) | 1575 | else if (alg_a & SSL_aECDSA) |
| 1590 | pkey = X509_get_pubkey( | 1576 | pkey = X509_get_pubkey( |
| 1591 | s->session->sess_cert->peer_pkeys[ | 1577 | s->session->sess_cert->peer_pkeys[ |
| 1592 | SSL_PKEY_ECC].x509); | 1578 | SSL_PKEY_ECC].x509); |
| 1593 | #endif | ||
| 1594 | /* Else anonymous ECDH, so no certificate or pkey. */ | 1579 | /* Else anonymous ECDH, so no certificate or pkey. */ |
| 1595 | EC_KEY_set_public_key(ecdh, srvr_ecpoint); | 1580 | EC_KEY_set_public_key(ecdh, srvr_ecpoint); |
| 1596 | s->session->sess_cert->peer_ecdh_tmp = ecdh; | 1581 | s->session->sess_cert->peer_ecdh_tmp = ecdh; |
| @@ -1605,7 +1590,6 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1605 | SSL_R_UNEXPECTED_MESSAGE); | 1590 | SSL_R_UNEXPECTED_MESSAGE); |
| 1606 | goto f_err; | 1591 | goto f_err; |
| 1607 | } | 1592 | } |
| 1608 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 1609 | 1593 | ||
| 1610 | /* p points to the next byte, there are 'n' bytes left */ | 1594 | /* p points to the next byte, there are 'n' bytes left */ |
| 1611 | 1595 | ||
| @@ -1731,16 +1715,12 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1731 | EVP_PKEY_free(pkey); | 1715 | EVP_PKEY_free(pkey); |
| 1732 | if (rsa != NULL) | 1716 | if (rsa != NULL) |
| 1733 | RSA_free(rsa); | 1717 | RSA_free(rsa); |
| 1734 | #ifndef OPENSSL_NO_DH | ||
| 1735 | if (dh != NULL) | 1718 | if (dh != NULL) |
| 1736 | DH_free(dh); | 1719 | DH_free(dh); |
| 1737 | #endif | ||
| 1738 | #ifndef OPENSSL_NO_ECDH | ||
| 1739 | BN_CTX_free(bn_ctx); | 1720 | BN_CTX_free(bn_ctx); |
| 1740 | EC_POINT_free(srvr_ecpoint); | 1721 | EC_POINT_free(srvr_ecpoint); |
| 1741 | if (ecdh != NULL) | 1722 | if (ecdh != NULL) |
| 1742 | EC_KEY_free(ecdh); | 1723 | EC_KEY_free(ecdh); |
| 1743 | #endif | ||
| 1744 | EVP_MD_CTX_cleanup(&md_ctx); | 1724 | EVP_MD_CTX_cleanup(&md_ctx); |
| 1745 | return (-1); | 1725 | return (-1); |
| 1746 | } | 1726 | } |
| @@ -2084,14 +2064,12 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2084 | unsigned long alg_k; | 2064 | unsigned long alg_k; |
| 2085 | unsigned char *q; | 2065 | unsigned char *q; |
| 2086 | EVP_PKEY *pkey = NULL; | 2066 | EVP_PKEY *pkey = NULL; |
| 2087 | #ifndef OPENSSL_NO_ECDH | ||
| 2088 | EC_KEY *clnt_ecdh = NULL; | 2067 | EC_KEY *clnt_ecdh = NULL; |
| 2089 | const EC_POINT *srvr_ecpoint = NULL; | 2068 | const EC_POINT *srvr_ecpoint = NULL; |
| 2090 | EVP_PKEY *srvr_pub_pkey = NULL; | 2069 | EVP_PKEY *srvr_pub_pkey = NULL; |
| 2091 | unsigned char *encodedPoint = NULL; | 2070 | unsigned char *encodedPoint = NULL; |
| 2092 | int encoded_pt_len = 0; | 2071 | int encoded_pt_len = 0; |
| 2093 | BN_CTX *bn_ctx = NULL; | 2072 | BN_CTX *bn_ctx = NULL; |
| 2094 | #endif | ||
| 2095 | 2073 | ||
| 2096 | if (s->state == SSL3_ST_CW_KEY_EXCH_A) { | 2074 | if (s->state == SSL3_ST_CW_KEY_EXCH_A) { |
| 2097 | d = (unsigned char *)s->init_buf->data; | 2075 | d = (unsigned char *)s->init_buf->data; |
| @@ -2151,7 +2129,6 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2151 | s, s->session->master_key, tmp_buf, sizeof tmp_buf); | 2129 | s, s->session->master_key, tmp_buf, sizeof tmp_buf); |
| 2152 | OPENSSL_cleanse(tmp_buf, sizeof tmp_buf); | 2130 | OPENSSL_cleanse(tmp_buf, sizeof tmp_buf); |
| 2153 | } | 2131 | } |
| 2154 | #ifndef OPENSSL_NO_DH | ||
| 2155 | else if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { | 2132 | else if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { |
| 2156 | DH *dh_srvr, *dh_clnt; | 2133 | DH *dh_srvr, *dh_clnt; |
| 2157 | 2134 | ||
| @@ -2217,9 +2194,7 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2217 | 2194 | ||
| 2218 | /* perhaps clean things up a bit EAY EAY EAY EAY*/ | 2195 | /* perhaps clean things up a bit EAY EAY EAY EAY*/ |
| 2219 | } | 2196 | } |
| 2220 | #endif | ||
| 2221 | 2197 | ||
| 2222 | #ifndef OPENSSL_NO_ECDH | ||
| 2223 | else if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { | 2198 | else if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { |
| 2224 | const EC_GROUP *srvr_group = NULL; | 2199 | const EC_GROUP *srvr_group = NULL; |
| 2225 | EC_KEY *tkey; | 2200 | EC_KEY *tkey; |
| @@ -2399,7 +2374,6 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2399 | EC_KEY_free(clnt_ecdh); | 2374 | EC_KEY_free(clnt_ecdh); |
| 2400 | EVP_PKEY_free(srvr_pub_pkey); | 2375 | EVP_PKEY_free(srvr_pub_pkey); |
| 2401 | } | 2376 | } |
| 2402 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 2403 | else if (alg_k & SSL_kGOST) { | 2377 | else if (alg_k & SSL_kGOST) { |
| 2404 | /* GOST key exchange message creation */ | 2378 | /* GOST key exchange message creation */ |
| 2405 | EVP_PKEY_CTX *pkey_ctx; | 2379 | EVP_PKEY_CTX *pkey_ctx; |
| @@ -2608,13 +2582,11 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2608 | /* SSL3_ST_CW_KEY_EXCH_B */ | 2582 | /* SSL3_ST_CW_KEY_EXCH_B */ |
| 2609 | return (ssl3_do_write(s, SSL3_RT_HANDSHAKE)); | 2583 | return (ssl3_do_write(s, SSL3_RT_HANDSHAKE)); |
| 2610 | err: | 2584 | err: |
| 2611 | #ifndef OPENSSL_NO_ECDH | ||
| 2612 | BN_CTX_free(bn_ctx); | 2585 | BN_CTX_free(bn_ctx); |
| 2613 | free(encodedPoint); | 2586 | free(encodedPoint); |
| 2614 | if (clnt_ecdh != NULL) | 2587 | if (clnt_ecdh != NULL) |
| 2615 | EC_KEY_free(clnt_ecdh); | 2588 | EC_KEY_free(clnt_ecdh); |
| 2616 | EVP_PKEY_free(srvr_pub_pkey); | 2589 | EVP_PKEY_free(srvr_pub_pkey); |
| 2617 | #endif | ||
| 2618 | return (-1); | 2590 | return (-1); |
| 2619 | } | 2591 | } |
| 2620 | 2592 | ||
| @@ -2703,7 +2675,6 @@ ssl3_send_client_verify(SSL *s) | |||
| 2703 | s2n(j, p); | 2675 | s2n(j, p); |
| 2704 | n = j + 2; | 2676 | n = j + 2; |
| 2705 | } else | 2677 | } else |
| 2706 | #ifndef OPENSSL_NO_ECDSA | ||
| 2707 | if (pkey->type == EVP_PKEY_EC) { | 2678 | if (pkey->type == EVP_PKEY_EC) { |
| 2708 | if (!ECDSA_sign(pkey->save_type, | 2679 | if (!ECDSA_sign(pkey->save_type, |
| 2709 | &(data[MD5_DIGEST_LENGTH]), | 2680 | &(data[MD5_DIGEST_LENGTH]), |
| @@ -2716,7 +2687,6 @@ ssl3_send_client_verify(SSL *s) | |||
| 2716 | s2n(j, p); | 2687 | s2n(j, p); |
| 2717 | n = j + 2; | 2688 | n = j + 2; |
| 2718 | } else | 2689 | } else |
| 2719 | #endif | ||
| 2720 | if (pkey->type == NID_id_GostR3410_94 || | 2690 | if (pkey->type == NID_id_GostR3410_94 || |
| 2721 | pkey->type == NID_id_GostR3410_2001) { | 2691 | pkey->type == NID_id_GostR3410_2001) { |
| 2722 | unsigned char signbuf[64]; | 2692 | unsigned char signbuf[64]; |
| @@ -2836,9 +2806,7 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2836 | EVP_PKEY *pkey = NULL; | 2806 | EVP_PKEY *pkey = NULL; |
| 2837 | SESS_CERT *sc; | 2807 | SESS_CERT *sc; |
| 2838 | RSA *rsa; | 2808 | RSA *rsa; |
| 2839 | #ifndef OPENSSL_NO_DH | ||
| 2840 | DH *dh; | 2809 | DH *dh; |
| 2841 | #endif | ||
| 2842 | 2810 | ||
| 2843 | alg_k = s->s3->tmp.new_cipher->algorithm_mkey; | 2811 | alg_k = s->s3->tmp.new_cipher->algorithm_mkey; |
| 2844 | alg_a = s->s3->tmp.new_cipher->algorithm_auth; | 2812 | alg_a = s->s3->tmp.new_cipher->algorithm_auth; |
| @@ -2855,14 +2823,11 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2855 | } | 2823 | } |
| 2856 | 2824 | ||
| 2857 | rsa = s->session->sess_cert->peer_rsa_tmp; | 2825 | rsa = s->session->sess_cert->peer_rsa_tmp; |
| 2858 | #ifndef OPENSSL_NO_DH | ||
| 2859 | dh = s->session->sess_cert->peer_dh_tmp; | 2826 | dh = s->session->sess_cert->peer_dh_tmp; |
| 2860 | #endif | ||
| 2861 | 2827 | ||
| 2862 | /* This is the passed certificate. */ | 2828 | /* This is the passed certificate. */ |
| 2863 | 2829 | ||
| 2864 | idx = sc->peer_cert_type; | 2830 | idx = sc->peer_cert_type; |
| 2865 | #ifndef OPENSSL_NO_ECDH | ||
| 2866 | if (idx == SSL_PKEY_ECC) { | 2831 | if (idx == SSL_PKEY_ECC) { |
| 2867 | if (ssl_check_srvr_ecc_cert_and_alg(sc->peer_pkeys[idx].x509, | 2832 | if (ssl_check_srvr_ecc_cert_and_alg(sc->peer_pkeys[idx].x509, |
| 2868 | s) == 0) | 2833 | s) == 0) |
| @@ -2874,7 +2839,6 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2874 | return (1); | 2839 | return (1); |
| 2875 | } | 2840 | } |
| 2876 | } | 2841 | } |
| 2877 | #endif | ||
| 2878 | pkey = X509_get_pubkey(sc->peer_pkeys[idx].x509); | 2842 | pkey = X509_get_pubkey(sc->peer_pkeys[idx].x509); |
| 2879 | i = X509_certificate_type(sc->peer_pkeys[idx].x509, pkey); | 2843 | i = X509_certificate_type(sc->peer_pkeys[idx].x509, pkey); |
| 2880 | EVP_PKEY_free(pkey); | 2844 | EVP_PKEY_free(pkey); |
| @@ -2897,7 +2861,6 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2897 | SSL_R_MISSING_RSA_ENCRYPTING_CERT); | 2861 | SSL_R_MISSING_RSA_ENCRYPTING_CERT); |
| 2898 | goto f_err; | 2862 | goto f_err; |
| 2899 | } | 2863 | } |
| 2900 | #ifndef OPENSSL_NO_DH | ||
| 2901 | if ((alg_k & SSL_kEDH) && | 2864 | if ((alg_k & SSL_kEDH) && |
| 2902 | !(has_bits(i, EVP_PK_DH|EVP_PKT_EXCH) || (dh != NULL))) { | 2865 | !(has_bits(i, EVP_PK_DH|EVP_PKT_EXCH) || (dh != NULL))) { |
| 2903 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, | 2866 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, |
| @@ -2913,7 +2876,6 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2913 | SSL_R_MISSING_DH_DSA_CERT); | 2876 | SSL_R_MISSING_DH_DSA_CERT); |
| 2914 | goto f_err; | 2877 | goto f_err; |
| 2915 | } | 2878 | } |
| 2916 | #endif | ||
| 2917 | 2879 | ||
| 2918 | if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && | 2880 | if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && |
| 2919 | !has_bits(i, EVP_PKT_EXP)) { | 2881 | !has_bits(i, EVP_PKT_EXP)) { |
| @@ -2925,7 +2887,6 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2925 | goto f_err; | 2887 | goto f_err; |
| 2926 | } | 2888 | } |
| 2927 | } else | 2889 | } else |
| 2928 | #ifndef OPENSSL_NO_DH | ||
| 2929 | if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { | 2890 | if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { |
| 2930 | if (dh == NULL || DH_size(dh) * 8 > | 2891 | if (dh == NULL || DH_size(dh) * 8 > |
| 2931 | SSL_C_EXPORT_PKEYLENGTH( | 2892 | SSL_C_EXPORT_PKEYLENGTH( |
| @@ -2936,7 +2897,6 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2936 | goto f_err; | 2897 | goto f_err; |
| 2937 | } | 2898 | } |
| 2938 | } else | 2899 | } else |
| 2939 | #endif | ||
| 2940 | { | 2900 | { |
| 2941 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, | 2901 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, |
| 2942 | SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); | 2902 | SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); |
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index e3770bd0ae..2c15a87269 100644 --- a/src/lib/libssl/s3_lib.c +++ b/src/lib/libssl/s3_lib.c | |||
| @@ -157,9 +157,7 @@ | |||
| 157 | #endif /* OPENSSL_NO_EC */ | 157 | #endif /* OPENSSL_NO_EC */ |
| 158 | #endif /* OPENSSL_NO_TLSEXT */ | 158 | #endif /* OPENSSL_NO_TLSEXT */ |
| 159 | #include <openssl/md5.h> | 159 | #include <openssl/md5.h> |
| 160 | #ifndef OPENSSL_NO_DH | ||
| 161 | #include <openssl/dh.h> | 160 | #include <openssl/dh.h> |
| 162 | #endif | ||
| 163 | 161 | ||
| 164 | const char ssl3_version_str[]="SSLv3" OPENSSL_VERSION_PTEXT; | 162 | const char ssl3_version_str[]="SSLv3" OPENSSL_VERSION_PTEXT; |
| 165 | 163 | ||
| @@ -1523,7 +1521,6 @@ SSL_CIPHER ssl3_ciphers[] = { | |||
| 1523 | .alg_bits = 256, | 1521 | .alg_bits = 256, |
| 1524 | }, | 1522 | }, |
| 1525 | 1523 | ||
| 1526 | #ifndef OPENSSL_NO_ECDH | ||
| 1527 | /* Cipher C001 */ | 1524 | /* Cipher C001 */ |
| 1528 | { | 1525 | { |
| 1529 | .valid = 1, | 1526 | .valid = 1, |
| @@ -1923,9 +1920,7 @@ SSL_CIPHER ssl3_ciphers[] = { | |||
| 1923 | .strength_bits = 256, | 1920 | .strength_bits = 256, |
| 1924 | .alg_bits = 256, | 1921 | .alg_bits = 256, |
| 1925 | }, | 1922 | }, |
| 1926 | #endif /* OPENSSL_NO_ECDH */ | ||
| 1927 | 1923 | ||
| 1928 | #ifndef OPENSSL_NO_ECDH | ||
| 1929 | 1924 | ||
| 1930 | /* HMAC based TLS v1.2 ciphersuites from RFC5289 */ | 1925 | /* HMAC based TLS v1.2 ciphersuites from RFC5289 */ |
| 1931 | 1926 | ||
| @@ -2187,7 +2182,6 @@ SSL_CIPHER ssl3_ciphers[] = { | |||
| 2187 | .alg_bits = 256, | 2182 | .alg_bits = 256, |
| 2188 | }, | 2183 | }, |
| 2189 | 2184 | ||
| 2190 | #endif /* OPENSSL_NO_ECDH */ | ||
| 2191 | 2185 | ||
| 2192 | 2186 | ||
| 2193 | #ifdef TEMP_GOST_TLS | 2187 | #ifdef TEMP_GOST_TLS |
| @@ -2343,14 +2337,10 @@ ssl3_free(SSL *s) | |||
| 2343 | if (s->s3->wbuf.buf != NULL) | 2337 | if (s->s3->wbuf.buf != NULL) |
| 2344 | ssl3_release_write_buffer(s); | 2338 | ssl3_release_write_buffer(s); |
| 2345 | free(s->s3->rrec.comp); | 2339 | free(s->s3->rrec.comp); |
| 2346 | #ifndef OPENSSL_NO_DH | ||
| 2347 | if (s->s3->tmp.dh != NULL) | 2340 | if (s->s3->tmp.dh != NULL) |
| 2348 | DH_free(s->s3->tmp.dh); | 2341 | DH_free(s->s3->tmp.dh); |
| 2349 | #endif | ||
| 2350 | #ifndef OPENSSL_NO_ECDH | ||
| 2351 | if (s->s3->tmp.ecdh != NULL) | 2342 | if (s->s3->tmp.ecdh != NULL) |
| 2352 | EC_KEY_free(s->s3->tmp.ecdh); | 2343 | EC_KEY_free(s->s3->tmp.ecdh); |
| 2353 | #endif | ||
| 2354 | 2344 | ||
| 2355 | if (s->s3->tmp.ca_names != NULL) | 2345 | if (s->s3->tmp.ca_names != NULL) |
| 2356 | sk_X509_NAME_pop_free(s->s3->tmp.ca_names, X509_NAME_free); | 2346 | sk_X509_NAME_pop_free(s->s3->tmp.ca_names, X509_NAME_free); |
| @@ -2385,18 +2375,14 @@ ssl3_clear(SSL *s) | |||
| 2385 | free(s->s3->rrec.comp); | 2375 | free(s->s3->rrec.comp); |
| 2386 | s->s3->rrec.comp = NULL; | 2376 | s->s3->rrec.comp = NULL; |
| 2387 | 2377 | ||
| 2388 | #ifndef OPENSSL_NO_DH | ||
| 2389 | if (s->s3->tmp.dh != NULL) { | 2378 | if (s->s3->tmp.dh != NULL) { |
| 2390 | DH_free(s->s3->tmp.dh); | 2379 | DH_free(s->s3->tmp.dh); |
| 2391 | s->s3->tmp.dh = NULL; | 2380 | s->s3->tmp.dh = NULL; |
| 2392 | } | 2381 | } |
| 2393 | #endif | ||
| 2394 | #ifndef OPENSSL_NO_ECDH | ||
| 2395 | if (s->s3->tmp.ecdh != NULL) { | 2382 | if (s->s3->tmp.ecdh != NULL) { |
| 2396 | EC_KEY_free(s->s3->tmp.ecdh); | 2383 | EC_KEY_free(s->s3->tmp.ecdh); |
| 2397 | s->s3->tmp.ecdh = NULL; | 2384 | s->s3->tmp.ecdh = NULL; |
| 2398 | } | 2385 | } |
| 2399 | #endif | ||
| 2400 | #ifndef OPENSSL_NO_TLSEXT | 2386 | #ifndef OPENSSL_NO_TLSEXT |
| 2401 | #ifndef OPENSSL_NO_EC | 2387 | #ifndef OPENSSL_NO_EC |
| 2402 | s->s3->is_probably_safari = 0; | 2388 | s->s3->is_probably_safari = 0; |
| @@ -2505,7 +2491,6 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2505 | return (ret); | 2491 | return (ret); |
| 2506 | } | 2492 | } |
| 2507 | break; | 2493 | break; |
| 2508 | #ifndef OPENSSL_NO_DH | ||
| 2509 | case SSL_CTRL_SET_TMP_DH: | 2494 | case SSL_CTRL_SET_TMP_DH: |
| 2510 | { | 2495 | { |
| 2511 | DH *dh = (DH *)parg; | 2496 | DH *dh = (DH *)parg; |
| @@ -2540,8 +2525,6 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2540 | return (ret); | 2525 | return (ret); |
| 2541 | } | 2526 | } |
| 2542 | break; | 2527 | break; |
| 2543 | #endif | ||
| 2544 | #ifndef OPENSSL_NO_ECDH | ||
| 2545 | case SSL_CTRL_SET_TMP_ECDH: | 2528 | case SSL_CTRL_SET_TMP_ECDH: |
| 2546 | { | 2529 | { |
| 2547 | EC_KEY *ecdh = NULL; | 2530 | EC_KEY *ecdh = NULL; |
| @@ -2578,7 +2561,6 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2578 | return (ret); | 2561 | return (ret); |
| 2579 | } | 2562 | } |
| 2580 | break; | 2563 | break; |
| 2581 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 2582 | #ifndef OPENSSL_NO_TLSEXT | 2564 | #ifndef OPENSSL_NO_TLSEXT |
| 2583 | case SSL_CTRL_SET_TLSEXT_HOSTNAME: | 2565 | case SSL_CTRL_SET_TLSEXT_HOSTNAME: |
| 2584 | if (larg == TLSEXT_NAMETYPE_host_name) { | 2566 | if (larg == TLSEXT_NAMETYPE_host_name) { |
| @@ -2701,21 +2683,17 @@ ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)) | |||
| 2701 | s->cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp; | 2683 | s->cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp; |
| 2702 | } | 2684 | } |
| 2703 | break; | 2685 | break; |
| 2704 | #ifndef OPENSSL_NO_DH | ||
| 2705 | case SSL_CTRL_SET_TMP_DH_CB: | 2686 | case SSL_CTRL_SET_TMP_DH_CB: |
| 2706 | { | 2687 | { |
| 2707 | s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | 2688 | s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; |
| 2708 | } | 2689 | } |
| 2709 | break; | 2690 | break; |
| 2710 | #endif | ||
| 2711 | #ifndef OPENSSL_NO_ECDH | ||
| 2712 | case SSL_CTRL_SET_TMP_ECDH_CB: | 2691 | case SSL_CTRL_SET_TMP_ECDH_CB: |
| 2713 | { | 2692 | { |
| 2714 | s->cert->ecdh_tmp_cb = | 2693 | s->cert->ecdh_tmp_cb = |
| 2715 | (EC_KEY *(*)(SSL *, int, int))fp; | 2694 | (EC_KEY *(*)(SSL *, int, int))fp; |
| 2716 | } | 2695 | } |
| 2717 | break; | 2696 | break; |
| 2718 | #endif | ||
| 2719 | #ifndef OPENSSL_NO_TLSEXT | 2697 | #ifndef OPENSSL_NO_TLSEXT |
| 2720 | case SSL_CTRL_SET_TLSEXT_DEBUG_CB: | 2698 | case SSL_CTRL_SET_TLSEXT_DEBUG_CB: |
| 2721 | s->tlsext_debug_cb = (void (*)(SSL *, int , int, | 2699 | s->tlsext_debug_cb = (void (*)(SSL *, int , int, |
| @@ -2777,7 +2755,6 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2777 | return (0); | 2755 | return (0); |
| 2778 | } | 2756 | } |
| 2779 | break; | 2757 | break; |
| 2780 | #ifndef OPENSSL_NO_DH | ||
| 2781 | case SSL_CTRL_SET_TMP_DH: | 2758 | case SSL_CTRL_SET_TMP_DH: |
| 2782 | { | 2759 | { |
| 2783 | DH *new = NULL, *dh; | 2760 | DH *new = NULL, *dh; |
| @@ -2809,8 +2786,6 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2809 | return (0); | 2786 | return (0); |
| 2810 | } | 2787 | } |
| 2811 | break; | 2788 | break; |
| 2812 | #endif | ||
| 2813 | #ifndef OPENSSL_NO_ECDH | ||
| 2814 | case SSL_CTRL_SET_TMP_ECDH: | 2789 | case SSL_CTRL_SET_TMP_ECDH: |
| 2815 | { | 2790 | { |
| 2816 | EC_KEY *ecdh = NULL; | 2791 | EC_KEY *ecdh = NULL; |
| @@ -2849,7 +2824,6 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2849 | return (0); | 2824 | return (0); |
| 2850 | } | 2825 | } |
| 2851 | break; | 2826 | break; |
| 2852 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 2853 | #ifndef OPENSSL_NO_TLSEXT | 2827 | #ifndef OPENSSL_NO_TLSEXT |
| 2854 | case SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG: | 2828 | case SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG: |
| 2855 | ctx->tlsext_servername_arg = parg; | 2829 | ctx->tlsext_servername_arg = parg; |
| @@ -2932,20 +2906,16 @@ ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void)) | |||
| 2932 | cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp; | 2906 | cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp; |
| 2933 | } | 2907 | } |
| 2934 | break; | 2908 | break; |
| 2935 | #ifndef OPENSSL_NO_DH | ||
| 2936 | case SSL_CTRL_SET_TMP_DH_CB: | 2909 | case SSL_CTRL_SET_TMP_DH_CB: |
| 2937 | { | 2910 | { |
| 2938 | cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | 2911 | cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; |
| 2939 | } | 2912 | } |
| 2940 | break; | 2913 | break; |
| 2941 | #endif | ||
| 2942 | #ifndef OPENSSL_NO_ECDH | ||
| 2943 | case SSL_CTRL_SET_TMP_ECDH_CB: | 2914 | case SSL_CTRL_SET_TMP_ECDH_CB: |
| 2944 | { | 2915 | { |
| 2945 | cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; | 2916 | cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; |
| 2946 | } | 2917 | } |
| 2947 | break; | 2918 | break; |
| 2948 | #endif | ||
| 2949 | #ifndef OPENSSL_NO_TLSEXT | 2919 | #ifndef OPENSSL_NO_TLSEXT |
| 2950 | case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB: | 2920 | case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB: |
| 2951 | ctx->tlsext_servername_callback = | 2921 | ctx->tlsext_servername_callback = |
| @@ -3255,7 +3225,6 @@ ssl3_get_req_cert_type(SSL *s, unsigned char *p) | |||
| 3255 | } | 3225 | } |
| 3256 | #endif | 3226 | #endif |
| 3257 | 3227 | ||
| 3258 | #ifndef OPENSSL_NO_DH | ||
| 3259 | if (alg_k & (SSL_kDHr|SSL_kEDH)) { | 3228 | if (alg_k & (SSL_kDHr|SSL_kEDH)) { |
| 3260 | p[ret++] = SSL3_CT_RSA_FIXED_DH; | 3229 | p[ret++] = SSL3_CT_RSA_FIXED_DH; |
| 3261 | p[ret++] = SSL3_CT_DSS_FIXED_DH; | 3230 | p[ret++] = SSL3_CT_DSS_FIXED_DH; |
| @@ -3265,17 +3234,13 @@ ssl3_get_req_cert_type(SSL *s, unsigned char *p) | |||
| 3265 | p[ret++] = SSL3_CT_RSA_EPHEMERAL_DH; | 3234 | p[ret++] = SSL3_CT_RSA_EPHEMERAL_DH; |
| 3266 | p[ret++] = SSL3_CT_DSS_EPHEMERAL_DH; | 3235 | p[ret++] = SSL3_CT_DSS_EPHEMERAL_DH; |
| 3267 | } | 3236 | } |
| 3268 | #endif /* !OPENSSL_NO_DH */ | ||
| 3269 | p[ret++] = SSL3_CT_RSA_SIGN; | 3237 | p[ret++] = SSL3_CT_RSA_SIGN; |
| 3270 | p[ret++] = SSL3_CT_DSS_SIGN; | 3238 | p[ret++] = SSL3_CT_DSS_SIGN; |
| 3271 | #ifndef OPENSSL_NO_ECDH | ||
| 3272 | if ((alg_k & (SSL_kECDHr|SSL_kECDHe)) && (s->version >= TLS1_VERSION)) { | 3239 | if ((alg_k & (SSL_kECDHr|SSL_kECDHe)) && (s->version >= TLS1_VERSION)) { |
| 3273 | p[ret++] = TLS_CT_RSA_FIXED_ECDH; | 3240 | p[ret++] = TLS_CT_RSA_FIXED_ECDH; |
| 3274 | p[ret++] = TLS_CT_ECDSA_FIXED_ECDH; | 3241 | p[ret++] = TLS_CT_ECDSA_FIXED_ECDH; |
| 3275 | } | 3242 | } |
| 3276 | #endif | ||
| 3277 | 3243 | ||
| 3278 | #ifndef OPENSSL_NO_ECDSA | ||
| 3279 | /* | 3244 | /* |
| 3280 | * ECDSA certs can be used with RSA cipher suites as well | 3245 | * ECDSA certs can be used with RSA cipher suites as well |
| 3281 | * so we don't need to check for SSL_kECDH or SSL_kEECDH | 3246 | * so we don't need to check for SSL_kECDH or SSL_kEECDH |
| @@ -3283,7 +3248,6 @@ ssl3_get_req_cert_type(SSL *s, unsigned char *p) | |||
| 3283 | if (s->version >= TLS1_VERSION) { | 3248 | if (s->version >= TLS1_VERSION) { |
| 3284 | p[ret++] = TLS_CT_ECDSA_SIGN; | 3249 | p[ret++] = TLS_CT_ECDSA_SIGN; |
| 3285 | } | 3250 | } |
| 3286 | #endif | ||
| 3287 | return (ret); | 3251 | return (ret); |
| 3288 | } | 3252 | } |
| 3289 | 3253 | ||
diff --git a/src/lib/libssl/s3_srvr.c b/src/lib/libssl/s3_srvr.c index c16f7bb2ef..b53f27a47d 100644 --- a/src/lib/libssl/s3_srvr.c +++ b/src/lib/libssl/s3_srvr.c | |||
| @@ -159,9 +159,7 @@ | |||
| 159 | #include <openssl/evp.h> | 159 | #include <openssl/evp.h> |
| 160 | #include <openssl/hmac.h> | 160 | #include <openssl/hmac.h> |
| 161 | #include <openssl/x509.h> | 161 | #include <openssl/x509.h> |
| 162 | #ifndef OPENSSL_NO_DH | ||
| 163 | #include <openssl/dh.h> | 162 | #include <openssl/dh.h> |
| 164 | #endif | ||
| 165 | #include <openssl/bn.h> | 163 | #include <openssl/bn.h> |
| 166 | #include <openssl/md5.h> | 164 | #include <openssl/md5.h> |
| 167 | 165 | ||
| @@ -881,18 +879,14 @@ ssl3_check_client_hello(SSL *s) | |||
| 881 | * which will now be aborted. (A full SSL_clear would be too | 879 | * which will now be aborted. (A full SSL_clear would be too |
| 882 | * much.) | 880 | * much.) |
| 883 | */ | 881 | */ |
| 884 | #ifndef OPENSSL_NO_DH | ||
| 885 | if (s->s3->tmp.dh != NULL) { | 882 | if (s->s3->tmp.dh != NULL) { |
| 886 | DH_free(s->s3->tmp.dh); | 883 | DH_free(s->s3->tmp.dh); |
| 887 | s->s3->tmp.dh = NULL; | 884 | s->s3->tmp.dh = NULL; |
| 888 | } | 885 | } |
| 889 | #endif | ||
| 890 | #ifndef OPENSSL_NO_ECDH | ||
| 891 | if (s->s3->tmp.ecdh != NULL) { | 886 | if (s->s3->tmp.ecdh != NULL) { |
| 892 | EC_KEY_free(s->s3->tmp.ecdh); | 887 | EC_KEY_free(s->s3->tmp.ecdh); |
| 893 | s->s3->tmp.ecdh = NULL; | 888 | s->s3->tmp.ecdh = NULL; |
| 894 | } | 889 | } |
| 895 | #endif | ||
| 896 | s->s3->flags |= SSL3_FLAGS_SGC_RESTART_DONE; | 890 | s->s3->flags |= SSL3_FLAGS_SGC_RESTART_DONE; |
| 897 | return (2); | 891 | return (2); |
| 898 | } | 892 | } |
| @@ -1509,17 +1503,13 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1509 | RSA *rsa; | 1503 | RSA *rsa; |
| 1510 | unsigned char md_buf[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH]; | 1504 | unsigned char md_buf[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH]; |
| 1511 | unsigned int u; | 1505 | unsigned int u; |
| 1512 | #ifndef OPENSSL_NO_DH | ||
| 1513 | DH *dh = NULL, *dhp; | 1506 | DH *dh = NULL, *dhp; |
| 1514 | #endif | ||
| 1515 | #ifndef OPENSSL_NO_ECDH | ||
| 1516 | EC_KEY *ecdh = NULL, *ecdhp; | 1507 | EC_KEY *ecdh = NULL, *ecdhp; |
| 1517 | unsigned char *encodedPoint = NULL; | 1508 | unsigned char *encodedPoint = NULL; |
| 1518 | int encodedlen = 0; | 1509 | int encodedlen = 0; |
| 1519 | int curve_id = 0; | 1510 | int curve_id = 0; |
| 1520 | BN_CTX *bn_ctx = NULL; | 1511 | BN_CTX *bn_ctx = NULL; |
| 1521 | 1512 | ||
| 1522 | #endif | ||
| 1523 | #ifndef OPENSSL_NO_PSK | 1513 | #ifndef OPENSSL_NO_PSK |
| 1524 | size_t pskhintlen = 0; | 1514 | size_t pskhintlen = 0; |
| 1525 | #endif | 1515 | #endif |
| @@ -1570,7 +1560,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1570 | r[1] = rsa->e; | 1560 | r[1] = rsa->e; |
| 1571 | s->s3->tmp.use_rsa_tmp = 1; | 1561 | s->s3->tmp.use_rsa_tmp = 1; |
| 1572 | } else | 1562 | } else |
| 1573 | #ifndef OPENSSL_NO_DH | ||
| 1574 | if (type & SSL_kEDH) { | 1563 | if (type & SSL_kEDH) { |
| 1575 | dhp = cert->dh_tmp; | 1564 | dhp = cert->dh_tmp; |
| 1576 | if ((dhp == NULL) && (s->cert->dh_tmp_cb != NULL)) | 1565 | if ((dhp == NULL) && (s->cert->dh_tmp_cb != NULL)) |
| @@ -1620,8 +1609,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1620 | r[1] = dh->g; | 1609 | r[1] = dh->g; |
| 1621 | r[2] = dh->pub_key; | 1610 | r[2] = dh->pub_key; |
| 1622 | } else | 1611 | } else |
| 1623 | #endif | ||
| 1624 | #ifndef OPENSSL_NO_ECDH | ||
| 1625 | if (type & SSL_kEECDH) { | 1612 | if (type & SSL_kEECDH) { |
| 1626 | const EC_GROUP *group; | 1613 | const EC_GROUP *group; |
| 1627 | 1614 | ||
| @@ -1747,7 +1734,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1747 | r[2] = NULL; | 1734 | r[2] = NULL; |
| 1748 | r[3] = NULL; | 1735 | r[3] = NULL; |
| 1749 | } else | 1736 | } else |
| 1750 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 1751 | #ifndef OPENSSL_NO_PSK | 1737 | #ifndef OPENSSL_NO_PSK |
| 1752 | if (type & SSL_kPSK) { | 1738 | if (type & SSL_kPSK) { |
| 1753 | pskhintlen = strlen(s->ctx->psk_identity_hint); | 1739 | pskhintlen = strlen(s->ctx->psk_identity_hint); |
| @@ -1793,7 +1779,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1793 | p += nr[i]; | 1779 | p += nr[i]; |
| 1794 | } | 1780 | } |
| 1795 | 1781 | ||
| 1796 | #ifndef OPENSSL_NO_ECDH | ||
| 1797 | if (type & SSL_kEECDH) { | 1782 | if (type & SSL_kEECDH) { |
| 1798 | /* | 1783 | /* |
| 1799 | * XXX: For now, we only support named (not generic) | 1784 | * XXX: For now, we only support named (not generic) |
| @@ -1817,7 +1802,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1817 | encodedPoint = NULL; | 1802 | encodedPoint = NULL; |
| 1818 | p += encodedlen; | 1803 | p += encodedlen; |
| 1819 | } | 1804 | } |
| 1820 | #endif | ||
| 1821 | 1805 | ||
| 1822 | #ifndef OPENSSL_NO_PSK | 1806 | #ifndef OPENSSL_NO_PSK |
| 1823 | if (type & SSL_kPSK) { | 1807 | if (type & SSL_kPSK) { |
| @@ -1926,10 +1910,8 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1926 | f_err: | 1910 | f_err: |
| 1927 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1911 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| 1928 | err: | 1912 | err: |
| 1929 | #ifndef OPENSSL_NO_ECDH | ||
| 1930 | free(encodedPoint); | 1913 | free(encodedPoint); |
| 1931 | BN_CTX_free(bn_ctx); | 1914 | BN_CTX_free(bn_ctx); |
| 1932 | #endif | ||
| 1933 | EVP_MD_CTX_cleanup(&md_ctx); | 1915 | EVP_MD_CTX_cleanup(&md_ctx); |
| 1934 | return (-1); | 1916 | return (-1); |
| 1935 | } | 1917 | } |
| @@ -2042,18 +2024,14 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2042 | unsigned char *p; | 2024 | unsigned char *p; |
| 2043 | RSA *rsa = NULL; | 2025 | RSA *rsa = NULL; |
| 2044 | EVP_PKEY *pkey = NULL; | 2026 | EVP_PKEY *pkey = NULL; |
| 2045 | #ifndef OPENSSL_NO_DH | ||
| 2046 | BIGNUM *pub = NULL; | 2027 | BIGNUM *pub = NULL; |
| 2047 | DH *dh_srvr; | 2028 | DH *dh_srvr; |
| 2048 | #endif | ||
| 2049 | 2029 | ||
| 2050 | #ifndef OPENSSL_NO_ECDH | ||
| 2051 | EC_KEY *srvr_ecdh = NULL; | 2030 | EC_KEY *srvr_ecdh = NULL; |
| 2052 | EVP_PKEY *clnt_pub_pkey = NULL; | 2031 | EVP_PKEY *clnt_pub_pkey = NULL; |
| 2053 | EC_POINT *clnt_ecpoint = NULL; | 2032 | EC_POINT *clnt_ecpoint = NULL; |
| 2054 | BN_CTX *bn_ctx = NULL; | 2033 | BN_CTX *bn_ctx = NULL; |
| 2055 | 2034 | ||
| 2056 | #endif | ||
| 2057 | 2035 | ||
| 2058 | n = s->method->ssl_get_message(s, SSL3_ST_SR_KEY_EXCH_A, | 2036 | n = s->method->ssl_get_message(s, SSL3_ST_SR_KEY_EXCH_A, |
| 2059 | SSL3_ST_SR_KEY_EXCH_B, SSL3_MT_CLIENT_KEY_EXCHANGE, | 2037 | SSL3_ST_SR_KEY_EXCH_B, SSL3_MT_CLIENT_KEY_EXCHANGE, |
| @@ -2173,7 +2151,6 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2173 | p, i); | 2151 | p, i); |
| 2174 | OPENSSL_cleanse(p, i); | 2152 | OPENSSL_cleanse(p, i); |
| 2175 | } else | 2153 | } else |
| 2176 | #ifndef OPENSSL_NO_DH | ||
| 2177 | if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { | 2154 | if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { |
| 2178 | n2s(p, i); | 2155 | n2s(p, i); |
| 2179 | if (n != i + 2) { | 2156 | if (n != i + 2) { |
| @@ -2229,9 +2206,7 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2229 | s, s->session->master_key, p, i); | 2206 | s, s->session->master_key, p, i); |
| 2230 | OPENSSL_cleanse(p, i); | 2207 | OPENSSL_cleanse(p, i); |
| 2231 | } else | 2208 | } else |
| 2232 | #endif | ||
| 2233 | 2209 | ||
| 2234 | #ifndef OPENSSL_NO_ECDH | ||
| 2235 | if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { | 2210 | if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { |
| 2236 | int ret = 1; | 2211 | int ret = 1; |
| 2237 | int field_size = 0; | 2212 | int field_size = 0; |
| @@ -2375,7 +2350,6 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2375 | OPENSSL_cleanse(p, i); | 2350 | OPENSSL_cleanse(p, i); |
| 2376 | return (ret); | 2351 | return (ret); |
| 2377 | } else | 2352 | } else |
| 2378 | #endif | ||
| 2379 | #ifndef OPENSSL_NO_PSK | 2353 | #ifndef OPENSSL_NO_PSK |
| 2380 | if (alg_k & SSL_kPSK) { | 2354 | if (alg_k & SSL_kPSK) { |
| 2381 | unsigned char *t = NULL; | 2355 | unsigned char *t = NULL; |
| @@ -2542,13 +2516,11 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2542 | f_err: | 2516 | f_err: |
| 2543 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 2517 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| 2544 | err: | 2518 | err: |
| 2545 | #ifndef OPENSSL_NO_ECDH | ||
| 2546 | EVP_PKEY_free(clnt_pub_pkey); | 2519 | EVP_PKEY_free(clnt_pub_pkey); |
| 2547 | EC_POINT_free(clnt_ecpoint); | 2520 | EC_POINT_free(clnt_ecpoint); |
| 2548 | if (srvr_ecdh != NULL) | 2521 | if (srvr_ecdh != NULL) |
| 2549 | EC_KEY_free(srvr_ecdh); | 2522 | EC_KEY_free(srvr_ecdh); |
| 2550 | BN_CTX_free(bn_ctx); | 2523 | BN_CTX_free(bn_ctx); |
| 2551 | #endif | ||
| 2552 | return (-1); | 2524 | return (-1); |
| 2553 | } | 2525 | } |
| 2554 | 2526 | ||
| @@ -2722,7 +2694,6 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2722 | goto f_err; | 2694 | goto f_err; |
| 2723 | } | 2695 | } |
| 2724 | } else | 2696 | } else |
| 2725 | #ifndef OPENSSL_NO_ECDSA | ||
| 2726 | if (pkey->type == EVP_PKEY_EC) { | 2697 | if (pkey->type == EVP_PKEY_EC) { |
| 2727 | j = ECDSA_verify(pkey->save_type, | 2698 | j = ECDSA_verify(pkey->save_type, |
| 2728 | &(s->s3->tmp.cert_verify_md[MD5_DIGEST_LENGTH]), | 2699 | &(s->s3->tmp.cert_verify_md[MD5_DIGEST_LENGTH]), |
| @@ -2735,7 +2706,6 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2735 | goto f_err; | 2706 | goto f_err; |
| 2736 | } | 2707 | } |
| 2737 | } else | 2708 | } else |
| 2738 | #endif | ||
| 2739 | if (pkey->type == NID_id_GostR3410_94 || | 2709 | if (pkey->type == NID_id_GostR3410_94 || |
| 2740 | pkey->type == NID_id_GostR3410_2001) { | 2710 | pkey->type == NID_id_GostR3410_2001) { |
| 2741 | unsigned char signature[64]; | 2711 | unsigned char signature[64]; |
diff --git a/src/lib/libssl/src/ssl/d1_clnt.c b/src/lib/libssl/src/ssl/d1_clnt.c index d82b099e08..4b8a11426f 100644 --- a/src/lib/libssl/src/ssl/d1_clnt.c +++ b/src/lib/libssl/src/ssl/d1_clnt.c | |||
| @@ -121,9 +121,7 @@ | |||
| 121 | #include <openssl/evp.h> | 121 | #include <openssl/evp.h> |
| 122 | #include <openssl/md5.h> | 122 | #include <openssl/md5.h> |
| 123 | #include <openssl/bn.h> | 123 | #include <openssl/bn.h> |
| 124 | #ifndef OPENSSL_NO_DH | ||
| 125 | #include <openssl/dh.h> | 124 | #include <openssl/dh.h> |
| 126 | #endif | ||
| 127 | 125 | ||
| 128 | static const SSL_METHOD *dtls1_get_client_method(int ver); | 126 | static const SSL_METHOD *dtls1_get_client_method(int ver); |
| 129 | static int dtls1_get_hello_verify(SSL *s); | 127 | static int dtls1_get_hello_verify(SSL *s); |
| @@ -958,14 +956,12 @@ dtls1_send_client_key_exchange(SSL *s) | |||
| 958 | unsigned long alg_k; | 956 | unsigned long alg_k; |
| 959 | unsigned char *q; | 957 | unsigned char *q; |
| 960 | EVP_PKEY *pkey = NULL; | 958 | EVP_PKEY *pkey = NULL; |
| 961 | #ifndef OPENSSL_NO_ECDH | ||
| 962 | EC_KEY *clnt_ecdh = NULL; | 959 | EC_KEY *clnt_ecdh = NULL; |
| 963 | const EC_POINT *srvr_ecpoint = NULL; | 960 | const EC_POINT *srvr_ecpoint = NULL; |
| 964 | EVP_PKEY *srvr_pub_pkey = NULL; | 961 | EVP_PKEY *srvr_pub_pkey = NULL; |
| 965 | unsigned char *encodedPoint = NULL; | 962 | unsigned char *encodedPoint = NULL; |
| 966 | int encoded_pt_len = 0; | 963 | int encoded_pt_len = 0; |
| 967 | BN_CTX * bn_ctx = NULL; | 964 | BN_CTX * bn_ctx = NULL; |
| 968 | #endif | ||
| 969 | 965 | ||
| 970 | if (s->state == SSL3_ST_CW_KEY_EXCH_A) { | 966 | if (s->state == SSL3_ST_CW_KEY_EXCH_A) { |
| 971 | d = (unsigned char *)s->init_buf->data; | 967 | d = (unsigned char *)s->init_buf->data; |
| @@ -1021,7 +1017,6 @@ dtls1_send_client_key_exchange(SSL *s) | |||
| 1021 | tmp_buf, sizeof tmp_buf); | 1017 | tmp_buf, sizeof tmp_buf); |
| 1022 | OPENSSL_cleanse(tmp_buf, sizeof tmp_buf); | 1018 | OPENSSL_cleanse(tmp_buf, sizeof tmp_buf); |
| 1023 | } | 1019 | } |
| 1024 | #ifndef OPENSSL_NO_DH | ||
| 1025 | else if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { | 1020 | else if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { |
| 1026 | DH *dh_srvr, *dh_clnt; | 1021 | DH *dh_srvr, *dh_clnt; |
| 1027 | 1022 | ||
| @@ -1071,8 +1066,6 @@ dtls1_send_client_key_exchange(SSL *s) | |||
| 1071 | 1066 | ||
| 1072 | /* perhaps clean things up a bit EAY EAY EAY EAY*/ | 1067 | /* perhaps clean things up a bit EAY EAY EAY EAY*/ |
| 1073 | } | 1068 | } |
| 1074 | #endif | ||
| 1075 | #ifndef OPENSSL_NO_ECDH | ||
| 1076 | else if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { | 1069 | else if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { |
| 1077 | const EC_GROUP *srvr_group = NULL; | 1070 | const EC_GROUP *srvr_group = NULL; |
| 1078 | EC_KEY *tkey; | 1071 | EC_KEY *tkey; |
| @@ -1236,7 +1229,6 @@ dtls1_send_client_key_exchange(SSL *s) | |||
| 1236 | EC_KEY_free(clnt_ecdh); | 1229 | EC_KEY_free(clnt_ecdh); |
| 1237 | EVP_PKEY_free(srvr_pub_pkey); | 1230 | EVP_PKEY_free(srvr_pub_pkey); |
| 1238 | } | 1231 | } |
| 1239 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 1240 | 1232 | ||
| 1241 | #ifndef OPENSSL_NO_PSK | 1233 | #ifndef OPENSSL_NO_PSK |
| 1242 | else if (alg_k & SSL_kPSK) { | 1234 | else if (alg_k & SSL_kPSK) { |
| @@ -1340,13 +1332,11 @@ psk_err: | |||
| 1340 | /* SSL3_ST_CW_KEY_EXCH_B */ | 1332 | /* SSL3_ST_CW_KEY_EXCH_B */ |
| 1341 | return (dtls1_do_write(s, SSL3_RT_HANDSHAKE)); | 1333 | return (dtls1_do_write(s, SSL3_RT_HANDSHAKE)); |
| 1342 | err: | 1334 | err: |
| 1343 | #ifndef OPENSSL_NO_ECDH | ||
| 1344 | BN_CTX_free(bn_ctx); | 1335 | BN_CTX_free(bn_ctx); |
| 1345 | free(encodedPoint); | 1336 | free(encodedPoint); |
| 1346 | if (clnt_ecdh != NULL) | 1337 | if (clnt_ecdh != NULL) |
| 1347 | EC_KEY_free(clnt_ecdh); | 1338 | EC_KEY_free(clnt_ecdh); |
| 1348 | EVP_PKEY_free(srvr_pub_pkey); | 1339 | EVP_PKEY_free(srvr_pub_pkey); |
| 1349 | #endif | ||
| 1350 | return (-1); | 1340 | return (-1); |
| 1351 | } | 1341 | } |
| 1352 | 1342 | ||
| @@ -1391,7 +1381,6 @@ dtls1_send_client_verify(SSL *s) | |||
| 1391 | s2n(j, p); | 1381 | s2n(j, p); |
| 1392 | n = j + 2; | 1382 | n = j + 2; |
| 1393 | } else | 1383 | } else |
| 1394 | #ifndef OPENSSL_NO_ECDSA | ||
| 1395 | if (pkey->type == EVP_PKEY_EC) { | 1384 | if (pkey->type == EVP_PKEY_EC) { |
| 1396 | if (!ECDSA_sign(pkey->save_type, | 1385 | if (!ECDSA_sign(pkey->save_type, |
| 1397 | &(data[MD5_DIGEST_LENGTH]), | 1386 | &(data[MD5_DIGEST_LENGTH]), |
| @@ -1404,7 +1393,6 @@ dtls1_send_client_verify(SSL *s) | |||
| 1404 | s2n(j, p); | 1393 | s2n(j, p); |
| 1405 | n = j + 2; | 1394 | n = j + 2; |
| 1406 | } else | 1395 | } else |
| 1407 | #endif | ||
| 1408 | { | 1396 | { |
| 1409 | SSLerr(SSL_F_DTLS1_SEND_CLIENT_VERIFY, ERR_R_INTERNAL_ERROR); | 1397 | SSLerr(SSL_F_DTLS1_SEND_CLIENT_VERIFY, ERR_R_INTERNAL_ERROR); |
| 1410 | goto err; | 1398 | goto err; |
diff --git a/src/lib/libssl/src/ssl/d1_srvr.c b/src/lib/libssl/src/ssl/d1_srvr.c index c8bfc1b03d..3f872de48b 100644 --- a/src/lib/libssl/src/ssl/d1_srvr.c +++ b/src/lib/libssl/src/ssl/d1_srvr.c | |||
| @@ -122,9 +122,7 @@ | |||
| 122 | #include <openssl/x509.h> | 122 | #include <openssl/x509.h> |
| 123 | #include <openssl/md5.h> | 123 | #include <openssl/md5.h> |
| 124 | #include <openssl/bn.h> | 124 | #include <openssl/bn.h> |
| 125 | #ifndef OPENSSL_NO_DH | ||
| 126 | #include <openssl/dh.h> | 125 | #include <openssl/dh.h> |
| 127 | #endif | ||
| 128 | 126 | ||
| 129 | static const SSL_METHOD *dtls1_get_server_method(int ver); | 127 | static const SSL_METHOD *dtls1_get_server_method(int ver); |
| 130 | static int dtls1_send_hello_verify_request(SSL *s); | 128 | static int dtls1_send_hello_verify_request(SSL *s); |
| @@ -1036,17 +1034,13 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1036 | RSA *rsa; | 1034 | RSA *rsa; |
| 1037 | unsigned char md_buf[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH]; | 1035 | unsigned char md_buf[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH]; |
| 1038 | unsigned int u; | 1036 | unsigned int u; |
| 1039 | #ifndef OPENSSL_NO_DH | ||
| 1040 | DH *dh = NULL, *dhp; | 1037 | DH *dh = NULL, *dhp; |
| 1041 | #endif | ||
| 1042 | #ifndef OPENSSL_NO_ECDH | ||
| 1043 | EC_KEY *ecdh = NULL, *ecdhp; | 1038 | EC_KEY *ecdh = NULL, *ecdhp; |
| 1044 | unsigned char *encodedPoint = NULL; | 1039 | unsigned char *encodedPoint = NULL; |
| 1045 | int encodedlen = 0; | 1040 | int encodedlen = 0; |
| 1046 | int curve_id = 0; | 1041 | int curve_id = 0; |
| 1047 | BN_CTX *bn_ctx = NULL; | 1042 | BN_CTX *bn_ctx = NULL; |
| 1048 | 1043 | ||
| 1049 | #endif | ||
| 1050 | #ifndef OPENSSL_NO_PSK | 1044 | #ifndef OPENSSL_NO_PSK |
| 1051 | size_t pskhintlen = 0; | 1045 | size_t pskhintlen = 0; |
| 1052 | #endif | 1046 | #endif |
| @@ -1093,7 +1087,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1093 | r[1] = rsa->e; | 1087 | r[1] = rsa->e; |
| 1094 | s->s3->tmp.use_rsa_tmp = 1; | 1088 | s->s3->tmp.use_rsa_tmp = 1; |
| 1095 | } else | 1089 | } else |
| 1096 | #ifndef OPENSSL_NO_DH | ||
| 1097 | if (type & SSL_kEDH) { | 1090 | if (type & SSL_kEDH) { |
| 1098 | dhp = cert->dh_tmp; | 1091 | dhp = cert->dh_tmp; |
| 1099 | if ((dhp == NULL) && (s->cert->dh_tmp_cb != NULL)) | 1092 | if ((dhp == NULL) && (s->cert->dh_tmp_cb != NULL)) |
| @@ -1138,8 +1131,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1138 | r[1] = dh->g; | 1131 | r[1] = dh->g; |
| 1139 | r[2] = dh->pub_key; | 1132 | r[2] = dh->pub_key; |
| 1140 | } else | 1133 | } else |
| 1141 | #endif | ||
| 1142 | #ifndef OPENSSL_NO_ECDH | ||
| 1143 | if (type & SSL_kEECDH) { | 1134 | if (type & SSL_kEECDH) { |
| 1144 | const EC_GROUP *group; | 1135 | const EC_GROUP *group; |
| 1145 | 1136 | ||
| @@ -1252,7 +1243,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1252 | r[2] = NULL; | 1243 | r[2] = NULL; |
| 1253 | r[3] = NULL; | 1244 | r[3] = NULL; |
| 1254 | } else | 1245 | } else |
| 1255 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 1256 | #ifndef OPENSSL_NO_PSK | 1246 | #ifndef OPENSSL_NO_PSK |
| 1257 | if (type & SSL_kPSK) { | 1247 | if (type & SSL_kPSK) { |
| 1258 | pskhintlen = strlen(s->ctx->psk_identity_hint); | 1248 | pskhintlen = strlen(s->ctx->psk_identity_hint); |
| @@ -1296,7 +1286,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1296 | p += nr[i]; | 1286 | p += nr[i]; |
| 1297 | } | 1287 | } |
| 1298 | 1288 | ||
| 1299 | #ifndef OPENSSL_NO_ECDH | ||
| 1300 | if (type & SSL_kEECDH) { | 1289 | if (type & SSL_kEECDH) { |
| 1301 | /* XXX: For now, we only support named (not generic) curves. | 1290 | /* XXX: For now, we only support named (not generic) curves. |
| 1302 | * In this situation, the serverKeyExchange message has: | 1291 | * In this situation, the serverKeyExchange message has: |
| @@ -1318,7 +1307,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1318 | encodedPoint = NULL; | 1307 | encodedPoint = NULL; |
| 1319 | p += encodedlen; | 1308 | p += encodedlen; |
| 1320 | } | 1309 | } |
| 1321 | #endif | ||
| 1322 | 1310 | ||
| 1323 | #ifndef OPENSSL_NO_PSK | 1311 | #ifndef OPENSSL_NO_PSK |
| 1324 | if (type & SSL_kPSK) { | 1312 | if (type & SSL_kPSK) { |
| @@ -1376,7 +1364,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1376 | s2n(i, p); | 1364 | s2n(i, p); |
| 1377 | n += i + 2; | 1365 | n += i + 2; |
| 1378 | } else | 1366 | } else |
| 1379 | #if !defined(OPENSSL_NO_ECDSA) | ||
| 1380 | if (pkey->type == EVP_PKEY_EC) { | 1367 | if (pkey->type == EVP_PKEY_EC) { |
| 1381 | /* let's do ECDSA */ | 1368 | /* let's do ECDSA */ |
| 1382 | EVP_SignInit_ex(&md_ctx, EVP_ecdsa(), NULL); | 1369 | EVP_SignInit_ex(&md_ctx, EVP_ecdsa(), NULL); |
| @@ -1391,7 +1378,6 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1391 | s2n(i, p); | 1378 | s2n(i, p); |
| 1392 | n += i + 2; | 1379 | n += i + 2; |
| 1393 | } else | 1380 | } else |
| 1394 | #endif | ||
| 1395 | { | 1381 | { |
| 1396 | /* Is this error check actually needed? */ | 1382 | /* Is this error check actually needed? */ |
| 1397 | al = SSL_AD_HANDSHAKE_FAILURE; | 1383 | al = SSL_AD_HANDSHAKE_FAILURE; |
| @@ -1418,10 +1404,8 @@ dtls1_send_server_key_exchange(SSL *s) | |||
| 1418 | f_err: | 1404 | f_err: |
| 1419 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1405 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| 1420 | err: | 1406 | err: |
| 1421 | #ifndef OPENSSL_NO_ECDH | ||
| 1422 | free(encodedPoint); | 1407 | free(encodedPoint); |
| 1423 | BN_CTX_free(bn_ctx); | 1408 | BN_CTX_free(bn_ctx); |
| 1424 | #endif | ||
| 1425 | EVP_MD_CTX_cleanup(&md_ctx); | 1409 | EVP_MD_CTX_cleanup(&md_ctx); |
| 1426 | return (-1); | 1410 | return (-1); |
| 1427 | } | 1411 | } |
diff --git a/src/lib/libssl/src/ssl/s3_clnt.c b/src/lib/libssl/src/ssl/s3_clnt.c index 602ab03fe1..4df299de9d 100644 --- a/src/lib/libssl/src/ssl/s3_clnt.c +++ b/src/lib/libssl/src/ssl/s3_clnt.c | |||
| @@ -155,9 +155,7 @@ | |||
| 155 | #include <openssl/objects.h> | 155 | #include <openssl/objects.h> |
| 156 | #include <openssl/evp.h> | 156 | #include <openssl/evp.h> |
| 157 | #include <openssl/md5.h> | 157 | #include <openssl/md5.h> |
| 158 | #ifndef OPENSSL_NO_DH | ||
| 159 | #include <openssl/dh.h> | 158 | #include <openssl/dh.h> |
| 160 | #endif | ||
| 161 | #include <openssl/bn.h> | 159 | #include <openssl/bn.h> |
| 162 | #ifndef OPENSSL_NO_ENGINE | 160 | #ifndef OPENSSL_NO_ENGINE |
| 163 | #include <openssl/engine.h> | 161 | #include <openssl/engine.h> |
| @@ -1263,16 +1261,12 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1263 | EVP_PKEY *pkey = NULL; | 1261 | EVP_PKEY *pkey = NULL; |
| 1264 | const EVP_MD *md = NULL; | 1262 | const EVP_MD *md = NULL; |
| 1265 | RSA *rsa = NULL; | 1263 | RSA *rsa = NULL; |
| 1266 | #ifndef OPENSSL_NO_DH | ||
| 1267 | DH *dh = NULL; | 1264 | DH *dh = NULL; |
| 1268 | #endif | ||
| 1269 | #ifndef OPENSSL_NO_ECDH | ||
| 1270 | EC_KEY *ecdh = NULL; | 1265 | EC_KEY *ecdh = NULL; |
| 1271 | BN_CTX *bn_ctx = NULL; | 1266 | BN_CTX *bn_ctx = NULL; |
| 1272 | EC_POINT *srvr_ecpoint = NULL; | 1267 | EC_POINT *srvr_ecpoint = NULL; |
| 1273 | int curve_nid = 0; | 1268 | int curve_nid = 0; |
| 1274 | int encoded_pt_len = 0; | 1269 | int encoded_pt_len = 0; |
| 1275 | #endif | ||
| 1276 | 1270 | ||
| 1277 | /* | 1271 | /* |
| 1278 | * Use same message size as in ssl3_get_certificate_request() | 1272 | * Use same message size as in ssl3_get_certificate_request() |
| @@ -1306,18 +1300,14 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1306 | RSA_free(s->session->sess_cert->peer_rsa_tmp); | 1300 | RSA_free(s->session->sess_cert->peer_rsa_tmp); |
| 1307 | s->session->sess_cert->peer_rsa_tmp = NULL; | 1301 | s->session->sess_cert->peer_rsa_tmp = NULL; |
| 1308 | } | 1302 | } |
| 1309 | #ifndef OPENSSL_NO_DH | ||
| 1310 | if (s->session->sess_cert->peer_dh_tmp) { | 1303 | if (s->session->sess_cert->peer_dh_tmp) { |
| 1311 | DH_free(s->session->sess_cert->peer_dh_tmp); | 1304 | DH_free(s->session->sess_cert->peer_dh_tmp); |
| 1312 | s->session->sess_cert->peer_dh_tmp = NULL; | 1305 | s->session->sess_cert->peer_dh_tmp = NULL; |
| 1313 | } | 1306 | } |
| 1314 | #endif | ||
| 1315 | #ifndef OPENSSL_NO_ECDH | ||
| 1316 | if (s->session->sess_cert->peer_ecdh_tmp) { | 1307 | if (s->session->sess_cert->peer_ecdh_tmp) { |
| 1317 | EC_KEY_free(s->session->sess_cert->peer_ecdh_tmp); | 1308 | EC_KEY_free(s->session->sess_cert->peer_ecdh_tmp); |
| 1318 | s->session->sess_cert->peer_ecdh_tmp = NULL; | 1309 | s->session->sess_cert->peer_ecdh_tmp = NULL; |
| 1319 | } | 1310 | } |
| 1320 | #endif | ||
| 1321 | } else { | 1311 | } else { |
| 1322 | s->session->sess_cert = ssl_sess_cert_new(); | 1312 | s->session->sess_cert = ssl_sess_cert_new(); |
| 1323 | } | 1313 | } |
| @@ -1424,7 +1414,6 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1424 | s->session->sess_cert->peer_rsa_tmp = rsa; | 1414 | s->session->sess_cert->peer_rsa_tmp = rsa; |
| 1425 | rsa = NULL; | 1415 | rsa = NULL; |
| 1426 | } | 1416 | } |
| 1427 | #ifndef OPENSSL_NO_DH | ||
| 1428 | else if (alg_k & SSL_kEDH) { | 1417 | else if (alg_k & SSL_kEDH) { |
| 1429 | if ((dh = DH_new()) == NULL) { | 1418 | if ((dh = DH_new()) == NULL) { |
| 1430 | SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, | 1419 | SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, |
| @@ -1495,9 +1484,7 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1495 | SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER); | 1484 | SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER); |
| 1496 | goto f_err; | 1485 | goto f_err; |
| 1497 | } | 1486 | } |
| 1498 | #endif /* !OPENSSL_NO_DH */ | ||
| 1499 | 1487 | ||
| 1500 | #ifndef OPENSSL_NO_ECDH | ||
| 1501 | else if (alg_k & SSL_kEECDH) { | 1488 | else if (alg_k & SSL_kEECDH) { |
| 1502 | EC_GROUP *ngroup; | 1489 | EC_GROUP *ngroup; |
| 1503 | const EC_GROUP *group; | 1490 | const EC_GROUP *group; |
| @@ -1585,12 +1572,10 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1585 | pkey = X509_get_pubkey( | 1572 | pkey = X509_get_pubkey( |
| 1586 | s->session->sess_cert->peer_pkeys[ | 1573 | s->session->sess_cert->peer_pkeys[ |
| 1587 | SSL_PKEY_RSA_ENC].x509); | 1574 | SSL_PKEY_RSA_ENC].x509); |
| 1588 | #ifndef OPENSSL_NO_ECDSA | ||
| 1589 | else if (alg_a & SSL_aECDSA) | 1575 | else if (alg_a & SSL_aECDSA) |
| 1590 | pkey = X509_get_pubkey( | 1576 | pkey = X509_get_pubkey( |
| 1591 | s->session->sess_cert->peer_pkeys[ | 1577 | s->session->sess_cert->peer_pkeys[ |
| 1592 | SSL_PKEY_ECC].x509); | 1578 | SSL_PKEY_ECC].x509); |
| 1593 | #endif | ||
| 1594 | /* Else anonymous ECDH, so no certificate or pkey. */ | 1579 | /* Else anonymous ECDH, so no certificate or pkey. */ |
| 1595 | EC_KEY_set_public_key(ecdh, srvr_ecpoint); | 1580 | EC_KEY_set_public_key(ecdh, srvr_ecpoint); |
| 1596 | s->session->sess_cert->peer_ecdh_tmp = ecdh; | 1581 | s->session->sess_cert->peer_ecdh_tmp = ecdh; |
| @@ -1605,7 +1590,6 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1605 | SSL_R_UNEXPECTED_MESSAGE); | 1590 | SSL_R_UNEXPECTED_MESSAGE); |
| 1606 | goto f_err; | 1591 | goto f_err; |
| 1607 | } | 1592 | } |
| 1608 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 1609 | 1593 | ||
| 1610 | /* p points to the next byte, there are 'n' bytes left */ | 1594 | /* p points to the next byte, there are 'n' bytes left */ |
| 1611 | 1595 | ||
| @@ -1731,16 +1715,12 @@ ssl3_get_key_exchange(SSL *s) | |||
| 1731 | EVP_PKEY_free(pkey); | 1715 | EVP_PKEY_free(pkey); |
| 1732 | if (rsa != NULL) | 1716 | if (rsa != NULL) |
| 1733 | RSA_free(rsa); | 1717 | RSA_free(rsa); |
| 1734 | #ifndef OPENSSL_NO_DH | ||
| 1735 | if (dh != NULL) | 1718 | if (dh != NULL) |
| 1736 | DH_free(dh); | 1719 | DH_free(dh); |
| 1737 | #endif | ||
| 1738 | #ifndef OPENSSL_NO_ECDH | ||
| 1739 | BN_CTX_free(bn_ctx); | 1720 | BN_CTX_free(bn_ctx); |
| 1740 | EC_POINT_free(srvr_ecpoint); | 1721 | EC_POINT_free(srvr_ecpoint); |
| 1741 | if (ecdh != NULL) | 1722 | if (ecdh != NULL) |
| 1742 | EC_KEY_free(ecdh); | 1723 | EC_KEY_free(ecdh); |
| 1743 | #endif | ||
| 1744 | EVP_MD_CTX_cleanup(&md_ctx); | 1724 | EVP_MD_CTX_cleanup(&md_ctx); |
| 1745 | return (-1); | 1725 | return (-1); |
| 1746 | } | 1726 | } |
| @@ -2084,14 +2064,12 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2084 | unsigned long alg_k; | 2064 | unsigned long alg_k; |
| 2085 | unsigned char *q; | 2065 | unsigned char *q; |
| 2086 | EVP_PKEY *pkey = NULL; | 2066 | EVP_PKEY *pkey = NULL; |
| 2087 | #ifndef OPENSSL_NO_ECDH | ||
| 2088 | EC_KEY *clnt_ecdh = NULL; | 2067 | EC_KEY *clnt_ecdh = NULL; |
| 2089 | const EC_POINT *srvr_ecpoint = NULL; | 2068 | const EC_POINT *srvr_ecpoint = NULL; |
| 2090 | EVP_PKEY *srvr_pub_pkey = NULL; | 2069 | EVP_PKEY *srvr_pub_pkey = NULL; |
| 2091 | unsigned char *encodedPoint = NULL; | 2070 | unsigned char *encodedPoint = NULL; |
| 2092 | int encoded_pt_len = 0; | 2071 | int encoded_pt_len = 0; |
| 2093 | BN_CTX *bn_ctx = NULL; | 2072 | BN_CTX *bn_ctx = NULL; |
| 2094 | #endif | ||
| 2095 | 2073 | ||
| 2096 | if (s->state == SSL3_ST_CW_KEY_EXCH_A) { | 2074 | if (s->state == SSL3_ST_CW_KEY_EXCH_A) { |
| 2097 | d = (unsigned char *)s->init_buf->data; | 2075 | d = (unsigned char *)s->init_buf->data; |
| @@ -2151,7 +2129,6 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2151 | s, s->session->master_key, tmp_buf, sizeof tmp_buf); | 2129 | s, s->session->master_key, tmp_buf, sizeof tmp_buf); |
| 2152 | OPENSSL_cleanse(tmp_buf, sizeof tmp_buf); | 2130 | OPENSSL_cleanse(tmp_buf, sizeof tmp_buf); |
| 2153 | } | 2131 | } |
| 2154 | #ifndef OPENSSL_NO_DH | ||
| 2155 | else if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { | 2132 | else if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { |
| 2156 | DH *dh_srvr, *dh_clnt; | 2133 | DH *dh_srvr, *dh_clnt; |
| 2157 | 2134 | ||
| @@ -2217,9 +2194,7 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2217 | 2194 | ||
| 2218 | /* perhaps clean things up a bit EAY EAY EAY EAY*/ | 2195 | /* perhaps clean things up a bit EAY EAY EAY EAY*/ |
| 2219 | } | 2196 | } |
| 2220 | #endif | ||
| 2221 | 2197 | ||
| 2222 | #ifndef OPENSSL_NO_ECDH | ||
| 2223 | else if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { | 2198 | else if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { |
| 2224 | const EC_GROUP *srvr_group = NULL; | 2199 | const EC_GROUP *srvr_group = NULL; |
| 2225 | EC_KEY *tkey; | 2200 | EC_KEY *tkey; |
| @@ -2399,7 +2374,6 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2399 | EC_KEY_free(clnt_ecdh); | 2374 | EC_KEY_free(clnt_ecdh); |
| 2400 | EVP_PKEY_free(srvr_pub_pkey); | 2375 | EVP_PKEY_free(srvr_pub_pkey); |
| 2401 | } | 2376 | } |
| 2402 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 2403 | else if (alg_k & SSL_kGOST) { | 2377 | else if (alg_k & SSL_kGOST) { |
| 2404 | /* GOST key exchange message creation */ | 2378 | /* GOST key exchange message creation */ |
| 2405 | EVP_PKEY_CTX *pkey_ctx; | 2379 | EVP_PKEY_CTX *pkey_ctx; |
| @@ -2608,13 +2582,11 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2608 | /* SSL3_ST_CW_KEY_EXCH_B */ | 2582 | /* SSL3_ST_CW_KEY_EXCH_B */ |
| 2609 | return (ssl3_do_write(s, SSL3_RT_HANDSHAKE)); | 2583 | return (ssl3_do_write(s, SSL3_RT_HANDSHAKE)); |
| 2610 | err: | 2584 | err: |
| 2611 | #ifndef OPENSSL_NO_ECDH | ||
| 2612 | BN_CTX_free(bn_ctx); | 2585 | BN_CTX_free(bn_ctx); |
| 2613 | free(encodedPoint); | 2586 | free(encodedPoint); |
| 2614 | if (clnt_ecdh != NULL) | 2587 | if (clnt_ecdh != NULL) |
| 2615 | EC_KEY_free(clnt_ecdh); | 2588 | EC_KEY_free(clnt_ecdh); |
| 2616 | EVP_PKEY_free(srvr_pub_pkey); | 2589 | EVP_PKEY_free(srvr_pub_pkey); |
| 2617 | #endif | ||
| 2618 | return (-1); | 2590 | return (-1); |
| 2619 | } | 2591 | } |
| 2620 | 2592 | ||
| @@ -2703,7 +2675,6 @@ ssl3_send_client_verify(SSL *s) | |||
| 2703 | s2n(j, p); | 2675 | s2n(j, p); |
| 2704 | n = j + 2; | 2676 | n = j + 2; |
| 2705 | } else | 2677 | } else |
| 2706 | #ifndef OPENSSL_NO_ECDSA | ||
| 2707 | if (pkey->type == EVP_PKEY_EC) { | 2678 | if (pkey->type == EVP_PKEY_EC) { |
| 2708 | if (!ECDSA_sign(pkey->save_type, | 2679 | if (!ECDSA_sign(pkey->save_type, |
| 2709 | &(data[MD5_DIGEST_LENGTH]), | 2680 | &(data[MD5_DIGEST_LENGTH]), |
| @@ -2716,7 +2687,6 @@ ssl3_send_client_verify(SSL *s) | |||
| 2716 | s2n(j, p); | 2687 | s2n(j, p); |
| 2717 | n = j + 2; | 2688 | n = j + 2; |
| 2718 | } else | 2689 | } else |
| 2719 | #endif | ||
| 2720 | if (pkey->type == NID_id_GostR3410_94 || | 2690 | if (pkey->type == NID_id_GostR3410_94 || |
| 2721 | pkey->type == NID_id_GostR3410_2001) { | 2691 | pkey->type == NID_id_GostR3410_2001) { |
| 2722 | unsigned char signbuf[64]; | 2692 | unsigned char signbuf[64]; |
| @@ -2836,9 +2806,7 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2836 | EVP_PKEY *pkey = NULL; | 2806 | EVP_PKEY *pkey = NULL; |
| 2837 | SESS_CERT *sc; | 2807 | SESS_CERT *sc; |
| 2838 | RSA *rsa; | 2808 | RSA *rsa; |
| 2839 | #ifndef OPENSSL_NO_DH | ||
| 2840 | DH *dh; | 2809 | DH *dh; |
| 2841 | #endif | ||
| 2842 | 2810 | ||
| 2843 | alg_k = s->s3->tmp.new_cipher->algorithm_mkey; | 2811 | alg_k = s->s3->tmp.new_cipher->algorithm_mkey; |
| 2844 | alg_a = s->s3->tmp.new_cipher->algorithm_auth; | 2812 | alg_a = s->s3->tmp.new_cipher->algorithm_auth; |
| @@ -2855,14 +2823,11 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2855 | } | 2823 | } |
| 2856 | 2824 | ||
| 2857 | rsa = s->session->sess_cert->peer_rsa_tmp; | 2825 | rsa = s->session->sess_cert->peer_rsa_tmp; |
| 2858 | #ifndef OPENSSL_NO_DH | ||
| 2859 | dh = s->session->sess_cert->peer_dh_tmp; | 2826 | dh = s->session->sess_cert->peer_dh_tmp; |
| 2860 | #endif | ||
| 2861 | 2827 | ||
| 2862 | /* This is the passed certificate. */ | 2828 | /* This is the passed certificate. */ |
| 2863 | 2829 | ||
| 2864 | idx = sc->peer_cert_type; | 2830 | idx = sc->peer_cert_type; |
| 2865 | #ifndef OPENSSL_NO_ECDH | ||
| 2866 | if (idx == SSL_PKEY_ECC) { | 2831 | if (idx == SSL_PKEY_ECC) { |
| 2867 | if (ssl_check_srvr_ecc_cert_and_alg(sc->peer_pkeys[idx].x509, | 2832 | if (ssl_check_srvr_ecc_cert_and_alg(sc->peer_pkeys[idx].x509, |
| 2868 | s) == 0) | 2833 | s) == 0) |
| @@ -2874,7 +2839,6 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2874 | return (1); | 2839 | return (1); |
| 2875 | } | 2840 | } |
| 2876 | } | 2841 | } |
| 2877 | #endif | ||
| 2878 | pkey = X509_get_pubkey(sc->peer_pkeys[idx].x509); | 2842 | pkey = X509_get_pubkey(sc->peer_pkeys[idx].x509); |
| 2879 | i = X509_certificate_type(sc->peer_pkeys[idx].x509, pkey); | 2843 | i = X509_certificate_type(sc->peer_pkeys[idx].x509, pkey); |
| 2880 | EVP_PKEY_free(pkey); | 2844 | EVP_PKEY_free(pkey); |
| @@ -2897,7 +2861,6 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2897 | SSL_R_MISSING_RSA_ENCRYPTING_CERT); | 2861 | SSL_R_MISSING_RSA_ENCRYPTING_CERT); |
| 2898 | goto f_err; | 2862 | goto f_err; |
| 2899 | } | 2863 | } |
| 2900 | #ifndef OPENSSL_NO_DH | ||
| 2901 | if ((alg_k & SSL_kEDH) && | 2864 | if ((alg_k & SSL_kEDH) && |
| 2902 | !(has_bits(i, EVP_PK_DH|EVP_PKT_EXCH) || (dh != NULL))) { | 2865 | !(has_bits(i, EVP_PK_DH|EVP_PKT_EXCH) || (dh != NULL))) { |
| 2903 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, | 2866 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, |
| @@ -2913,7 +2876,6 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2913 | SSL_R_MISSING_DH_DSA_CERT); | 2876 | SSL_R_MISSING_DH_DSA_CERT); |
| 2914 | goto f_err; | 2877 | goto f_err; |
| 2915 | } | 2878 | } |
| 2916 | #endif | ||
| 2917 | 2879 | ||
| 2918 | if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && | 2880 | if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && |
| 2919 | !has_bits(i, EVP_PKT_EXP)) { | 2881 | !has_bits(i, EVP_PKT_EXP)) { |
| @@ -2925,7 +2887,6 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2925 | goto f_err; | 2887 | goto f_err; |
| 2926 | } | 2888 | } |
| 2927 | } else | 2889 | } else |
| 2928 | #ifndef OPENSSL_NO_DH | ||
| 2929 | if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { | 2890 | if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { |
| 2930 | if (dh == NULL || DH_size(dh) * 8 > | 2891 | if (dh == NULL || DH_size(dh) * 8 > |
| 2931 | SSL_C_EXPORT_PKEYLENGTH( | 2892 | SSL_C_EXPORT_PKEYLENGTH( |
| @@ -2936,7 +2897,6 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2936 | goto f_err; | 2897 | goto f_err; |
| 2937 | } | 2898 | } |
| 2938 | } else | 2899 | } else |
| 2939 | #endif | ||
| 2940 | { | 2900 | { |
| 2941 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, | 2901 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, |
| 2942 | SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); | 2902 | SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); |
diff --git a/src/lib/libssl/src/ssl/s3_lib.c b/src/lib/libssl/src/ssl/s3_lib.c index e3770bd0ae..2c15a87269 100644 --- a/src/lib/libssl/src/ssl/s3_lib.c +++ b/src/lib/libssl/src/ssl/s3_lib.c | |||
| @@ -157,9 +157,7 @@ | |||
| 157 | #endif /* OPENSSL_NO_EC */ | 157 | #endif /* OPENSSL_NO_EC */ |
| 158 | #endif /* OPENSSL_NO_TLSEXT */ | 158 | #endif /* OPENSSL_NO_TLSEXT */ |
| 159 | #include <openssl/md5.h> | 159 | #include <openssl/md5.h> |
| 160 | #ifndef OPENSSL_NO_DH | ||
| 161 | #include <openssl/dh.h> | 160 | #include <openssl/dh.h> |
| 162 | #endif | ||
| 163 | 161 | ||
| 164 | const char ssl3_version_str[]="SSLv3" OPENSSL_VERSION_PTEXT; | 162 | const char ssl3_version_str[]="SSLv3" OPENSSL_VERSION_PTEXT; |
| 165 | 163 | ||
| @@ -1523,7 +1521,6 @@ SSL_CIPHER ssl3_ciphers[] = { | |||
| 1523 | .alg_bits = 256, | 1521 | .alg_bits = 256, |
| 1524 | }, | 1522 | }, |
| 1525 | 1523 | ||
| 1526 | #ifndef OPENSSL_NO_ECDH | ||
| 1527 | /* Cipher C001 */ | 1524 | /* Cipher C001 */ |
| 1528 | { | 1525 | { |
| 1529 | .valid = 1, | 1526 | .valid = 1, |
| @@ -1923,9 +1920,7 @@ SSL_CIPHER ssl3_ciphers[] = { | |||
| 1923 | .strength_bits = 256, | 1920 | .strength_bits = 256, |
| 1924 | .alg_bits = 256, | 1921 | .alg_bits = 256, |
| 1925 | }, | 1922 | }, |
| 1926 | #endif /* OPENSSL_NO_ECDH */ | ||
| 1927 | 1923 | ||
| 1928 | #ifndef OPENSSL_NO_ECDH | ||
| 1929 | 1924 | ||
| 1930 | /* HMAC based TLS v1.2 ciphersuites from RFC5289 */ | 1925 | /* HMAC based TLS v1.2 ciphersuites from RFC5289 */ |
| 1931 | 1926 | ||
| @@ -2187,7 +2182,6 @@ SSL_CIPHER ssl3_ciphers[] = { | |||
| 2187 | .alg_bits = 256, | 2182 | .alg_bits = 256, |
| 2188 | }, | 2183 | }, |
| 2189 | 2184 | ||
| 2190 | #endif /* OPENSSL_NO_ECDH */ | ||
| 2191 | 2185 | ||
| 2192 | 2186 | ||
| 2193 | #ifdef TEMP_GOST_TLS | 2187 | #ifdef TEMP_GOST_TLS |
| @@ -2343,14 +2337,10 @@ ssl3_free(SSL *s) | |||
| 2343 | if (s->s3->wbuf.buf != NULL) | 2337 | if (s->s3->wbuf.buf != NULL) |
| 2344 | ssl3_release_write_buffer(s); | 2338 | ssl3_release_write_buffer(s); |
| 2345 | free(s->s3->rrec.comp); | 2339 | free(s->s3->rrec.comp); |
| 2346 | #ifndef OPENSSL_NO_DH | ||
| 2347 | if (s->s3->tmp.dh != NULL) | 2340 | if (s->s3->tmp.dh != NULL) |
| 2348 | DH_free(s->s3->tmp.dh); | 2341 | DH_free(s->s3->tmp.dh); |
| 2349 | #endif | ||
| 2350 | #ifndef OPENSSL_NO_ECDH | ||
| 2351 | if (s->s3->tmp.ecdh != NULL) | 2342 | if (s->s3->tmp.ecdh != NULL) |
| 2352 | EC_KEY_free(s->s3->tmp.ecdh); | 2343 | EC_KEY_free(s->s3->tmp.ecdh); |
| 2353 | #endif | ||
| 2354 | 2344 | ||
| 2355 | if (s->s3->tmp.ca_names != NULL) | 2345 | if (s->s3->tmp.ca_names != NULL) |
| 2356 | sk_X509_NAME_pop_free(s->s3->tmp.ca_names, X509_NAME_free); | 2346 | sk_X509_NAME_pop_free(s->s3->tmp.ca_names, X509_NAME_free); |
| @@ -2385,18 +2375,14 @@ ssl3_clear(SSL *s) | |||
| 2385 | free(s->s3->rrec.comp); | 2375 | free(s->s3->rrec.comp); |
| 2386 | s->s3->rrec.comp = NULL; | 2376 | s->s3->rrec.comp = NULL; |
| 2387 | 2377 | ||
| 2388 | #ifndef OPENSSL_NO_DH | ||
| 2389 | if (s->s3->tmp.dh != NULL) { | 2378 | if (s->s3->tmp.dh != NULL) { |
| 2390 | DH_free(s->s3->tmp.dh); | 2379 | DH_free(s->s3->tmp.dh); |
| 2391 | s->s3->tmp.dh = NULL; | 2380 | s->s3->tmp.dh = NULL; |
| 2392 | } | 2381 | } |
| 2393 | #endif | ||
| 2394 | #ifndef OPENSSL_NO_ECDH | ||
| 2395 | if (s->s3->tmp.ecdh != NULL) { | 2382 | if (s->s3->tmp.ecdh != NULL) { |
| 2396 | EC_KEY_free(s->s3->tmp.ecdh); | 2383 | EC_KEY_free(s->s3->tmp.ecdh); |
| 2397 | s->s3->tmp.ecdh = NULL; | 2384 | s->s3->tmp.ecdh = NULL; |
| 2398 | } | 2385 | } |
| 2399 | #endif | ||
| 2400 | #ifndef OPENSSL_NO_TLSEXT | 2386 | #ifndef OPENSSL_NO_TLSEXT |
| 2401 | #ifndef OPENSSL_NO_EC | 2387 | #ifndef OPENSSL_NO_EC |
| 2402 | s->s3->is_probably_safari = 0; | 2388 | s->s3->is_probably_safari = 0; |
| @@ -2505,7 +2491,6 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2505 | return (ret); | 2491 | return (ret); |
| 2506 | } | 2492 | } |
| 2507 | break; | 2493 | break; |
| 2508 | #ifndef OPENSSL_NO_DH | ||
| 2509 | case SSL_CTRL_SET_TMP_DH: | 2494 | case SSL_CTRL_SET_TMP_DH: |
| 2510 | { | 2495 | { |
| 2511 | DH *dh = (DH *)parg; | 2496 | DH *dh = (DH *)parg; |
| @@ -2540,8 +2525,6 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2540 | return (ret); | 2525 | return (ret); |
| 2541 | } | 2526 | } |
| 2542 | break; | 2527 | break; |
| 2543 | #endif | ||
| 2544 | #ifndef OPENSSL_NO_ECDH | ||
| 2545 | case SSL_CTRL_SET_TMP_ECDH: | 2528 | case SSL_CTRL_SET_TMP_ECDH: |
| 2546 | { | 2529 | { |
| 2547 | EC_KEY *ecdh = NULL; | 2530 | EC_KEY *ecdh = NULL; |
| @@ -2578,7 +2561,6 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2578 | return (ret); | 2561 | return (ret); |
| 2579 | } | 2562 | } |
| 2580 | break; | 2563 | break; |
| 2581 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 2582 | #ifndef OPENSSL_NO_TLSEXT | 2564 | #ifndef OPENSSL_NO_TLSEXT |
| 2583 | case SSL_CTRL_SET_TLSEXT_HOSTNAME: | 2565 | case SSL_CTRL_SET_TLSEXT_HOSTNAME: |
| 2584 | if (larg == TLSEXT_NAMETYPE_host_name) { | 2566 | if (larg == TLSEXT_NAMETYPE_host_name) { |
| @@ -2701,21 +2683,17 @@ ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)) | |||
| 2701 | s->cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp; | 2683 | s->cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp; |
| 2702 | } | 2684 | } |
| 2703 | break; | 2685 | break; |
| 2704 | #ifndef OPENSSL_NO_DH | ||
| 2705 | case SSL_CTRL_SET_TMP_DH_CB: | 2686 | case SSL_CTRL_SET_TMP_DH_CB: |
| 2706 | { | 2687 | { |
| 2707 | s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | 2688 | s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; |
| 2708 | } | 2689 | } |
| 2709 | break; | 2690 | break; |
| 2710 | #endif | ||
| 2711 | #ifndef OPENSSL_NO_ECDH | ||
| 2712 | case SSL_CTRL_SET_TMP_ECDH_CB: | 2691 | case SSL_CTRL_SET_TMP_ECDH_CB: |
| 2713 | { | 2692 | { |
| 2714 | s->cert->ecdh_tmp_cb = | 2693 | s->cert->ecdh_tmp_cb = |
| 2715 | (EC_KEY *(*)(SSL *, int, int))fp; | 2694 | (EC_KEY *(*)(SSL *, int, int))fp; |
| 2716 | } | 2695 | } |
| 2717 | break; | 2696 | break; |
| 2718 | #endif | ||
| 2719 | #ifndef OPENSSL_NO_TLSEXT | 2697 | #ifndef OPENSSL_NO_TLSEXT |
| 2720 | case SSL_CTRL_SET_TLSEXT_DEBUG_CB: | 2698 | case SSL_CTRL_SET_TLSEXT_DEBUG_CB: |
| 2721 | s->tlsext_debug_cb = (void (*)(SSL *, int , int, | 2699 | s->tlsext_debug_cb = (void (*)(SSL *, int , int, |
| @@ -2777,7 +2755,6 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2777 | return (0); | 2755 | return (0); |
| 2778 | } | 2756 | } |
| 2779 | break; | 2757 | break; |
| 2780 | #ifndef OPENSSL_NO_DH | ||
| 2781 | case SSL_CTRL_SET_TMP_DH: | 2758 | case SSL_CTRL_SET_TMP_DH: |
| 2782 | { | 2759 | { |
| 2783 | DH *new = NULL, *dh; | 2760 | DH *new = NULL, *dh; |
| @@ -2809,8 +2786,6 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2809 | return (0); | 2786 | return (0); |
| 2810 | } | 2787 | } |
| 2811 | break; | 2788 | break; |
| 2812 | #endif | ||
| 2813 | #ifndef OPENSSL_NO_ECDH | ||
| 2814 | case SSL_CTRL_SET_TMP_ECDH: | 2789 | case SSL_CTRL_SET_TMP_ECDH: |
| 2815 | { | 2790 | { |
| 2816 | EC_KEY *ecdh = NULL; | 2791 | EC_KEY *ecdh = NULL; |
| @@ -2849,7 +2824,6 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2849 | return (0); | 2824 | return (0); |
| 2850 | } | 2825 | } |
| 2851 | break; | 2826 | break; |
| 2852 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 2853 | #ifndef OPENSSL_NO_TLSEXT | 2827 | #ifndef OPENSSL_NO_TLSEXT |
| 2854 | case SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG: | 2828 | case SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG: |
| 2855 | ctx->tlsext_servername_arg = parg; | 2829 | ctx->tlsext_servername_arg = parg; |
| @@ -2932,20 +2906,16 @@ ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void)) | |||
| 2932 | cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp; | 2906 | cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp; |
| 2933 | } | 2907 | } |
| 2934 | break; | 2908 | break; |
| 2935 | #ifndef OPENSSL_NO_DH | ||
| 2936 | case SSL_CTRL_SET_TMP_DH_CB: | 2909 | case SSL_CTRL_SET_TMP_DH_CB: |
| 2937 | { | 2910 | { |
| 2938 | cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | 2911 | cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; |
| 2939 | } | 2912 | } |
| 2940 | break; | 2913 | break; |
| 2941 | #endif | ||
| 2942 | #ifndef OPENSSL_NO_ECDH | ||
| 2943 | case SSL_CTRL_SET_TMP_ECDH_CB: | 2914 | case SSL_CTRL_SET_TMP_ECDH_CB: |
| 2944 | { | 2915 | { |
| 2945 | cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; | 2916 | cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; |
| 2946 | } | 2917 | } |
| 2947 | break; | 2918 | break; |
| 2948 | #endif | ||
| 2949 | #ifndef OPENSSL_NO_TLSEXT | 2919 | #ifndef OPENSSL_NO_TLSEXT |
| 2950 | case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB: | 2920 | case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB: |
| 2951 | ctx->tlsext_servername_callback = | 2921 | ctx->tlsext_servername_callback = |
| @@ -3255,7 +3225,6 @@ ssl3_get_req_cert_type(SSL *s, unsigned char *p) | |||
| 3255 | } | 3225 | } |
| 3256 | #endif | 3226 | #endif |
| 3257 | 3227 | ||
| 3258 | #ifndef OPENSSL_NO_DH | ||
| 3259 | if (alg_k & (SSL_kDHr|SSL_kEDH)) { | 3228 | if (alg_k & (SSL_kDHr|SSL_kEDH)) { |
| 3260 | p[ret++] = SSL3_CT_RSA_FIXED_DH; | 3229 | p[ret++] = SSL3_CT_RSA_FIXED_DH; |
| 3261 | p[ret++] = SSL3_CT_DSS_FIXED_DH; | 3230 | p[ret++] = SSL3_CT_DSS_FIXED_DH; |
| @@ -3265,17 +3234,13 @@ ssl3_get_req_cert_type(SSL *s, unsigned char *p) | |||
| 3265 | p[ret++] = SSL3_CT_RSA_EPHEMERAL_DH; | 3234 | p[ret++] = SSL3_CT_RSA_EPHEMERAL_DH; |
| 3266 | p[ret++] = SSL3_CT_DSS_EPHEMERAL_DH; | 3235 | p[ret++] = SSL3_CT_DSS_EPHEMERAL_DH; |
| 3267 | } | 3236 | } |
| 3268 | #endif /* !OPENSSL_NO_DH */ | ||
| 3269 | p[ret++] = SSL3_CT_RSA_SIGN; | 3237 | p[ret++] = SSL3_CT_RSA_SIGN; |
| 3270 | p[ret++] = SSL3_CT_DSS_SIGN; | 3238 | p[ret++] = SSL3_CT_DSS_SIGN; |
| 3271 | #ifndef OPENSSL_NO_ECDH | ||
| 3272 | if ((alg_k & (SSL_kECDHr|SSL_kECDHe)) && (s->version >= TLS1_VERSION)) { | 3239 | if ((alg_k & (SSL_kECDHr|SSL_kECDHe)) && (s->version >= TLS1_VERSION)) { |
| 3273 | p[ret++] = TLS_CT_RSA_FIXED_ECDH; | 3240 | p[ret++] = TLS_CT_RSA_FIXED_ECDH; |
| 3274 | p[ret++] = TLS_CT_ECDSA_FIXED_ECDH; | 3241 | p[ret++] = TLS_CT_ECDSA_FIXED_ECDH; |
| 3275 | } | 3242 | } |
| 3276 | #endif | ||
| 3277 | 3243 | ||
| 3278 | #ifndef OPENSSL_NO_ECDSA | ||
| 3279 | /* | 3244 | /* |
| 3280 | * ECDSA certs can be used with RSA cipher suites as well | 3245 | * ECDSA certs can be used with RSA cipher suites as well |
| 3281 | * so we don't need to check for SSL_kECDH or SSL_kEECDH | 3246 | * so we don't need to check for SSL_kECDH or SSL_kEECDH |
| @@ -3283,7 +3248,6 @@ ssl3_get_req_cert_type(SSL *s, unsigned char *p) | |||
| 3283 | if (s->version >= TLS1_VERSION) { | 3248 | if (s->version >= TLS1_VERSION) { |
| 3284 | p[ret++] = TLS_CT_ECDSA_SIGN; | 3249 | p[ret++] = TLS_CT_ECDSA_SIGN; |
| 3285 | } | 3250 | } |
| 3286 | #endif | ||
| 3287 | return (ret); | 3251 | return (ret); |
| 3288 | } | 3252 | } |
| 3289 | 3253 | ||
diff --git a/src/lib/libssl/src/ssl/s3_srvr.c b/src/lib/libssl/src/ssl/s3_srvr.c index c16f7bb2ef..b53f27a47d 100644 --- a/src/lib/libssl/src/ssl/s3_srvr.c +++ b/src/lib/libssl/src/ssl/s3_srvr.c | |||
| @@ -159,9 +159,7 @@ | |||
| 159 | #include <openssl/evp.h> | 159 | #include <openssl/evp.h> |
| 160 | #include <openssl/hmac.h> | 160 | #include <openssl/hmac.h> |
| 161 | #include <openssl/x509.h> | 161 | #include <openssl/x509.h> |
| 162 | #ifndef OPENSSL_NO_DH | ||
| 163 | #include <openssl/dh.h> | 162 | #include <openssl/dh.h> |
| 164 | #endif | ||
| 165 | #include <openssl/bn.h> | 163 | #include <openssl/bn.h> |
| 166 | #include <openssl/md5.h> | 164 | #include <openssl/md5.h> |
| 167 | 165 | ||
| @@ -881,18 +879,14 @@ ssl3_check_client_hello(SSL *s) | |||
| 881 | * which will now be aborted. (A full SSL_clear would be too | 879 | * which will now be aborted. (A full SSL_clear would be too |
| 882 | * much.) | 880 | * much.) |
| 883 | */ | 881 | */ |
| 884 | #ifndef OPENSSL_NO_DH | ||
| 885 | if (s->s3->tmp.dh != NULL) { | 882 | if (s->s3->tmp.dh != NULL) { |
| 886 | DH_free(s->s3->tmp.dh); | 883 | DH_free(s->s3->tmp.dh); |
| 887 | s->s3->tmp.dh = NULL; | 884 | s->s3->tmp.dh = NULL; |
| 888 | } | 885 | } |
| 889 | #endif | ||
| 890 | #ifndef OPENSSL_NO_ECDH | ||
| 891 | if (s->s3->tmp.ecdh != NULL) { | 886 | if (s->s3->tmp.ecdh != NULL) { |
| 892 | EC_KEY_free(s->s3->tmp.ecdh); | 887 | EC_KEY_free(s->s3->tmp.ecdh); |
| 893 | s->s3->tmp.ecdh = NULL; | 888 | s->s3->tmp.ecdh = NULL; |
| 894 | } | 889 | } |
| 895 | #endif | ||
| 896 | s->s3->flags |= SSL3_FLAGS_SGC_RESTART_DONE; | 890 | s->s3->flags |= SSL3_FLAGS_SGC_RESTART_DONE; |
| 897 | return (2); | 891 | return (2); |
| 898 | } | 892 | } |
| @@ -1509,17 +1503,13 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1509 | RSA *rsa; | 1503 | RSA *rsa; |
| 1510 | unsigned char md_buf[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH]; | 1504 | unsigned char md_buf[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH]; |
| 1511 | unsigned int u; | 1505 | unsigned int u; |
| 1512 | #ifndef OPENSSL_NO_DH | ||
| 1513 | DH *dh = NULL, *dhp; | 1506 | DH *dh = NULL, *dhp; |
| 1514 | #endif | ||
| 1515 | #ifndef OPENSSL_NO_ECDH | ||
| 1516 | EC_KEY *ecdh = NULL, *ecdhp; | 1507 | EC_KEY *ecdh = NULL, *ecdhp; |
| 1517 | unsigned char *encodedPoint = NULL; | 1508 | unsigned char *encodedPoint = NULL; |
| 1518 | int encodedlen = 0; | 1509 | int encodedlen = 0; |
| 1519 | int curve_id = 0; | 1510 | int curve_id = 0; |
| 1520 | BN_CTX *bn_ctx = NULL; | 1511 | BN_CTX *bn_ctx = NULL; |
| 1521 | 1512 | ||
| 1522 | #endif | ||
| 1523 | #ifndef OPENSSL_NO_PSK | 1513 | #ifndef OPENSSL_NO_PSK |
| 1524 | size_t pskhintlen = 0; | 1514 | size_t pskhintlen = 0; |
| 1525 | #endif | 1515 | #endif |
| @@ -1570,7 +1560,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1570 | r[1] = rsa->e; | 1560 | r[1] = rsa->e; |
| 1571 | s->s3->tmp.use_rsa_tmp = 1; | 1561 | s->s3->tmp.use_rsa_tmp = 1; |
| 1572 | } else | 1562 | } else |
| 1573 | #ifndef OPENSSL_NO_DH | ||
| 1574 | if (type & SSL_kEDH) { | 1563 | if (type & SSL_kEDH) { |
| 1575 | dhp = cert->dh_tmp; | 1564 | dhp = cert->dh_tmp; |
| 1576 | if ((dhp == NULL) && (s->cert->dh_tmp_cb != NULL)) | 1565 | if ((dhp == NULL) && (s->cert->dh_tmp_cb != NULL)) |
| @@ -1620,8 +1609,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1620 | r[1] = dh->g; | 1609 | r[1] = dh->g; |
| 1621 | r[2] = dh->pub_key; | 1610 | r[2] = dh->pub_key; |
| 1622 | } else | 1611 | } else |
| 1623 | #endif | ||
| 1624 | #ifndef OPENSSL_NO_ECDH | ||
| 1625 | if (type & SSL_kEECDH) { | 1612 | if (type & SSL_kEECDH) { |
| 1626 | const EC_GROUP *group; | 1613 | const EC_GROUP *group; |
| 1627 | 1614 | ||
| @@ -1747,7 +1734,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1747 | r[2] = NULL; | 1734 | r[2] = NULL; |
| 1748 | r[3] = NULL; | 1735 | r[3] = NULL; |
| 1749 | } else | 1736 | } else |
| 1750 | #endif /* !OPENSSL_NO_ECDH */ | ||
| 1751 | #ifndef OPENSSL_NO_PSK | 1737 | #ifndef OPENSSL_NO_PSK |
| 1752 | if (type & SSL_kPSK) { | 1738 | if (type & SSL_kPSK) { |
| 1753 | pskhintlen = strlen(s->ctx->psk_identity_hint); | 1739 | pskhintlen = strlen(s->ctx->psk_identity_hint); |
| @@ -1793,7 +1779,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1793 | p += nr[i]; | 1779 | p += nr[i]; |
| 1794 | } | 1780 | } |
| 1795 | 1781 | ||
| 1796 | #ifndef OPENSSL_NO_ECDH | ||
| 1797 | if (type & SSL_kEECDH) { | 1782 | if (type & SSL_kEECDH) { |
| 1798 | /* | 1783 | /* |
| 1799 | * XXX: For now, we only support named (not generic) | 1784 | * XXX: For now, we only support named (not generic) |
| @@ -1817,7 +1802,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1817 | encodedPoint = NULL; | 1802 | encodedPoint = NULL; |
| 1818 | p += encodedlen; | 1803 | p += encodedlen; |
| 1819 | } | 1804 | } |
| 1820 | #endif | ||
| 1821 | 1805 | ||
| 1822 | #ifndef OPENSSL_NO_PSK | 1806 | #ifndef OPENSSL_NO_PSK |
| 1823 | if (type & SSL_kPSK) { | 1807 | if (type & SSL_kPSK) { |
| @@ -1926,10 +1910,8 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1926 | f_err: | 1910 | f_err: |
| 1927 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1911 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| 1928 | err: | 1912 | err: |
| 1929 | #ifndef OPENSSL_NO_ECDH | ||
| 1930 | free(encodedPoint); | 1913 | free(encodedPoint); |
| 1931 | BN_CTX_free(bn_ctx); | 1914 | BN_CTX_free(bn_ctx); |
| 1932 | #endif | ||
| 1933 | EVP_MD_CTX_cleanup(&md_ctx); | 1915 | EVP_MD_CTX_cleanup(&md_ctx); |
| 1934 | return (-1); | 1916 | return (-1); |
| 1935 | } | 1917 | } |
| @@ -2042,18 +2024,14 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2042 | unsigned char *p; | 2024 | unsigned char *p; |
| 2043 | RSA *rsa = NULL; | 2025 | RSA *rsa = NULL; |
| 2044 | EVP_PKEY *pkey = NULL; | 2026 | EVP_PKEY *pkey = NULL; |
| 2045 | #ifndef OPENSSL_NO_DH | ||
| 2046 | BIGNUM *pub = NULL; | 2027 | BIGNUM *pub = NULL; |
| 2047 | DH *dh_srvr; | 2028 | DH *dh_srvr; |
| 2048 | #endif | ||
| 2049 | 2029 | ||
| 2050 | #ifndef OPENSSL_NO_ECDH | ||
| 2051 | EC_KEY *srvr_ecdh = NULL; | 2030 | EC_KEY *srvr_ecdh = NULL; |
| 2052 | EVP_PKEY *clnt_pub_pkey = NULL; | 2031 | EVP_PKEY *clnt_pub_pkey = NULL; |
| 2053 | EC_POINT *clnt_ecpoint = NULL; | 2032 | EC_POINT *clnt_ecpoint = NULL; |
| 2054 | BN_CTX *bn_ctx = NULL; | 2033 | BN_CTX *bn_ctx = NULL; |
| 2055 | 2034 | ||
| 2056 | #endif | ||
| 2057 | 2035 | ||
| 2058 | n = s->method->ssl_get_message(s, SSL3_ST_SR_KEY_EXCH_A, | 2036 | n = s->method->ssl_get_message(s, SSL3_ST_SR_KEY_EXCH_A, |
| 2059 | SSL3_ST_SR_KEY_EXCH_B, SSL3_MT_CLIENT_KEY_EXCHANGE, | 2037 | SSL3_ST_SR_KEY_EXCH_B, SSL3_MT_CLIENT_KEY_EXCHANGE, |
| @@ -2173,7 +2151,6 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2173 | p, i); | 2151 | p, i); |
| 2174 | OPENSSL_cleanse(p, i); | 2152 | OPENSSL_cleanse(p, i); |
| 2175 | } else | 2153 | } else |
| 2176 | #ifndef OPENSSL_NO_DH | ||
| 2177 | if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { | 2154 | if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) { |
| 2178 | n2s(p, i); | 2155 | n2s(p, i); |
| 2179 | if (n != i + 2) { | 2156 | if (n != i + 2) { |
| @@ -2229,9 +2206,7 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2229 | s, s->session->master_key, p, i); | 2206 | s, s->session->master_key, p, i); |
| 2230 | OPENSSL_cleanse(p, i); | 2207 | OPENSSL_cleanse(p, i); |
| 2231 | } else | 2208 | } else |
| 2232 | #endif | ||
| 2233 | 2209 | ||
| 2234 | #ifndef OPENSSL_NO_ECDH | ||
| 2235 | if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { | 2210 | if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) { |
| 2236 | int ret = 1; | 2211 | int ret = 1; |
| 2237 | int field_size = 0; | 2212 | int field_size = 0; |
| @@ -2375,7 +2350,6 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2375 | OPENSSL_cleanse(p, i); | 2350 | OPENSSL_cleanse(p, i); |
| 2376 | return (ret); | 2351 | return (ret); |
| 2377 | } else | 2352 | } else |
| 2378 | #endif | ||
| 2379 | #ifndef OPENSSL_NO_PSK | 2353 | #ifndef OPENSSL_NO_PSK |
| 2380 | if (alg_k & SSL_kPSK) { | 2354 | if (alg_k & SSL_kPSK) { |
| 2381 | unsigned char *t = NULL; | 2355 | unsigned char *t = NULL; |
| @@ -2542,13 +2516,11 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2542 | f_err: | 2516 | f_err: |
| 2543 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 2517 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| 2544 | err: | 2518 | err: |
| 2545 | #ifndef OPENSSL_NO_ECDH | ||
| 2546 | EVP_PKEY_free(clnt_pub_pkey); | 2519 | EVP_PKEY_free(clnt_pub_pkey); |
| 2547 | EC_POINT_free(clnt_ecpoint); | 2520 | EC_POINT_free(clnt_ecpoint); |
| 2548 | if (srvr_ecdh != NULL) | 2521 | if (srvr_ecdh != NULL) |
| 2549 | EC_KEY_free(srvr_ecdh); | 2522 | EC_KEY_free(srvr_ecdh); |
| 2550 | BN_CTX_free(bn_ctx); | 2523 | BN_CTX_free(bn_ctx); |
| 2551 | #endif | ||
| 2552 | return (-1); | 2524 | return (-1); |
| 2553 | } | 2525 | } |
| 2554 | 2526 | ||
| @@ -2722,7 +2694,6 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2722 | goto f_err; | 2694 | goto f_err; |
| 2723 | } | 2695 | } |
| 2724 | } else | 2696 | } else |
| 2725 | #ifndef OPENSSL_NO_ECDSA | ||
| 2726 | if (pkey->type == EVP_PKEY_EC) { | 2697 | if (pkey->type == EVP_PKEY_EC) { |
| 2727 | j = ECDSA_verify(pkey->save_type, | 2698 | j = ECDSA_verify(pkey->save_type, |
| 2728 | &(s->s3->tmp.cert_verify_md[MD5_DIGEST_LENGTH]), | 2699 | &(s->s3->tmp.cert_verify_md[MD5_DIGEST_LENGTH]), |
| @@ -2735,7 +2706,6 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2735 | goto f_err; | 2706 | goto f_err; |
| 2736 | } | 2707 | } |
| 2737 | } else | 2708 | } else |
| 2738 | #endif | ||
| 2739 | if (pkey->type == NID_id_GostR3410_94 || | 2709 | if (pkey->type == NID_id_GostR3410_94 || |
| 2740 | pkey->type == NID_id_GostR3410_2001) { | 2710 | pkey->type == NID_id_GostR3410_2001) { |
| 2741 | unsigned char signature[64]; | 2711 | unsigned char signature[64]; |
diff --git a/src/lib/libssl/src/ssl/ssl.h b/src/lib/libssl/src/ssl/ssl.h index 6765e3560a..69c0bb00e2 100644 --- a/src/lib/libssl/src/ssl/ssl.h +++ b/src/lib/libssl/src/ssl/ssl.h | |||
| @@ -1875,18 +1875,14 @@ void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, | |||
| 1875 | 1875 | ||
| 1876 | void SSL_set_tmp_rsa_callback(SSL *ssl, | 1876 | void SSL_set_tmp_rsa_callback(SSL *ssl, |
| 1877 | RSA *(*cb)(SSL *ssl, int is_export, int keylength)); | 1877 | RSA *(*cb)(SSL *ssl, int is_export, int keylength)); |
| 1878 | #ifndef OPENSSL_NO_DH | ||
| 1879 | void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, | 1878 | void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, |
| 1880 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); | 1879 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); |
| 1881 | void SSL_set_tmp_dh_callback(SSL *ssl, | 1880 | void SSL_set_tmp_dh_callback(SSL *ssl, |
| 1882 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); | 1881 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); |
| 1883 | #endif | ||
| 1884 | #ifndef OPENSSL_NO_ECDH | ||
| 1885 | void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, | 1882 | void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, |
| 1886 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); | 1883 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); |
| 1887 | void SSL_set_tmp_ecdh_callback(SSL *ssl, | 1884 | void SSL_set_tmp_ecdh_callback(SSL *ssl, |
| 1888 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); | 1885 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); |
| 1889 | #endif | ||
| 1890 | 1886 | ||
| 1891 | #ifndef OPENSSL_NO_COMP | 1887 | #ifndef OPENSSL_NO_COMP |
| 1892 | const COMP_METHOD *SSL_get_current_compression(SSL *s); | 1888 | const COMP_METHOD *SSL_get_current_compression(SSL *s); |
diff --git a/src/lib/libssl/src/ssl/ssl3.h b/src/lib/libssl/src/ssl/ssl3.h index 2b041d7e2f..2840b1320f 100644 --- a/src/lib/libssl/src/ssl/ssl3.h +++ b/src/lib/libssl/src/ssl/ssl3.h | |||
| @@ -490,13 +490,9 @@ typedef struct ssl3_state_st { | |||
| 490 | 490 | ||
| 491 | /* used to hold the new cipher we are going to use */ | 491 | /* used to hold the new cipher we are going to use */ |
| 492 | const SSL_CIPHER *new_cipher; | 492 | const SSL_CIPHER *new_cipher; |
| 493 | #ifndef OPENSSL_NO_DH | ||
| 494 | DH *dh; | 493 | DH *dh; |
| 495 | #endif | ||
| 496 | 494 | ||
| 497 | #ifndef OPENSSL_NO_ECDH | ||
| 498 | EC_KEY *ecdh; /* holds short lived ECDH key */ | 495 | EC_KEY *ecdh; /* holds short lived ECDH key */ |
| 499 | #endif | ||
| 500 | 496 | ||
| 501 | /* used when SSL_ST_FLUSH_DATA is entered */ | 497 | /* used when SSL_ST_FLUSH_DATA is entered */ |
| 502 | int next_state; | 498 | int next_state; |
diff --git a/src/lib/libssl/src/ssl/ssl_algs.c b/src/lib/libssl/src/ssl/ssl_algs.c index 46b3c41351..84f44889b5 100644 --- a/src/lib/libssl/src/ssl/ssl_algs.c +++ b/src/lib/libssl/src/ssl/ssl_algs.c | |||
| @@ -111,9 +111,7 @@ SSL_library_init(void) | |||
| 111 | EVP_add_digest_alias(SN_dsaWithSHA1, SN_dsaWithSHA1_2); | 111 | EVP_add_digest_alias(SN_dsaWithSHA1, SN_dsaWithSHA1_2); |
| 112 | EVP_add_digest_alias(SN_dsaWithSHA1, "DSS1"); | 112 | EVP_add_digest_alias(SN_dsaWithSHA1, "DSS1"); |
| 113 | EVP_add_digest_alias(SN_dsaWithSHA1, "dss1"); | 113 | EVP_add_digest_alias(SN_dsaWithSHA1, "dss1"); |
| 114 | #ifndef OPENSSL_NO_ECDSA | ||
| 115 | EVP_add_digest(EVP_ecdsa()); | 114 | EVP_add_digest(EVP_ecdsa()); |
| 116 | #endif | ||
| 117 | #ifndef OPENSSL_NO_COMP | 115 | #ifndef OPENSSL_NO_COMP |
| 118 | /* This will initialise the built-in compression algorithms. | 116 | /* This will initialise the built-in compression algorithms. |
| 119 | The value returned is a STACK_OF(SSL_COMP), but that can | 117 | The value returned is a STACK_OF(SSL_COMP), but that can |
diff --git a/src/lib/libssl/src/ssl/ssl_cert.c b/src/lib/libssl/src/ssl/ssl_cert.c index d8b94b1285..f506ae685f 100644 --- a/src/lib/libssl/src/ssl/ssl_cert.c +++ b/src/lib/libssl/src/ssl/ssl_cert.c | |||
| @@ -125,9 +125,7 @@ | |||
| 125 | #include <openssl/bio.h> | 125 | #include <openssl/bio.h> |
| 126 | #include <openssl/pem.h> | 126 | #include <openssl/pem.h> |
| 127 | #include <openssl/x509v3.h> | 127 | #include <openssl/x509v3.h> |
| 128 | #ifndef OPENSSL_NO_DH | ||
| 129 | #include <openssl/dh.h> | 128 | #include <openssl/dh.h> |
| 130 | #endif | ||
| 131 | #include <openssl/bn.h> | 129 | #include <openssl/bn.h> |
| 132 | #include "ssl_locl.h" | 130 | #include "ssl_locl.h" |
| 133 | 131 | ||
| @@ -165,9 +163,7 @@ ssl_cert_set_default_md(CERT *cert) | |||
| 165 | cert->pkeys[SSL_PKEY_DSA_SIGN].digest = EVP_sha1(); | 163 | cert->pkeys[SSL_PKEY_DSA_SIGN].digest = EVP_sha1(); |
| 166 | cert->pkeys[SSL_PKEY_RSA_SIGN].digest = EVP_sha1(); | 164 | cert->pkeys[SSL_PKEY_RSA_SIGN].digest = EVP_sha1(); |
| 167 | cert->pkeys[SSL_PKEY_RSA_ENC].digest = EVP_sha1(); | 165 | cert->pkeys[SSL_PKEY_RSA_ENC].digest = EVP_sha1(); |
| 168 | #ifndef OPENSSL_NO_ECDSA | ||
| 169 | cert->pkeys[SSL_PKEY_ECC].digest = EVP_sha1(); | 166 | cert->pkeys[SSL_PKEY_ECC].digest = EVP_sha1(); |
| 170 | #endif | ||
| 171 | } | 167 | } |
| 172 | 168 | ||
| 173 | CERT * | 169 | CERT * |
| @@ -214,7 +210,6 @@ ssl_cert_dup(CERT *cert) | |||
| 214 | } | 210 | } |
| 215 | ret->rsa_tmp_cb = cert->rsa_tmp_cb; | 211 | ret->rsa_tmp_cb = cert->rsa_tmp_cb; |
| 216 | 212 | ||
| 217 | #ifndef OPENSSL_NO_DH | ||
| 218 | if (cert->dh_tmp != NULL) { | 213 | if (cert->dh_tmp != NULL) { |
| 219 | ret->dh_tmp = DHparams_dup(cert->dh_tmp); | 214 | ret->dh_tmp = DHparams_dup(cert->dh_tmp); |
| 220 | if (ret->dh_tmp == NULL) { | 215 | if (ret->dh_tmp == NULL) { |
| @@ -239,9 +234,7 @@ ssl_cert_dup(CERT *cert) | |||
| 239 | } | 234 | } |
| 240 | } | 235 | } |
| 241 | ret->dh_tmp_cb = cert->dh_tmp_cb; | 236 | ret->dh_tmp_cb = cert->dh_tmp_cb; |
| 242 | #endif | ||
| 243 | 237 | ||
| 244 | #ifndef OPENSSL_NO_ECDH | ||
| 245 | if (cert->ecdh_tmp) { | 238 | if (cert->ecdh_tmp) { |
| 246 | ret->ecdh_tmp = EC_KEY_dup(cert->ecdh_tmp); | 239 | ret->ecdh_tmp = EC_KEY_dup(cert->ecdh_tmp); |
| 247 | if (ret->ecdh_tmp == NULL) { | 240 | if (ret->ecdh_tmp == NULL) { |
| @@ -250,7 +243,6 @@ ssl_cert_dup(CERT *cert) | |||
| 250 | } | 243 | } |
| 251 | } | 244 | } |
| 252 | ret->ecdh_tmp_cb = cert->ecdh_tmp_cb; | 245 | ret->ecdh_tmp_cb = cert->ecdh_tmp_cb; |
| 253 | #endif | ||
| 254 | 246 | ||
| 255 | for (i = 0; i < SSL_PKEY_NUM; i++) { | 247 | for (i = 0; i < SSL_PKEY_NUM; i++) { |
| 256 | if (cert->pkeys[i].x509 != NULL) { | 248 | if (cert->pkeys[i].x509 != NULL) { |
| @@ -305,19 +297,13 @@ ssl_cert_dup(CERT *cert) | |||
| 305 | 297 | ||
| 306 | return (ret); | 298 | return (ret); |
| 307 | 299 | ||
| 308 | #if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_ECDH) | ||
| 309 | err: | 300 | err: |
| 310 | #endif | ||
| 311 | if (ret->rsa_tmp != NULL) | 301 | if (ret->rsa_tmp != NULL) |
| 312 | RSA_free(ret->rsa_tmp); | 302 | RSA_free(ret->rsa_tmp); |
| 313 | #ifndef OPENSSL_NO_DH | ||
| 314 | if (ret->dh_tmp != NULL) | 303 | if (ret->dh_tmp != NULL) |
| 315 | DH_free(ret->dh_tmp); | 304 | DH_free(ret->dh_tmp); |
| 316 | #endif | ||
| 317 | #ifndef OPENSSL_NO_ECDH | ||
| 318 | if (ret->ecdh_tmp != NULL) | 305 | if (ret->ecdh_tmp != NULL) |
| 319 | EC_KEY_free(ret->ecdh_tmp); | 306 | EC_KEY_free(ret->ecdh_tmp); |
| 320 | #endif | ||
| 321 | 307 | ||
| 322 | for (i = 0; i < SSL_PKEY_NUM; i++) { | 308 | for (i = 0; i < SSL_PKEY_NUM; i++) { |
| 323 | if (ret->pkeys[i].x509 != NULL) | 309 | if (ret->pkeys[i].x509 != NULL) |
| @@ -344,14 +330,10 @@ ssl_cert_free(CERT *c) | |||
| 344 | 330 | ||
| 345 | if (c->rsa_tmp) | 331 | if (c->rsa_tmp) |
| 346 | RSA_free(c->rsa_tmp); | 332 | RSA_free(c->rsa_tmp); |
| 347 | #ifndef OPENSSL_NO_DH | ||
| 348 | if (c->dh_tmp) | 333 | if (c->dh_tmp) |
| 349 | DH_free(c->dh_tmp); | 334 | DH_free(c->dh_tmp); |
| 350 | #endif | ||
| 351 | #ifndef OPENSSL_NO_ECDH | ||
| 352 | if (c->ecdh_tmp) | 335 | if (c->ecdh_tmp) |
| 353 | EC_KEY_free(c->ecdh_tmp); | 336 | EC_KEY_free(c->ecdh_tmp); |
| 354 | #endif | ||
| 355 | 337 | ||
| 356 | for (i = 0; i < SSL_PKEY_NUM; i++) { | 338 | for (i = 0; i < SSL_PKEY_NUM; i++) { |
| 357 | if (c->pkeys[i].x509 != NULL) | 339 | if (c->pkeys[i].x509 != NULL) |
| @@ -437,14 +419,10 @@ ssl_sess_cert_free(SESS_CERT *sc) | |||
| 437 | 419 | ||
| 438 | if (sc->peer_rsa_tmp != NULL) | 420 | if (sc->peer_rsa_tmp != NULL) |
| 439 | RSA_free(sc->peer_rsa_tmp); | 421 | RSA_free(sc->peer_rsa_tmp); |
| 440 | #ifndef OPENSSL_NO_DH | ||
| 441 | if (sc->peer_dh_tmp != NULL) | 422 | if (sc->peer_dh_tmp != NULL) |
| 442 | DH_free(sc->peer_dh_tmp); | 423 | DH_free(sc->peer_dh_tmp); |
| 443 | #endif | ||
| 444 | #ifndef OPENSSL_NO_ECDH | ||
| 445 | if (sc->peer_ecdh_tmp != NULL) | 424 | if (sc->peer_ecdh_tmp != NULL) |
| 446 | EC_KEY_free(sc->peer_ecdh_tmp); | 425 | EC_KEY_free(sc->peer_ecdh_tmp); |
| 447 | #endif | ||
| 448 | 426 | ||
| 449 | free(sc); | 427 | free(sc); |
| 450 | } | 428 | } |
diff --git a/src/lib/libssl/src/ssl/ssl_ciph.c b/src/lib/libssl/src/ssl/ssl_ciph.c index 5e93a4cde1..72061035aa 100644 --- a/src/lib/libssl/src/ssl/ssl_ciph.c +++ b/src/lib/libssl/src/ssl/ssl_ciph.c | |||
| @@ -708,19 +708,8 @@ ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth, unsigned long | |||
| 708 | 708 | ||
| 709 | *mkey |= SSL_kDHr|SSL_kDHd; /* no such ciphersuites supported! */ | 709 | *mkey |= SSL_kDHr|SSL_kDHd; /* no such ciphersuites supported! */ |
| 710 | *auth |= SSL_aDH; | 710 | *auth |= SSL_aDH; |
| 711 | #ifdef OPENSSL_NO_DH | ||
| 712 | *mkey |= SSL_kDHr|SSL_kDHd|SSL_kEDH; | ||
| 713 | *auth |= SSL_aDH; | ||
| 714 | #endif | ||
| 715 | *mkey |= SSL_kKRB5; | 711 | *mkey |= SSL_kKRB5; |
| 716 | *auth |= SSL_aKRB5; | 712 | *auth |= SSL_aKRB5; |
| 717 | #ifdef OPENSSL_NO_ECDSA | ||
| 718 | *auth |= SSL_aECDSA; | ||
| 719 | #endif | ||
| 720 | #ifdef OPENSSL_NO_ECDH | ||
| 721 | *mkey |= SSL_kECDHe|SSL_kECDHr; | ||
| 722 | *auth |= SSL_aECDH; | ||
| 723 | #endif | ||
| 724 | #ifdef OPENSSL_NO_PSK | 713 | #ifdef OPENSSL_NO_PSK |
| 725 | *mkey |= SSL_kPSK; | 714 | *mkey |= SSL_kPSK; |
| 726 | *auth |= SSL_aPSK; | 715 | *auth |= SSL_aPSK; |
diff --git a/src/lib/libssl/src/ssl/ssl_lib.c b/src/lib/libssl/src/ssl/ssl_lib.c index 6cc02c8d7a..d134a4f22a 100644 --- a/src/lib/libssl/src/ssl/ssl_lib.c +++ b/src/lib/libssl/src/ssl/ssl_lib.c | |||
| @@ -149,9 +149,7 @@ | |||
| 149 | #include <openssl/x509v3.h> | 149 | #include <openssl/x509v3.h> |
| 150 | #include <openssl/rand.h> | 150 | #include <openssl/rand.h> |
| 151 | #include <openssl/ocsp.h> | 151 | #include <openssl/ocsp.h> |
| 152 | #ifndef OPENSSL_NO_DH | ||
| 153 | #include <openssl/dh.h> | 152 | #include <openssl/dh.h> |
| 154 | #endif | ||
| 155 | #ifndef OPENSSL_NO_ENGINE | 153 | #ifndef OPENSSL_NO_ENGINE |
| 156 | #include <openssl/engine.h> | 154 | #include <openssl/engine.h> |
| 157 | #endif | 155 | #endif |
| @@ -2002,9 +2000,7 @@ ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher) | |||
| 2002 | int rsa_tmp_export, dh_tmp_export, kl; | 2000 | int rsa_tmp_export, dh_tmp_export, kl; |
| 2003 | unsigned long mask_k, mask_a, emask_k, emask_a; | 2001 | unsigned long mask_k, mask_a, emask_k, emask_a; |
| 2004 | int have_ecc_cert, ecdh_ok, ecdsa_ok, ecc_pkey_size; | 2002 | int have_ecc_cert, ecdh_ok, ecdsa_ok, ecc_pkey_size; |
| 2005 | #ifndef OPENSSL_NO_ECDH | ||
| 2006 | int have_ecdh_tmp; | 2003 | int have_ecdh_tmp; |
| 2007 | #endif | ||
| 2008 | X509 *x = NULL; | 2004 | X509 *x = NULL; |
| 2009 | EVP_PKEY *ecc_pkey = NULL; | 2005 | EVP_PKEY *ecc_pkey = NULL; |
| 2010 | int signature_nid = 0, pk_nid = 0, md_nid = 0; | 2006 | int signature_nid = 0, pk_nid = 0, md_nid = 0; |
| @@ -2017,17 +2013,11 @@ ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher) | |||
| 2017 | rsa_tmp = (c->rsa_tmp != NULL || c->rsa_tmp_cb != NULL); | 2013 | rsa_tmp = (c->rsa_tmp != NULL || c->rsa_tmp_cb != NULL); |
| 2018 | rsa_tmp_export = (c->rsa_tmp_cb != NULL || | 2014 | rsa_tmp_export = (c->rsa_tmp_cb != NULL || |
| 2019 | (rsa_tmp && RSA_size(c->rsa_tmp)*8 <= kl)); | 2015 | (rsa_tmp && RSA_size(c->rsa_tmp)*8 <= kl)); |
| 2020 | #ifndef OPENSSL_NO_DH | ||
| 2021 | dh_tmp = (c->dh_tmp != NULL || c->dh_tmp_cb != NULL); | 2016 | dh_tmp = (c->dh_tmp != NULL || c->dh_tmp_cb != NULL); |
| 2022 | dh_tmp_export = (c->dh_tmp_cb != NULL || | 2017 | dh_tmp_export = (c->dh_tmp_cb != NULL || |
| 2023 | (dh_tmp && DH_size(c->dh_tmp)*8 <= kl)); | 2018 | (dh_tmp && DH_size(c->dh_tmp)*8 <= kl)); |
| 2024 | #else | ||
| 2025 | dh_tmp = dh_tmp_export = 0; | ||
| 2026 | #endif | ||
| 2027 | 2019 | ||
| 2028 | #ifndef OPENSSL_NO_ECDH | ||
| 2029 | have_ecdh_tmp = (c->ecdh_tmp != NULL || c->ecdh_tmp_cb != NULL); | 2020 | have_ecdh_tmp = (c->ecdh_tmp != NULL || c->ecdh_tmp_cb != NULL); |
| 2030 | #endif | ||
| 2031 | cpk = &(c->pkeys[SSL_PKEY_RSA_ENC]); | 2021 | cpk = &(c->pkeys[SSL_PKEY_RSA_ENC]); |
| 2032 | rsa_enc = (cpk->x509 != NULL && cpk->privatekey != NULL); | 2022 | rsa_enc = (cpk->x509 != NULL && cpk->privatekey != NULL); |
| 2033 | rsa_enc_export = (rsa_enc && EVP_PKEY_size(cpk->privatekey)*8 <= kl); | 2023 | rsa_enc_export = (rsa_enc && EVP_PKEY_size(cpk->privatekey)*8 <= kl); |
| @@ -2128,7 +2118,6 @@ ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher) | |||
| 2128 | signature_nid = OBJ_obj2nid(x->sig_alg->algorithm); | 2118 | signature_nid = OBJ_obj2nid(x->sig_alg->algorithm); |
| 2129 | OBJ_find_sigid_algs(signature_nid, &md_nid, &pk_nid); | 2119 | OBJ_find_sigid_algs(signature_nid, &md_nid, &pk_nid); |
| 2130 | } | 2120 | } |
| 2131 | #ifndef OPENSSL_NO_ECDH | ||
| 2132 | if (ecdh_ok) { | 2121 | if (ecdh_ok) { |
| 2133 | 2122 | ||
| 2134 | if (pk_nid == NID_rsaEncryption || pk_nid == NID_rsa) { | 2123 | if (pk_nid == NID_rsaEncryption || pk_nid == NID_rsa) { |
| @@ -2149,21 +2138,16 @@ ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher) | |||
| 2149 | } | 2138 | } |
| 2150 | } | 2139 | } |
| 2151 | } | 2140 | } |
| 2152 | #endif | ||
| 2153 | #ifndef OPENSSL_NO_ECDSA | ||
| 2154 | if (ecdsa_ok) { | 2141 | if (ecdsa_ok) { |
| 2155 | mask_a|=SSL_aECDSA; | 2142 | mask_a|=SSL_aECDSA; |
| 2156 | emask_a|=SSL_aECDSA; | 2143 | emask_a|=SSL_aECDSA; |
| 2157 | } | 2144 | } |
| 2158 | #endif | ||
| 2159 | } | 2145 | } |
| 2160 | 2146 | ||
| 2161 | #ifndef OPENSSL_NO_ECDH | ||
| 2162 | if (have_ecdh_tmp) { | 2147 | if (have_ecdh_tmp) { |
| 2163 | mask_k|=SSL_kEECDH; | 2148 | mask_k|=SSL_kEECDH; |
| 2164 | emask_k|=SSL_kEECDH; | 2149 | emask_k|=SSL_kEECDH; |
| 2165 | } | 2150 | } |
| 2166 | #endif | ||
| 2167 | 2151 | ||
| 2168 | #ifndef OPENSSL_NO_PSK | 2152 | #ifndef OPENSSL_NO_PSK |
| 2169 | mask_k |= SSL_kPSK; | 2153 | mask_k |= SSL_kPSK; |
| @@ -3072,7 +3056,6 @@ cb(SSL *ssl, int is_export, int keylength) | |||
| 3072 | * \param dh the callback | 3056 | * \param dh the callback |
| 3073 | */ | 3057 | */ |
| 3074 | 3058 | ||
| 3075 | #ifndef OPENSSL_NO_DH | ||
| 3076 | void | 3059 | void |
| 3077 | SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, DH *(*dh)(SSL *ssl, int is_export, | 3060 | SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, DH *(*dh)(SSL *ssl, int is_export, |
| 3078 | int keylength)) | 3061 | int keylength)) |
| @@ -3086,9 +3069,7 @@ SSL_set_tmp_dh_callback(SSL *ssl, DH *(*dh)(SSL *ssl, int is_export, | |||
| 3086 | { | 3069 | { |
| 3087 | SSL_callback_ctrl(ssl, SSL_CTRL_SET_TMP_DH_CB,(void (*)(void))dh); | 3070 | SSL_callback_ctrl(ssl, SSL_CTRL_SET_TMP_DH_CB,(void (*)(void))dh); |
| 3088 | } | 3071 | } |
| 3089 | #endif | ||
| 3090 | 3072 | ||
| 3091 | #ifndef OPENSSL_NO_ECDH | ||
| 3092 | void | 3073 | void |
| 3093 | SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, EC_KEY *(*ecdh)(SSL *ssl, | 3074 | SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, EC_KEY *(*ecdh)(SSL *ssl, |
| 3094 | int is_export, int keylength)) | 3075 | int is_export, int keylength)) |
| @@ -3103,7 +3084,6 @@ SSL_set_tmp_ecdh_callback(SSL *ssl, EC_KEY *(*ecdh)(SSL *ssl, int is_export, | |||
| 3103 | { | 3084 | { |
| 3104 | SSL_callback_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH_CB,(void (*)(void))ecdh); | 3085 | SSL_callback_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH_CB,(void (*)(void))ecdh); |
| 3105 | } | 3086 | } |
| 3106 | #endif | ||
| 3107 | 3087 | ||
| 3108 | #ifndef OPENSSL_NO_PSK | 3088 | #ifndef OPENSSL_NO_PSK |
| 3109 | int | 3089 | int |
diff --git a/src/lib/libssl/src/ssl/ssl_locl.h b/src/lib/libssl/src/ssl/ssl_locl.h index 11250ba468..d80bf958fd 100644 --- a/src/lib/libssl/src/ssl/ssl_locl.h +++ b/src/lib/libssl/src/ssl/ssl_locl.h | |||
| @@ -479,15 +479,11 @@ typedef struct cert_st { | |||
| 479 | unsigned long export_mask_a; | 479 | unsigned long export_mask_a; |
| 480 | RSA *rsa_tmp; | 480 | RSA *rsa_tmp; |
| 481 | RSA *(*rsa_tmp_cb)(SSL *ssl, int is_export, int keysize); | 481 | RSA *(*rsa_tmp_cb)(SSL *ssl, int is_export, int keysize); |
| 482 | #ifndef OPENSSL_NO_DH | ||
| 483 | DH *dh_tmp; | 482 | DH *dh_tmp; |
| 484 | DH *(*dh_tmp_cb)(SSL *ssl, int is_export, int keysize); | 483 | DH *(*dh_tmp_cb)(SSL *ssl, int is_export, int keysize); |
| 485 | #endif | ||
| 486 | #ifndef OPENSSL_NO_ECDH | ||
| 487 | EC_KEY *ecdh_tmp; | 484 | EC_KEY *ecdh_tmp; |
| 488 | /* Callback for generating ephemeral ECDH keys */ | 485 | /* Callback for generating ephemeral ECDH keys */ |
| 489 | EC_KEY *(*ecdh_tmp_cb)(SSL *ssl, int is_export, int keysize); | 486 | EC_KEY *(*ecdh_tmp_cb)(SSL *ssl, int is_export, int keysize); |
| 490 | #endif | ||
| 491 | 487 | ||
| 492 | CERT_PKEY pkeys[SSL_PKEY_NUM]; | 488 | CERT_PKEY pkeys[SSL_PKEY_NUM]; |
| 493 | 489 | ||
| @@ -507,12 +503,8 @@ typedef struct sess_cert_st { | |||
| 507 | * so maybe we shouldn't even use the CERT_PKEY type here. */ | 503 | * so maybe we shouldn't even use the CERT_PKEY type here. */ |
| 508 | 504 | ||
| 509 | RSA *peer_rsa_tmp; /* not used for SSL 2 */ | 505 | RSA *peer_rsa_tmp; /* not used for SSL 2 */ |
| 510 | #ifndef OPENSSL_NO_DH | ||
| 511 | DH *peer_dh_tmp; /* not used for SSL 2 */ | 506 | DH *peer_dh_tmp; /* not used for SSL 2 */ |
| 512 | #endif | ||
| 513 | #ifndef OPENSSL_NO_ECDH | ||
| 514 | EC_KEY *peer_ecdh_tmp; | 507 | EC_KEY *peer_ecdh_tmp; |
| 515 | #endif | ||
| 516 | 508 | ||
| 517 | int references; /* actually always 1 at the moment */ | 509 | int references; /* actually always 1 at the moment */ |
| 518 | } SESS_CERT; | 510 | } SESS_CERT; |
| @@ -836,9 +828,7 @@ int tls1_alert_code(int code); | |||
| 836 | int ssl3_alert_code(int code); | 828 | int ssl3_alert_code(int code); |
| 837 | int ssl_ok(SSL *s); | 829 | int ssl_ok(SSL *s); |
| 838 | 830 | ||
| 839 | #ifndef OPENSSL_NO_ECDH | ||
| 840 | int ssl_check_srvr_ecc_cert_and_alg(X509 *x, SSL *s); | 831 | int ssl_check_srvr_ecc_cert_and_alg(X509 *x, SSL *s); |
| 841 | #endif | ||
| 842 | 832 | ||
| 843 | SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n); | 833 | SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n); |
| 844 | 834 | ||
diff --git a/src/lib/libssl/src/ssl/t1_lib.c b/src/lib/libssl/src/ssl/t1_lib.c index 1424eab6e6..b15465d550 100644 --- a/src/lib/libssl/src/ssl/t1_lib.c +++ b/src/lib/libssl/src/ssl/t1_lib.c | |||
| @@ -364,11 +364,7 @@ tls1_ec_nid2curve_id(int nid) | |||
| 364 | 364 | ||
| 365 | #define tlsext_sigalg_dsa(md) md, TLSEXT_signature_dsa, | 365 | #define tlsext_sigalg_dsa(md) md, TLSEXT_signature_dsa, |
| 366 | 366 | ||
| 367 | #ifdef OPENSSL_NO_ECDSA | ||
| 368 | #define tlsext_sigalg_ecdsa(md) /* */ | ||
| 369 | #else | ||
| 370 | #define tlsext_sigalg_ecdsa(md) md, TLSEXT_signature_ecdsa, | 367 | #define tlsext_sigalg_ecdsa(md) md, TLSEXT_signature_ecdsa, |
| 371 | #endif | ||
| 372 | 368 | ||
| 373 | #define tlsext_sigalg(md) \ | 369 | #define tlsext_sigalg(md) \ |
| 374 | tlsext_sigalg_rsa(md) \ | 370 | tlsext_sigalg_rsa(md) \ |
| @@ -2221,9 +2217,7 @@ static tls12_lookup tls12_md[] = { | |||
| 2221 | static tls12_lookup tls12_sig[] = { | 2217 | static tls12_lookup tls12_sig[] = { |
| 2222 | {EVP_PKEY_RSA, TLSEXT_signature_rsa}, | 2218 | {EVP_PKEY_RSA, TLSEXT_signature_rsa}, |
| 2223 | {EVP_PKEY_DSA, TLSEXT_signature_dsa}, | 2219 | {EVP_PKEY_DSA, TLSEXT_signature_dsa}, |
| 2224 | #ifndef OPENSSL_NO_ECDSA | ||
| 2225 | {EVP_PKEY_EC, TLSEXT_signature_ecdsa} | 2220 | {EVP_PKEY_EC, TLSEXT_signature_ecdsa} |
| 2226 | #endif | ||
| 2227 | }; | 2221 | }; |
| 2228 | 2222 | ||
| 2229 | static int | 2223 | static int |
| @@ -2324,11 +2318,9 @@ tls1_process_sigalgs(SSL *s, const unsigned char *data, int dsize) | |||
| 2324 | case TLSEXT_signature_dsa: | 2318 | case TLSEXT_signature_dsa: |
| 2325 | idx = SSL_PKEY_DSA_SIGN; | 2319 | idx = SSL_PKEY_DSA_SIGN; |
| 2326 | break; | 2320 | break; |
| 2327 | #ifndef OPENSSL_NO_ECDSA | ||
| 2328 | case TLSEXT_signature_ecdsa: | 2321 | case TLSEXT_signature_ecdsa: |
| 2329 | idx = SSL_PKEY_ECC; | 2322 | idx = SSL_PKEY_ECC; |
| 2330 | break; | 2323 | break; |
| 2331 | #endif | ||
| 2332 | default: | 2324 | default: |
| 2333 | continue; | 2325 | continue; |
| 2334 | } | 2326 | } |
| @@ -2353,10 +2345,8 @@ tls1_process_sigalgs(SSL *s, const unsigned char *data, int dsize) | |||
| 2353 | c->pkeys[SSL_PKEY_RSA_SIGN].digest = EVP_sha1(); | 2345 | c->pkeys[SSL_PKEY_RSA_SIGN].digest = EVP_sha1(); |
| 2354 | c->pkeys[SSL_PKEY_RSA_ENC].digest = EVP_sha1(); | 2346 | c->pkeys[SSL_PKEY_RSA_ENC].digest = EVP_sha1(); |
| 2355 | } | 2347 | } |
| 2356 | #ifndef OPENSSL_NO_ECDSA | ||
| 2357 | if (!c->pkeys[SSL_PKEY_ECC].digest) | 2348 | if (!c->pkeys[SSL_PKEY_ECC].digest) |
| 2358 | c->pkeys[SSL_PKEY_ECC].digest = EVP_sha1(); | 2349 | c->pkeys[SSL_PKEY_ECC].digest = EVP_sha1(); |
| 2359 | #endif | ||
| 2360 | return 1; | 2350 | return 1; |
| 2361 | } | 2351 | } |
| 2362 | 2352 | ||
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h index 6765e3560a..69c0bb00e2 100644 --- a/src/lib/libssl/ssl.h +++ b/src/lib/libssl/ssl.h | |||
| @@ -1875,18 +1875,14 @@ void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, | |||
| 1875 | 1875 | ||
| 1876 | void SSL_set_tmp_rsa_callback(SSL *ssl, | 1876 | void SSL_set_tmp_rsa_callback(SSL *ssl, |
| 1877 | RSA *(*cb)(SSL *ssl, int is_export, int keylength)); | 1877 | RSA *(*cb)(SSL *ssl, int is_export, int keylength)); |
| 1878 | #ifndef OPENSSL_NO_DH | ||
| 1879 | void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, | 1878 | void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, |
| 1880 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); | 1879 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); |
| 1881 | void SSL_set_tmp_dh_callback(SSL *ssl, | 1880 | void SSL_set_tmp_dh_callback(SSL *ssl, |
| 1882 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); | 1881 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); |
| 1883 | #endif | ||
| 1884 | #ifndef OPENSSL_NO_ECDH | ||
| 1885 | void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, | 1882 | void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, |
| 1886 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); | 1883 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); |
| 1887 | void SSL_set_tmp_ecdh_callback(SSL *ssl, | 1884 | void SSL_set_tmp_ecdh_callback(SSL *ssl, |
| 1888 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); | 1885 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); |
| 1889 | #endif | ||
| 1890 | 1886 | ||
| 1891 | #ifndef OPENSSL_NO_COMP | 1887 | #ifndef OPENSSL_NO_COMP |
| 1892 | const COMP_METHOD *SSL_get_current_compression(SSL *s); | 1888 | const COMP_METHOD *SSL_get_current_compression(SSL *s); |
diff --git a/src/lib/libssl/ssl3.h b/src/lib/libssl/ssl3.h index 2b041d7e2f..2840b1320f 100644 --- a/src/lib/libssl/ssl3.h +++ b/src/lib/libssl/ssl3.h | |||
| @@ -490,13 +490,9 @@ typedef struct ssl3_state_st { | |||
| 490 | 490 | ||
| 491 | /* used to hold the new cipher we are going to use */ | 491 | /* used to hold the new cipher we are going to use */ |
| 492 | const SSL_CIPHER *new_cipher; | 492 | const SSL_CIPHER *new_cipher; |
| 493 | #ifndef OPENSSL_NO_DH | ||
| 494 | DH *dh; | 493 | DH *dh; |
| 495 | #endif | ||
| 496 | 494 | ||
| 497 | #ifndef OPENSSL_NO_ECDH | ||
| 498 | EC_KEY *ecdh; /* holds short lived ECDH key */ | 495 | EC_KEY *ecdh; /* holds short lived ECDH key */ |
| 499 | #endif | ||
| 500 | 496 | ||
| 501 | /* used when SSL_ST_FLUSH_DATA is entered */ | 497 | /* used when SSL_ST_FLUSH_DATA is entered */ |
| 502 | int next_state; | 498 | int next_state; |
diff --git a/src/lib/libssl/ssl_algs.c b/src/lib/libssl/ssl_algs.c index 46b3c41351..84f44889b5 100644 --- a/src/lib/libssl/ssl_algs.c +++ b/src/lib/libssl/ssl_algs.c | |||
| @@ -111,9 +111,7 @@ SSL_library_init(void) | |||
| 111 | EVP_add_digest_alias(SN_dsaWithSHA1, SN_dsaWithSHA1_2); | 111 | EVP_add_digest_alias(SN_dsaWithSHA1, SN_dsaWithSHA1_2); |
| 112 | EVP_add_digest_alias(SN_dsaWithSHA1, "DSS1"); | 112 | EVP_add_digest_alias(SN_dsaWithSHA1, "DSS1"); |
| 113 | EVP_add_digest_alias(SN_dsaWithSHA1, "dss1"); | 113 | EVP_add_digest_alias(SN_dsaWithSHA1, "dss1"); |
| 114 | #ifndef OPENSSL_NO_ECDSA | ||
| 115 | EVP_add_digest(EVP_ecdsa()); | 114 | EVP_add_digest(EVP_ecdsa()); |
| 116 | #endif | ||
| 117 | #ifndef OPENSSL_NO_COMP | 115 | #ifndef OPENSSL_NO_COMP |
| 118 | /* This will initialise the built-in compression algorithms. | 116 | /* This will initialise the built-in compression algorithms. |
| 119 | The value returned is a STACK_OF(SSL_COMP), but that can | 117 | The value returned is a STACK_OF(SSL_COMP), but that can |
diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c index d8b94b1285..f506ae685f 100644 --- a/src/lib/libssl/ssl_cert.c +++ b/src/lib/libssl/ssl_cert.c | |||
| @@ -125,9 +125,7 @@ | |||
| 125 | #include <openssl/bio.h> | 125 | #include <openssl/bio.h> |
| 126 | #include <openssl/pem.h> | 126 | #include <openssl/pem.h> |
| 127 | #include <openssl/x509v3.h> | 127 | #include <openssl/x509v3.h> |
| 128 | #ifndef OPENSSL_NO_DH | ||
| 129 | #include <openssl/dh.h> | 128 | #include <openssl/dh.h> |
| 130 | #endif | ||
| 131 | #include <openssl/bn.h> | 129 | #include <openssl/bn.h> |
| 132 | #include "ssl_locl.h" | 130 | #include "ssl_locl.h" |
| 133 | 131 | ||
| @@ -165,9 +163,7 @@ ssl_cert_set_default_md(CERT *cert) | |||
| 165 | cert->pkeys[SSL_PKEY_DSA_SIGN].digest = EVP_sha1(); | 163 | cert->pkeys[SSL_PKEY_DSA_SIGN].digest = EVP_sha1(); |
| 166 | cert->pkeys[SSL_PKEY_RSA_SIGN].digest = EVP_sha1(); | 164 | cert->pkeys[SSL_PKEY_RSA_SIGN].digest = EVP_sha1(); |
| 167 | cert->pkeys[SSL_PKEY_RSA_ENC].digest = EVP_sha1(); | 165 | cert->pkeys[SSL_PKEY_RSA_ENC].digest = EVP_sha1(); |
| 168 | #ifndef OPENSSL_NO_ECDSA | ||
| 169 | cert->pkeys[SSL_PKEY_ECC].digest = EVP_sha1(); | 166 | cert->pkeys[SSL_PKEY_ECC].digest = EVP_sha1(); |
| 170 | #endif | ||
| 171 | } | 167 | } |
| 172 | 168 | ||
| 173 | CERT * | 169 | CERT * |
| @@ -214,7 +210,6 @@ ssl_cert_dup(CERT *cert) | |||
| 214 | } | 210 | } |
| 215 | ret->rsa_tmp_cb = cert->rsa_tmp_cb; | 211 | ret->rsa_tmp_cb = cert->rsa_tmp_cb; |
| 216 | 212 | ||
| 217 | #ifndef OPENSSL_NO_DH | ||
| 218 | if (cert->dh_tmp != NULL) { | 213 | if (cert->dh_tmp != NULL) { |
| 219 | ret->dh_tmp = DHparams_dup(cert->dh_tmp); | 214 | ret->dh_tmp = DHparams_dup(cert->dh_tmp); |
| 220 | if (ret->dh_tmp == NULL) { | 215 | if (ret->dh_tmp == NULL) { |
| @@ -239,9 +234,7 @@ ssl_cert_dup(CERT *cert) | |||
| 239 | } | 234 | } |
| 240 | } | 235 | } |
| 241 | ret->dh_tmp_cb = cert->dh_tmp_cb; | 236 | ret->dh_tmp_cb = cert->dh_tmp_cb; |
| 242 | #endif | ||
| 243 | 237 | ||
| 244 | #ifndef OPENSSL_NO_ECDH | ||
| 245 | if (cert->ecdh_tmp) { | 238 | if (cert->ecdh_tmp) { |
| 246 | ret->ecdh_tmp = EC_KEY_dup(cert->ecdh_tmp); | 239 | ret->ecdh_tmp = EC_KEY_dup(cert->ecdh_tmp); |
| 247 | if (ret->ecdh_tmp == NULL) { | 240 | if (ret->ecdh_tmp == NULL) { |
| @@ -250,7 +243,6 @@ ssl_cert_dup(CERT *cert) | |||
| 250 | } | 243 | } |
| 251 | } | 244 | } |
| 252 | ret->ecdh_tmp_cb = cert->ecdh_tmp_cb; | 245 | ret->ecdh_tmp_cb = cert->ecdh_tmp_cb; |
| 253 | #endif | ||
| 254 | 246 | ||
| 255 | for (i = 0; i < SSL_PKEY_NUM; i++) { | 247 | for (i = 0; i < SSL_PKEY_NUM; i++) { |
| 256 | if (cert->pkeys[i].x509 != NULL) { | 248 | if (cert->pkeys[i].x509 != NULL) { |
| @@ -305,19 +297,13 @@ ssl_cert_dup(CERT *cert) | |||
| 305 | 297 | ||
| 306 | return (ret); | 298 | return (ret); |
| 307 | 299 | ||
| 308 | #if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_ECDH) | ||
| 309 | err: | 300 | err: |
| 310 | #endif | ||
| 311 | if (ret->rsa_tmp != NULL) | 301 | if (ret->rsa_tmp != NULL) |
| 312 | RSA_free(ret->rsa_tmp); | 302 | RSA_free(ret->rsa_tmp); |
| 313 | #ifndef OPENSSL_NO_DH | ||
| 314 | if (ret->dh_tmp != NULL) | 303 | if (ret->dh_tmp != NULL) |
| 315 | DH_free(ret->dh_tmp); | 304 | DH_free(ret->dh_tmp); |
| 316 | #endif | ||
| 317 | #ifndef OPENSSL_NO_ECDH | ||
| 318 | if (ret->ecdh_tmp != NULL) | 305 | if (ret->ecdh_tmp != NULL) |
| 319 | EC_KEY_free(ret->ecdh_tmp); | 306 | EC_KEY_free(ret->ecdh_tmp); |
| 320 | #endif | ||
| 321 | 307 | ||
| 322 | for (i = 0; i < SSL_PKEY_NUM; i++) { | 308 | for (i = 0; i < SSL_PKEY_NUM; i++) { |
| 323 | if (ret->pkeys[i].x509 != NULL) | 309 | if (ret->pkeys[i].x509 != NULL) |
| @@ -344,14 +330,10 @@ ssl_cert_free(CERT *c) | |||
| 344 | 330 | ||
| 345 | if (c->rsa_tmp) | 331 | if (c->rsa_tmp) |
| 346 | RSA_free(c->rsa_tmp); | 332 | RSA_free(c->rsa_tmp); |
| 347 | #ifndef OPENSSL_NO_DH | ||
| 348 | if (c->dh_tmp) | 333 | if (c->dh_tmp) |
| 349 | DH_free(c->dh_tmp); | 334 | DH_free(c->dh_tmp); |
| 350 | #endif | ||
| 351 | #ifndef OPENSSL_NO_ECDH | ||
| 352 | if (c->ecdh_tmp) | 335 | if (c->ecdh_tmp) |
| 353 | EC_KEY_free(c->ecdh_tmp); | 336 | EC_KEY_free(c->ecdh_tmp); |
| 354 | #endif | ||
| 355 | 337 | ||
| 356 | for (i = 0; i < SSL_PKEY_NUM; i++) { | 338 | for (i = 0; i < SSL_PKEY_NUM; i++) { |
| 357 | if (c->pkeys[i].x509 != NULL) | 339 | if (c->pkeys[i].x509 != NULL) |
| @@ -437,14 +419,10 @@ ssl_sess_cert_free(SESS_CERT *sc) | |||
| 437 | 419 | ||
| 438 | if (sc->peer_rsa_tmp != NULL) | 420 | if (sc->peer_rsa_tmp != NULL) |
| 439 | RSA_free(sc->peer_rsa_tmp); | 421 | RSA_free(sc->peer_rsa_tmp); |
| 440 | #ifndef OPENSSL_NO_DH | ||
| 441 | if (sc->peer_dh_tmp != NULL) | 422 | if (sc->peer_dh_tmp != NULL) |
| 442 | DH_free(sc->peer_dh_tmp); | 423 | DH_free(sc->peer_dh_tmp); |
| 443 | #endif | ||
| 444 | #ifndef OPENSSL_NO_ECDH | ||
| 445 | if (sc->peer_ecdh_tmp != NULL) | 424 | if (sc->peer_ecdh_tmp != NULL) |
| 446 | EC_KEY_free(sc->peer_ecdh_tmp); | 425 | EC_KEY_free(sc->peer_ecdh_tmp); |
| 447 | #endif | ||
| 448 | 426 | ||
| 449 | free(sc); | 427 | free(sc); |
| 450 | } | 428 | } |
diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c index 5e93a4cde1..72061035aa 100644 --- a/src/lib/libssl/ssl_ciph.c +++ b/src/lib/libssl/ssl_ciph.c | |||
| @@ -708,19 +708,8 @@ ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth, unsigned long | |||
| 708 | 708 | ||
| 709 | *mkey |= SSL_kDHr|SSL_kDHd; /* no such ciphersuites supported! */ | 709 | *mkey |= SSL_kDHr|SSL_kDHd; /* no such ciphersuites supported! */ |
| 710 | *auth |= SSL_aDH; | 710 | *auth |= SSL_aDH; |
| 711 | #ifdef OPENSSL_NO_DH | ||
| 712 | *mkey |= SSL_kDHr|SSL_kDHd|SSL_kEDH; | ||
| 713 | *auth |= SSL_aDH; | ||
| 714 | #endif | ||
| 715 | *mkey |= SSL_kKRB5; | 711 | *mkey |= SSL_kKRB5; |
| 716 | *auth |= SSL_aKRB5; | 712 | *auth |= SSL_aKRB5; |
| 717 | #ifdef OPENSSL_NO_ECDSA | ||
| 718 | *auth |= SSL_aECDSA; | ||
| 719 | #endif | ||
| 720 | #ifdef OPENSSL_NO_ECDH | ||
| 721 | *mkey |= SSL_kECDHe|SSL_kECDHr; | ||
| 722 | *auth |= SSL_aECDH; | ||
| 723 | #endif | ||
| 724 | #ifdef OPENSSL_NO_PSK | 713 | #ifdef OPENSSL_NO_PSK |
| 725 | *mkey |= SSL_kPSK; | 714 | *mkey |= SSL_kPSK; |
| 726 | *auth |= SSL_aPSK; | 715 | *auth |= SSL_aPSK; |
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 6cc02c8d7a..d134a4f22a 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
| @@ -149,9 +149,7 @@ | |||
| 149 | #include <openssl/x509v3.h> | 149 | #include <openssl/x509v3.h> |
| 150 | #include <openssl/rand.h> | 150 | #include <openssl/rand.h> |
| 151 | #include <openssl/ocsp.h> | 151 | #include <openssl/ocsp.h> |
| 152 | #ifndef OPENSSL_NO_DH | ||
| 153 | #include <openssl/dh.h> | 152 | #include <openssl/dh.h> |
| 154 | #endif | ||
| 155 | #ifndef OPENSSL_NO_ENGINE | 153 | #ifndef OPENSSL_NO_ENGINE |
| 156 | #include <openssl/engine.h> | 154 | #include <openssl/engine.h> |
| 157 | #endif | 155 | #endif |
| @@ -2002,9 +2000,7 @@ ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher) | |||
| 2002 | int rsa_tmp_export, dh_tmp_export, kl; | 2000 | int rsa_tmp_export, dh_tmp_export, kl; |
| 2003 | unsigned long mask_k, mask_a, emask_k, emask_a; | 2001 | unsigned long mask_k, mask_a, emask_k, emask_a; |
| 2004 | int have_ecc_cert, ecdh_ok, ecdsa_ok, ecc_pkey_size; | 2002 | int have_ecc_cert, ecdh_ok, ecdsa_ok, ecc_pkey_size; |
| 2005 | #ifndef OPENSSL_NO_ECDH | ||
| 2006 | int have_ecdh_tmp; | 2003 | int have_ecdh_tmp; |
| 2007 | #endif | ||
| 2008 | X509 *x = NULL; | 2004 | X509 *x = NULL; |
| 2009 | EVP_PKEY *ecc_pkey = NULL; | 2005 | EVP_PKEY *ecc_pkey = NULL; |
| 2010 | int signature_nid = 0, pk_nid = 0, md_nid = 0; | 2006 | int signature_nid = 0, pk_nid = 0, md_nid = 0; |
| @@ -2017,17 +2013,11 @@ ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher) | |||
| 2017 | rsa_tmp = (c->rsa_tmp != NULL || c->rsa_tmp_cb != NULL); | 2013 | rsa_tmp = (c->rsa_tmp != NULL || c->rsa_tmp_cb != NULL); |
| 2018 | rsa_tmp_export = (c->rsa_tmp_cb != NULL || | 2014 | rsa_tmp_export = (c->rsa_tmp_cb != NULL || |
| 2019 | (rsa_tmp && RSA_size(c->rsa_tmp)*8 <= kl)); | 2015 | (rsa_tmp && RSA_size(c->rsa_tmp)*8 <= kl)); |
| 2020 | #ifndef OPENSSL_NO_DH | ||
| 2021 | dh_tmp = (c->dh_tmp != NULL || c->dh_tmp_cb != NULL); | 2016 | dh_tmp = (c->dh_tmp != NULL || c->dh_tmp_cb != NULL); |
| 2022 | dh_tmp_export = (c->dh_tmp_cb != NULL || | 2017 | dh_tmp_export = (c->dh_tmp_cb != NULL || |
| 2023 | (dh_tmp && DH_size(c->dh_tmp)*8 <= kl)); | 2018 | (dh_tmp && DH_size(c->dh_tmp)*8 <= kl)); |
| 2024 | #else | ||
| 2025 | dh_tmp = dh_tmp_export = 0; | ||
| 2026 | #endif | ||
| 2027 | 2019 | ||
| 2028 | #ifndef OPENSSL_NO_ECDH | ||
| 2029 | have_ecdh_tmp = (c->ecdh_tmp != NULL || c->ecdh_tmp_cb != NULL); | 2020 | have_ecdh_tmp = (c->ecdh_tmp != NULL || c->ecdh_tmp_cb != NULL); |
| 2030 | #endif | ||
| 2031 | cpk = &(c->pkeys[SSL_PKEY_RSA_ENC]); | 2021 | cpk = &(c->pkeys[SSL_PKEY_RSA_ENC]); |
| 2032 | rsa_enc = (cpk->x509 != NULL && cpk->privatekey != NULL); | 2022 | rsa_enc = (cpk->x509 != NULL && cpk->privatekey != NULL); |
| 2033 | rsa_enc_export = (rsa_enc && EVP_PKEY_size(cpk->privatekey)*8 <= kl); | 2023 | rsa_enc_export = (rsa_enc && EVP_PKEY_size(cpk->privatekey)*8 <= kl); |
| @@ -2128,7 +2118,6 @@ ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher) | |||
| 2128 | signature_nid = OBJ_obj2nid(x->sig_alg->algorithm); | 2118 | signature_nid = OBJ_obj2nid(x->sig_alg->algorithm); |
| 2129 | OBJ_find_sigid_algs(signature_nid, &md_nid, &pk_nid); | 2119 | OBJ_find_sigid_algs(signature_nid, &md_nid, &pk_nid); |
| 2130 | } | 2120 | } |
| 2131 | #ifndef OPENSSL_NO_ECDH | ||
| 2132 | if (ecdh_ok) { | 2121 | if (ecdh_ok) { |
| 2133 | 2122 | ||
| 2134 | if (pk_nid == NID_rsaEncryption || pk_nid == NID_rsa) { | 2123 | if (pk_nid == NID_rsaEncryption || pk_nid == NID_rsa) { |
| @@ -2149,21 +2138,16 @@ ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher) | |||
| 2149 | } | 2138 | } |
| 2150 | } | 2139 | } |
| 2151 | } | 2140 | } |
| 2152 | #endif | ||
| 2153 | #ifndef OPENSSL_NO_ECDSA | ||
| 2154 | if (ecdsa_ok) { | 2141 | if (ecdsa_ok) { |
| 2155 | mask_a|=SSL_aECDSA; | 2142 | mask_a|=SSL_aECDSA; |
| 2156 | emask_a|=SSL_aECDSA; | 2143 | emask_a|=SSL_aECDSA; |
| 2157 | } | 2144 | } |
| 2158 | #endif | ||
| 2159 | } | 2145 | } |
| 2160 | 2146 | ||
| 2161 | #ifndef OPENSSL_NO_ECDH | ||
| 2162 | if (have_ecdh_tmp) { | 2147 | if (have_ecdh_tmp) { |
| 2163 | mask_k|=SSL_kEECDH; | 2148 | mask_k|=SSL_kEECDH; |
| 2164 | emask_k|=SSL_kEECDH; | 2149 | emask_k|=SSL_kEECDH; |
| 2165 | } | 2150 | } |
| 2166 | #endif | ||
| 2167 | 2151 | ||
| 2168 | #ifndef OPENSSL_NO_PSK | 2152 | #ifndef OPENSSL_NO_PSK |
| 2169 | mask_k |= SSL_kPSK; | 2153 | mask_k |= SSL_kPSK; |
| @@ -3072,7 +3056,6 @@ cb(SSL *ssl, int is_export, int keylength) | |||
| 3072 | * \param dh the callback | 3056 | * \param dh the callback |
| 3073 | */ | 3057 | */ |
| 3074 | 3058 | ||
| 3075 | #ifndef OPENSSL_NO_DH | ||
| 3076 | void | 3059 | void |
| 3077 | SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, DH *(*dh)(SSL *ssl, int is_export, | 3060 | SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, DH *(*dh)(SSL *ssl, int is_export, |
| 3078 | int keylength)) | 3061 | int keylength)) |
| @@ -3086,9 +3069,7 @@ SSL_set_tmp_dh_callback(SSL *ssl, DH *(*dh)(SSL *ssl, int is_export, | |||
| 3086 | { | 3069 | { |
| 3087 | SSL_callback_ctrl(ssl, SSL_CTRL_SET_TMP_DH_CB,(void (*)(void))dh); | 3070 | SSL_callback_ctrl(ssl, SSL_CTRL_SET_TMP_DH_CB,(void (*)(void))dh); |
| 3088 | } | 3071 | } |
| 3089 | #endif | ||
| 3090 | 3072 | ||
| 3091 | #ifndef OPENSSL_NO_ECDH | ||
| 3092 | void | 3073 | void |
| 3093 | SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, EC_KEY *(*ecdh)(SSL *ssl, | 3074 | SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, EC_KEY *(*ecdh)(SSL *ssl, |
| 3094 | int is_export, int keylength)) | 3075 | int is_export, int keylength)) |
| @@ -3103,7 +3084,6 @@ SSL_set_tmp_ecdh_callback(SSL *ssl, EC_KEY *(*ecdh)(SSL *ssl, int is_export, | |||
| 3103 | { | 3084 | { |
| 3104 | SSL_callback_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH_CB,(void (*)(void))ecdh); | 3085 | SSL_callback_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH_CB,(void (*)(void))ecdh); |
| 3105 | } | 3086 | } |
| 3106 | #endif | ||
| 3107 | 3087 | ||
| 3108 | #ifndef OPENSSL_NO_PSK | 3088 | #ifndef OPENSSL_NO_PSK |
| 3109 | int | 3089 | int |
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h index 11250ba468..d80bf958fd 100644 --- a/src/lib/libssl/ssl_locl.h +++ b/src/lib/libssl/ssl_locl.h | |||
| @@ -479,15 +479,11 @@ typedef struct cert_st { | |||
| 479 | unsigned long export_mask_a; | 479 | unsigned long export_mask_a; |
| 480 | RSA *rsa_tmp; | 480 | RSA *rsa_tmp; |
| 481 | RSA *(*rsa_tmp_cb)(SSL *ssl, int is_export, int keysize); | 481 | RSA *(*rsa_tmp_cb)(SSL *ssl, int is_export, int keysize); |
| 482 | #ifndef OPENSSL_NO_DH | ||
| 483 | DH *dh_tmp; | 482 | DH *dh_tmp; |
| 484 | DH *(*dh_tmp_cb)(SSL *ssl, int is_export, int keysize); | 483 | DH *(*dh_tmp_cb)(SSL *ssl, int is_export, int keysize); |
| 485 | #endif | ||
| 486 | #ifndef OPENSSL_NO_ECDH | ||
| 487 | EC_KEY *ecdh_tmp; | 484 | EC_KEY *ecdh_tmp; |
| 488 | /* Callback for generating ephemeral ECDH keys */ | 485 | /* Callback for generating ephemeral ECDH keys */ |
| 489 | EC_KEY *(*ecdh_tmp_cb)(SSL *ssl, int is_export, int keysize); | 486 | EC_KEY *(*ecdh_tmp_cb)(SSL *ssl, int is_export, int keysize); |
| 490 | #endif | ||
| 491 | 487 | ||
| 492 | CERT_PKEY pkeys[SSL_PKEY_NUM]; | 488 | CERT_PKEY pkeys[SSL_PKEY_NUM]; |
| 493 | 489 | ||
| @@ -507,12 +503,8 @@ typedef struct sess_cert_st { | |||
| 507 | * so maybe we shouldn't even use the CERT_PKEY type here. */ | 503 | * so maybe we shouldn't even use the CERT_PKEY type here. */ |
| 508 | 504 | ||
| 509 | RSA *peer_rsa_tmp; /* not used for SSL 2 */ | 505 | RSA *peer_rsa_tmp; /* not used for SSL 2 */ |
| 510 | #ifndef OPENSSL_NO_DH | ||
| 511 | DH *peer_dh_tmp; /* not used for SSL 2 */ | 506 | DH *peer_dh_tmp; /* not used for SSL 2 */ |
| 512 | #endif | ||
| 513 | #ifndef OPENSSL_NO_ECDH | ||
| 514 | EC_KEY *peer_ecdh_tmp; | 507 | EC_KEY *peer_ecdh_tmp; |
| 515 | #endif | ||
| 516 | 508 | ||
| 517 | int references; /* actually always 1 at the moment */ | 509 | int references; /* actually always 1 at the moment */ |
| 518 | } SESS_CERT; | 510 | } SESS_CERT; |
| @@ -836,9 +828,7 @@ int tls1_alert_code(int code); | |||
| 836 | int ssl3_alert_code(int code); | 828 | int ssl3_alert_code(int code); |
| 837 | int ssl_ok(SSL *s); | 829 | int ssl_ok(SSL *s); |
| 838 | 830 | ||
| 839 | #ifndef OPENSSL_NO_ECDH | ||
| 840 | int ssl_check_srvr_ecc_cert_and_alg(X509 *x, SSL *s); | 831 | int ssl_check_srvr_ecc_cert_and_alg(X509 *x, SSL *s); |
| 841 | #endif | ||
| 842 | 832 | ||
| 843 | SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n); | 833 | SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n); |
| 844 | 834 | ||
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c index 1424eab6e6..b15465d550 100644 --- a/src/lib/libssl/t1_lib.c +++ b/src/lib/libssl/t1_lib.c | |||
| @@ -364,11 +364,7 @@ tls1_ec_nid2curve_id(int nid) | |||
| 364 | 364 | ||
| 365 | #define tlsext_sigalg_dsa(md) md, TLSEXT_signature_dsa, | 365 | #define tlsext_sigalg_dsa(md) md, TLSEXT_signature_dsa, |
| 366 | 366 | ||
| 367 | #ifdef OPENSSL_NO_ECDSA | ||
| 368 | #define tlsext_sigalg_ecdsa(md) /* */ | ||
| 369 | #else | ||
| 370 | #define tlsext_sigalg_ecdsa(md) md, TLSEXT_signature_ecdsa, | 367 | #define tlsext_sigalg_ecdsa(md) md, TLSEXT_signature_ecdsa, |
| 371 | #endif | ||
| 372 | 368 | ||
| 373 | #define tlsext_sigalg(md) \ | 369 | #define tlsext_sigalg(md) \ |
| 374 | tlsext_sigalg_rsa(md) \ | 370 | tlsext_sigalg_rsa(md) \ |
| @@ -2221,9 +2217,7 @@ static tls12_lookup tls12_md[] = { | |||
| 2221 | static tls12_lookup tls12_sig[] = { | 2217 | static tls12_lookup tls12_sig[] = { |
| 2222 | {EVP_PKEY_RSA, TLSEXT_signature_rsa}, | 2218 | {EVP_PKEY_RSA, TLSEXT_signature_rsa}, |
| 2223 | {EVP_PKEY_DSA, TLSEXT_signature_dsa}, | 2219 | {EVP_PKEY_DSA, TLSEXT_signature_dsa}, |
| 2224 | #ifndef OPENSSL_NO_ECDSA | ||
| 2225 | {EVP_PKEY_EC, TLSEXT_signature_ecdsa} | 2220 | {EVP_PKEY_EC, TLSEXT_signature_ecdsa} |
| 2226 | #endif | ||
| 2227 | }; | 2221 | }; |
| 2228 | 2222 | ||
| 2229 | static int | 2223 | static int |
| @@ -2324,11 +2318,9 @@ tls1_process_sigalgs(SSL *s, const unsigned char *data, int dsize) | |||
| 2324 | case TLSEXT_signature_dsa: | 2318 | case TLSEXT_signature_dsa: |
| 2325 | idx = SSL_PKEY_DSA_SIGN; | 2319 | idx = SSL_PKEY_DSA_SIGN; |
| 2326 | break; | 2320 | break; |
| 2327 | #ifndef OPENSSL_NO_ECDSA | ||
| 2328 | case TLSEXT_signature_ecdsa: | 2321 | case TLSEXT_signature_ecdsa: |
| 2329 | idx = SSL_PKEY_ECC; | 2322 | idx = SSL_PKEY_ECC; |
| 2330 | break; | 2323 | break; |
| 2331 | #endif | ||
| 2332 | default: | 2324 | default: |
| 2333 | continue; | 2325 | continue; |
| 2334 | } | 2326 | } |
| @@ -2353,10 +2345,8 @@ tls1_process_sigalgs(SSL *s, const unsigned char *data, int dsize) | |||
| 2353 | c->pkeys[SSL_PKEY_RSA_SIGN].digest = EVP_sha1(); | 2345 | c->pkeys[SSL_PKEY_RSA_SIGN].digest = EVP_sha1(); |
| 2354 | c->pkeys[SSL_PKEY_RSA_ENC].digest = EVP_sha1(); | 2346 | c->pkeys[SSL_PKEY_RSA_ENC].digest = EVP_sha1(); |
| 2355 | } | 2347 | } |
| 2356 | #ifndef OPENSSL_NO_ECDSA | ||
| 2357 | if (!c->pkeys[SSL_PKEY_ECC].digest) | 2348 | if (!c->pkeys[SSL_PKEY_ECC].digest) |
| 2358 | c->pkeys[SSL_PKEY_ECC].digest = EVP_sha1(); | 2349 | c->pkeys[SSL_PKEY_ECC].digest = EVP_sha1(); |
| 2359 | #endif | ||
| 2360 | return 1; | 2350 | return 1; |
| 2361 | } | 2351 | } |
| 2362 | 2352 | ||
