diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/ssl_srvr.c | 254 |
1 files changed, 85 insertions, 169 deletions
diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c index 46ca4d6c9c..0b110d6a72 100644 --- a/src/lib/libssl/ssl_srvr.c +++ b/src/lib/libssl/ssl_srvr.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_srvr.c,v 1.3 2017/01/26 10:40:21 beck Exp $ */ | 1 | /* $OpenBSD: ssl_srvr.c,v 1.4 2017/01/26 12:16:13 beck Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -253,8 +253,7 @@ ssl3_accept(SSL *s) | |||
| 253 | * client that doesn't support secure | 253 | * client that doesn't support secure |
| 254 | * renegotiation. | 254 | * renegotiation. |
| 255 | */ | 255 | */ |
| 256 | SSLerror( | 256 | SSLerror(SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); |
| 257 | SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); | ||
| 258 | ssl3_send_alert(s, SSL3_AL_FATAL, | 257 | ssl3_send_alert(s, SSL3_AL_FATAL, |
| 259 | SSL_AD_HANDSHAKE_FAILURE); | 258 | SSL_AD_HANDSHAKE_FAILURE); |
| 260 | ret = -1; | 259 | ret = -1; |
| @@ -484,8 +483,7 @@ ssl3_accept(SSL *s) | |||
| 484 | * at this point and digest cached records. | 483 | * at this point and digest cached records. |
| 485 | */ | 484 | */ |
| 486 | if (!S3I(s)->handshake_buffer) { | 485 | if (!S3I(s)->handshake_buffer) { |
| 487 | SSLerror( | 486 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 488 | ERR_R_INTERNAL_ERROR); | ||
| 489 | ret = -1; | 487 | ret = -1; |
| 490 | goto end; | 488 | goto end; |
| 491 | } | 489 | } |
| @@ -673,8 +671,7 @@ ssl3_accept(SSL *s) | |||
| 673 | /* break; */ | 671 | /* break; */ |
| 674 | 672 | ||
| 675 | default: | 673 | default: |
| 676 | SSLerror( | 674 | SSLerror(SSL_R_UNKNOWN_STATE); |
| 677 | SSL_R_UNKNOWN_STATE); | ||
| 678 | ret = -1; | 675 | ret = -1; |
| 679 | goto end; | 676 | goto end; |
| 680 | /* break; */ | 677 | /* break; */ |
| @@ -868,8 +865,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 868 | if (cookie_len > sizeof(D1I(s)->rcvd_cookie)) { | 865 | if (cookie_len > sizeof(D1I(s)->rcvd_cookie)) { |
| 869 | /* too much data */ | 866 | /* too much data */ |
| 870 | al = SSL_AD_DECODE_ERROR; | 867 | al = SSL_AD_DECODE_ERROR; |
| 871 | SSLerror( | 868 | SSLerror(SSL_R_COOKIE_MISMATCH); |
| 872 | SSL_R_COOKIE_MISMATCH); | ||
| 873 | goto f_err; | 869 | goto f_err; |
| 874 | } | 870 | } |
| 875 | 871 | ||
| @@ -885,8 +881,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 885 | if (s->ctx->internal->app_verify_cookie_cb(s, | 881 | if (s->ctx->internal->app_verify_cookie_cb(s, |
| 886 | D1I(s)->rcvd_cookie, cookie_len) == 0) { | 882 | D1I(s)->rcvd_cookie, cookie_len) == 0) { |
| 887 | al = SSL_AD_HANDSHAKE_FAILURE; | 883 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 888 | SSLerror( | 884 | SSLerror(SSL_R_COOKIE_MISMATCH); |
| 889 | SSL_R_COOKIE_MISMATCH); | ||
| 890 | goto f_err; | 885 | goto f_err; |
| 891 | } | 886 | } |
| 892 | /* else cookie verification succeeded */ | 887 | /* else cookie verification succeeded */ |
| @@ -894,8 +889,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 894 | D1I(s)->cookie_len) != 0) { | 889 | D1I(s)->cookie_len) != 0) { |
| 895 | /* default verification */ | 890 | /* default verification */ |
| 896 | al = SSL_AD_HANDSHAKE_FAILURE; | 891 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 897 | SSLerror( | 892 | SSLerror(SSL_R_COOKIE_MISMATCH); |
| 898 | SSL_R_COOKIE_MISMATCH); | ||
| 899 | goto f_err; | 893 | goto f_err; |
| 900 | } | 894 | } |
| 901 | 895 | ||
| @@ -911,8 +905,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 911 | if ((i == 0) && (j != 0)) { | 905 | if ((i == 0) && (j != 0)) { |
| 912 | /* we need a cipher if we are not resuming a session */ | 906 | /* we need a cipher if we are not resuming a session */ |
| 913 | al = SSL_AD_ILLEGAL_PARAMETER; | 907 | al = SSL_AD_ILLEGAL_PARAMETER; |
| 914 | SSLerror( | 908 | SSLerror(SSL_R_NO_CIPHERS_SPECIFIED); |
| 915 | SSL_R_NO_CIPHERS_SPECIFIED); | ||
| 916 | goto f_err; | 909 | goto f_err; |
| 917 | } | 910 | } |
| 918 | if (p - d + i > n) | 911 | if (p - d + i > n) |
| @@ -941,8 +934,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 941 | * list if we are asked to reuse it | 934 | * list if we are asked to reuse it |
| 942 | */ | 935 | */ |
| 943 | al = SSL_AD_ILLEGAL_PARAMETER; | 936 | al = SSL_AD_ILLEGAL_PARAMETER; |
| 944 | SSLerror( | 937 | SSLerror(SSL_R_REQUIRED_CIPHER_MISSING); |
| 945 | SSL_R_REQUIRED_CIPHER_MISSING); | ||
| 946 | goto f_err; | 938 | goto f_err; |
| 947 | } | 939 | } |
| 948 | } | 940 | } |
| @@ -962,8 +954,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 962 | if (j >= i) { | 954 | if (j >= i) { |
| 963 | /* no compress */ | 955 | /* no compress */ |
| 964 | al = SSL_AD_DECODE_ERROR; | 956 | al = SSL_AD_DECODE_ERROR; |
| 965 | SSLerror( | 957 | SSLerror(SSL_R_NO_COMPRESSION_SPECIFIED); |
| 966 | SSL_R_NO_COMPRESSION_SPECIFIED); | ||
| 967 | goto f_err; | 958 | goto f_err; |
| 968 | } | 959 | } |
| 969 | 960 | ||
| @@ -974,8 +965,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 974 | goto f_err; | 965 | goto f_err; |
| 975 | } | 966 | } |
| 976 | if (ssl_check_clienthello_tlsext_early(s) <= 0) { | 967 | if (ssl_check_clienthello_tlsext_early(s) <= 0) { |
| 977 | SSLerror( | 968 | SSLerror(SSL_R_CLIENTHELLO_TLSEXT); |
| 978 | SSL_R_CLIENTHELLO_TLSEXT); | ||
| 979 | goto err; | 969 | goto err; |
| 980 | } | 970 | } |
| 981 | 971 | ||
| @@ -1006,8 +996,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 1006 | SSL_get_ciphers(s)); | 996 | SSL_get_ciphers(s)); |
| 1007 | if (pref_cipher == NULL) { | 997 | if (pref_cipher == NULL) { |
| 1008 | al = SSL_AD_HANDSHAKE_FAILURE; | 998 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 1009 | SSLerror( | 999 | SSLerror(SSL_R_NO_SHARED_CIPHER); |
| 1010 | SSL_R_NO_SHARED_CIPHER); | ||
| 1011 | goto f_err; | 1000 | goto f_err; |
| 1012 | } | 1001 | } |
| 1013 | 1002 | ||
| @@ -1032,8 +1021,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 1032 | s->session->ciphers = ciphers; | 1021 | s->session->ciphers = ciphers; |
| 1033 | if (ciphers == NULL) { | 1022 | if (ciphers == NULL) { |
| 1034 | al = SSL_AD_ILLEGAL_PARAMETER; | 1023 | al = SSL_AD_ILLEGAL_PARAMETER; |
| 1035 | SSLerror( | 1024 | SSLerror(SSL_R_NO_CIPHERS_PASSED); |
| 1036 | SSL_R_NO_CIPHERS_PASSED); | ||
| 1037 | goto f_err; | 1025 | goto f_err; |
| 1038 | } | 1026 | } |
| 1039 | ciphers = NULL; | 1027 | ciphers = NULL; |
| @@ -1042,8 +1030,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 1042 | 1030 | ||
| 1043 | if (c == NULL) { | 1031 | if (c == NULL) { |
| 1044 | al = SSL_AD_HANDSHAKE_FAILURE; | 1032 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 1045 | SSLerror( | 1033 | SSLerror(SSL_R_NO_SHARED_CIPHER); |
| 1046 | SSL_R_NO_SHARED_CIPHER); | ||
| 1047 | goto f_err; | 1034 | goto f_err; |
| 1048 | } | 1035 | } |
| 1049 | S3I(s)->tmp.new_cipher = c; | 1036 | S3I(s)->tmp.new_cipher = c; |
| @@ -1142,8 +1129,7 @@ ssl3_send_server_hello(SSL *s) | |||
| 1142 | 1129 | ||
| 1143 | sl = s->session->session_id_length; | 1130 | sl = s->session->session_id_length; |
| 1144 | if (sl > (int)sizeof(s->session->session_id)) { | 1131 | if (sl > (int)sizeof(s->session->session_id)) { |
| 1145 | SSLerror( | 1132 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 1146 | ERR_R_INTERNAL_ERROR); | ||
| 1147 | goto err; | 1133 | goto err; |
| 1148 | } | 1134 | } |
| 1149 | 1135 | ||
| @@ -1166,8 +1152,7 @@ ssl3_send_server_hello(SSL *s) | |||
| 1166 | 1152 | ||
| 1167 | if ((p = ssl_add_serverhello_tlsext(s, p + outlen, | 1153 | if ((p = ssl_add_serverhello_tlsext(s, p + outlen, |
| 1168 | bufend)) == NULL) { | 1154 | bufend)) == NULL) { |
| 1169 | SSLerror( | 1155 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 1170 | ERR_R_INTERNAL_ERROR); | ||
| 1171 | goto err; | 1156 | goto err; |
| 1172 | } | 1157 | } |
| 1173 | 1158 | ||
| @@ -1208,8 +1193,7 @@ ssl3_send_server_kex_dhe(SSL *s, CBB *cbb) | |||
| 1208 | if (s->cert->dh_tmp_auto != 0) { | 1193 | if (s->cert->dh_tmp_auto != 0) { |
| 1209 | if ((dhp = ssl_get_auto_dh(s)) == NULL) { | 1194 | if ((dhp = ssl_get_auto_dh(s)) == NULL) { |
| 1210 | al = SSL_AD_INTERNAL_ERROR; | 1195 | al = SSL_AD_INTERNAL_ERROR; |
| 1211 | SSLerror( | 1196 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 1212 | ERR_R_INTERNAL_ERROR); | ||
| 1213 | goto f_err; | 1197 | goto f_err; |
| 1214 | } | 1198 | } |
| 1215 | } else | 1199 | } else |
| @@ -1221,14 +1205,12 @@ ssl3_send_server_kex_dhe(SSL *s, CBB *cbb) | |||
| 1221 | 1205 | ||
| 1222 | if (dhp == NULL) { | 1206 | if (dhp == NULL) { |
| 1223 | al = SSL_AD_HANDSHAKE_FAILURE; | 1207 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 1224 | SSLerror( | 1208 | SSLerror(SSL_R_MISSING_TMP_DH_KEY); |
| 1225 | SSL_R_MISSING_TMP_DH_KEY); | ||
| 1226 | goto f_err; | 1209 | goto f_err; |
| 1227 | } | 1210 | } |
| 1228 | 1211 | ||
| 1229 | if (S3I(s)->tmp.dh != NULL) { | 1212 | if (S3I(s)->tmp.dh != NULL) { |
| 1230 | SSLerror( | 1213 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 1231 | ERR_R_INTERNAL_ERROR); | ||
| 1232 | goto err; | 1214 | goto err; |
| 1233 | } | 1215 | } |
| 1234 | 1216 | ||
| @@ -1299,14 +1281,12 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1299 | } | 1281 | } |
| 1300 | if (ecdhp == NULL) { | 1282 | if (ecdhp == NULL) { |
| 1301 | al = SSL_AD_HANDSHAKE_FAILURE; | 1283 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 1302 | SSLerror( | 1284 | SSLerror(SSL_R_MISSING_TMP_ECDH_KEY); |
| 1303 | SSL_R_MISSING_TMP_ECDH_KEY); | ||
| 1304 | goto f_err; | 1285 | goto f_err; |
| 1305 | } | 1286 | } |
| 1306 | 1287 | ||
| 1307 | if (S3I(s)->tmp.ecdh != NULL) { | 1288 | if (S3I(s)->tmp.ecdh != NULL) { |
| 1308 | SSLerror( | 1289 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 1309 | ERR_R_INTERNAL_ERROR); | ||
| 1310 | goto err; | 1290 | goto err; |
| 1311 | } | 1291 | } |
| 1312 | 1292 | ||
| @@ -1314,8 +1294,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1314 | if (s->cert->ecdh_tmp_auto != 0) { | 1294 | if (s->cert->ecdh_tmp_auto != 0) { |
| 1315 | ecdh = ecdhp; | 1295 | ecdh = ecdhp; |
| 1316 | } else if ((ecdh = EC_KEY_dup(ecdhp)) == NULL) { | 1296 | } else if ((ecdh = EC_KEY_dup(ecdhp)) == NULL) { |
| 1317 | SSLerror( | 1297 | SSLerror(ERR_R_ECDH_LIB); |
| 1318 | ERR_R_ECDH_LIB); | ||
| 1319 | goto err; | 1298 | goto err; |
| 1320 | } | 1299 | } |
| 1321 | S3I(s)->tmp.ecdh = ecdh; | 1300 | S3I(s)->tmp.ecdh = ecdh; |
| @@ -1324,8 +1303,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1324 | (EC_KEY_get0_private_key(ecdh) == NULL) || | 1303 | (EC_KEY_get0_private_key(ecdh) == NULL) || |
| 1325 | (s->internal->options & SSL_OP_SINGLE_ECDH_USE)) { | 1304 | (s->internal->options & SSL_OP_SINGLE_ECDH_USE)) { |
| 1326 | if (!EC_KEY_generate_key(ecdh)) { | 1305 | if (!EC_KEY_generate_key(ecdh)) { |
| 1327 | SSLerror( | 1306 | SSLerror(ERR_R_ECDH_LIB); |
| 1328 | ERR_R_ECDH_LIB); | ||
| 1329 | goto err; | 1307 | goto err; |
| 1330 | } | 1308 | } |
| 1331 | } | 1309 | } |
| @@ -1333,8 +1311,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1333 | if (((group = EC_KEY_get0_group(ecdh)) == NULL) || | 1311 | if (((group = EC_KEY_get0_group(ecdh)) == NULL) || |
| 1334 | (EC_KEY_get0_public_key(ecdh) == NULL) || | 1312 | (EC_KEY_get0_public_key(ecdh) == NULL) || |
| 1335 | (EC_KEY_get0_private_key(ecdh) == NULL)) { | 1313 | (EC_KEY_get0_private_key(ecdh) == NULL)) { |
| 1336 | SSLerror( | 1314 | SSLerror(ERR_R_ECDH_LIB); |
| 1337 | ERR_R_ECDH_LIB); | ||
| 1338 | goto err; | 1315 | goto err; |
| 1339 | } | 1316 | } |
| 1340 | 1317 | ||
| @@ -1344,8 +1321,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1344 | */ | 1321 | */ |
| 1345 | if ((curve_id = tls1_ec_nid2curve_id( | 1322 | if ((curve_id = tls1_ec_nid2curve_id( |
| 1346 | EC_GROUP_get_curve_name(group))) == 0) { | 1323 | EC_GROUP_get_curve_name(group))) == 0) { |
| 1347 | SSLerror( | 1324 | SSLerror(SSL_R_UNSUPPORTED_ELLIPTIC_CURVE); |
| 1348 | SSL_R_UNSUPPORTED_ELLIPTIC_CURVE); | ||
| 1349 | goto err; | 1325 | goto err; |
| 1350 | } | 1326 | } |
| 1351 | 1327 | ||
| @@ -1360,8 +1336,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1360 | 1336 | ||
| 1361 | bn_ctx = BN_CTX_new(); | 1337 | bn_ctx = BN_CTX_new(); |
| 1362 | if ((encodedPoint == NULL) || (bn_ctx == NULL)) { | 1338 | if ((encodedPoint == NULL) || (bn_ctx == NULL)) { |
| 1363 | SSLerror( | 1339 | SSLerror(ERR_R_MALLOC_FAILURE); |
| 1364 | ERR_R_MALLOC_FAILURE); | ||
| 1365 | goto err; | 1340 | goto err; |
| 1366 | } | 1341 | } |
| 1367 | 1342 | ||
| @@ -1421,8 +1396,7 @@ ssl3_send_server_kex_ecdhe_ecx(SSL *s, int nid, CBB *cbb) | |||
| 1421 | 1396 | ||
| 1422 | /* Generate an X25519 key pair. */ | 1397 | /* Generate an X25519 key pair. */ |
| 1423 | if (S3I(s)->tmp.x25519 != NULL) { | 1398 | if (S3I(s)->tmp.x25519 != NULL) { |
| 1424 | SSLerror( | 1399 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 1425 | ERR_R_INTERNAL_ERROR); | ||
| 1426 | goto err; | 1400 | goto err; |
| 1427 | } | 1401 | } |
| 1428 | if ((S3I(s)->tmp.x25519 = malloc(X25519_KEY_LENGTH)) == NULL) | 1402 | if ((S3I(s)->tmp.x25519 = malloc(X25519_KEY_LENGTH)) == NULL) |
| @@ -1433,8 +1407,7 @@ ssl3_send_server_kex_ecdhe_ecx(SSL *s, int nid, CBB *cbb) | |||
| 1433 | 1407 | ||
| 1434 | /* Serialize public key. */ | 1408 | /* Serialize public key. */ |
| 1435 | if ((curve_id = tls1_ec_nid2curve_id(nid)) == 0) { | 1409 | if ((curve_id = tls1_ec_nid2curve_id(nid)) == 0) { |
| 1436 | SSLerror( | 1410 | SSLerror(SSL_R_UNSUPPORTED_ELLIPTIC_CURVE); |
| 1437 | SSL_R_UNSUPPORTED_ELLIPTIC_CURVE); | ||
| 1438 | goto err; | 1411 | goto err; |
| 1439 | } | 1412 | } |
| 1440 | 1413 | ||
| @@ -1509,8 +1482,7 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1509 | goto err; | 1482 | goto err; |
| 1510 | } else { | 1483 | } else { |
| 1511 | al = SSL_AD_HANDSHAKE_FAILURE; | 1484 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 1512 | SSLerror( | 1485 | SSLerror(SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); |
| 1513 | SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); | ||
| 1514 | goto f_err; | 1486 | goto f_err; |
| 1515 | } | 1487 | } |
| 1516 | 1488 | ||
| @@ -1531,8 +1503,7 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1531 | 1503 | ||
| 1532 | if (!BUF_MEM_grow_clean(buf, ssl3_handshake_msg_hdr_len(s) + | 1504 | if (!BUF_MEM_grow_clean(buf, ssl3_handshake_msg_hdr_len(s) + |
| 1533 | params_len + kn)) { | 1505 | params_len + kn)) { |
| 1534 | SSLerror( | 1506 | SSLerror(ERR_LIB_BUF); |
| 1535 | ERR_LIB_BUF); | ||
| 1536 | goto err; | 1507 | goto err; |
| 1537 | } | 1508 | } |
| 1538 | 1509 | ||
| @@ -1611,8 +1582,7 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1611 | } else { | 1582 | } else { |
| 1612 | /* Is this error check actually needed? */ | 1583 | /* Is this error check actually needed? */ |
| 1613 | al = SSL_AD_HANDSHAKE_FAILURE; | 1584 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 1614 | SSLerror( | 1585 | SSLerror(SSL_R_UNKNOWN_PKEY_TYPE); |
| 1615 | SSL_R_UNKNOWN_PKEY_TYPE); | ||
| 1616 | goto f_err; | 1586 | goto f_err; |
| 1617 | } | 1587 | } |
| 1618 | } | 1588 | } |
| @@ -1724,8 +1694,7 @@ ssl3_get_client_kex_rsa(SSL *s, unsigned char *p, long n) | |||
| 1724 | if ((pkey == NULL) || (pkey->type != EVP_PKEY_RSA) || | 1694 | if ((pkey == NULL) || (pkey->type != EVP_PKEY_RSA) || |
| 1725 | (pkey->pkey.rsa == NULL)) { | 1695 | (pkey->pkey.rsa == NULL)) { |
| 1726 | al = SSL_AD_HANDSHAKE_FAILURE; | 1696 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 1727 | SSLerror( | 1697 | SSLerror(SSL_R_MISSING_RSA_CERTIFICATE); |
| 1728 | SSL_R_MISSING_RSA_CERTIFICATE); | ||
| 1729 | goto f_err; | 1698 | goto f_err; |
| 1730 | } | 1699 | } |
| 1731 | rsa = pkey->pkey.rsa; | 1700 | rsa = pkey->pkey.rsa; |
| @@ -1734,8 +1703,7 @@ ssl3_get_client_kex_rsa(SSL *s, unsigned char *p, long n) | |||
| 1734 | goto truncated; | 1703 | goto truncated; |
| 1735 | n2s(p, i); | 1704 | n2s(p, i); |
| 1736 | if (n != i + 2) { | 1705 | if (n != i + 2) { |
| 1737 | SSLerror( | 1706 | SSLerror(SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG); |
| 1738 | SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG); | ||
| 1739 | goto err; | 1707 | goto err; |
| 1740 | } else | 1708 | } else |
| 1741 | n = i; | 1709 | n = i; |
| @@ -1836,15 +1804,13 @@ ssl3_get_client_kex_dhe(SSL *s, unsigned char *p, long n) | |||
| 1836 | 1804 | ||
| 1837 | if (S3I(s)->tmp.dh == NULL) { | 1805 | if (S3I(s)->tmp.dh == NULL) { |
| 1838 | al = SSL_AD_HANDSHAKE_FAILURE; | 1806 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 1839 | SSLerror( | 1807 | SSLerror(SSL_R_MISSING_TMP_DH_KEY); |
| 1840 | SSL_R_MISSING_TMP_DH_KEY); | ||
| 1841 | goto f_err; | 1808 | goto f_err; |
| 1842 | } | 1809 | } |
| 1843 | dh = S3I(s)->tmp.dh; | 1810 | dh = S3I(s)->tmp.dh; |
| 1844 | 1811 | ||
| 1845 | if ((bn = BN_bin2bn(CBS_data(&dh_Yc), CBS_len(&dh_Yc), NULL)) == NULL) { | 1812 | if ((bn = BN_bin2bn(CBS_data(&dh_Yc), CBS_len(&dh_Yc), NULL)) == NULL) { |
| 1846 | SSLerror( | 1813 | SSLerror(SSL_R_BN_LIB); |
| 1847 | SSL_R_BN_LIB); | ||
| 1848 | goto err; | 1814 | goto err; |
| 1849 | } | 1815 | } |
| 1850 | 1816 | ||
| @@ -1894,8 +1860,7 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1894 | 1860 | ||
| 1895 | /* Initialize structures for server's ECDH key pair. */ | 1861 | /* Initialize structures for server's ECDH key pair. */ |
| 1896 | if ((srvr_ecdh = EC_KEY_new()) == NULL) { | 1862 | if ((srvr_ecdh = EC_KEY_new()) == NULL) { |
| 1897 | SSLerror( | 1863 | SSLerror(ERR_R_MALLOC_FAILURE); |
| 1898 | ERR_R_MALLOC_FAILURE); | ||
| 1899 | goto err; | 1864 | goto err; |
| 1900 | } | 1865 | } |
| 1901 | 1866 | ||
| @@ -1910,15 +1875,13 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1910 | 1875 | ||
| 1911 | if (!EC_KEY_set_group(srvr_ecdh, group) || | 1876 | if (!EC_KEY_set_group(srvr_ecdh, group) || |
| 1912 | !EC_KEY_set_private_key(srvr_ecdh, priv_key)) { | 1877 | !EC_KEY_set_private_key(srvr_ecdh, priv_key)) { |
| 1913 | SSLerror( | 1878 | SSLerror(ERR_R_EC_LIB); |
| 1914 | ERR_R_EC_LIB); | ||
| 1915 | goto err; | 1879 | goto err; |
| 1916 | } | 1880 | } |
| 1917 | 1881 | ||
| 1918 | /* Let's get client's public key */ | 1882 | /* Let's get client's public key */ |
| 1919 | if ((clnt_ecpoint = EC_POINT_new(group)) == NULL) { | 1883 | if ((clnt_ecpoint = EC_POINT_new(group)) == NULL) { |
| 1920 | SSLerror( | 1884 | SSLerror(ERR_R_MALLOC_FAILURE); |
| 1921 | ERR_R_MALLOC_FAILURE); | ||
| 1922 | goto err; | 1885 | goto err; |
| 1923 | } | 1886 | } |
| 1924 | 1887 | ||
| @@ -1940,16 +1903,14 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1940 | * group. | 1903 | * group. |
| 1941 | */ | 1904 | */ |
| 1942 | al = SSL_AD_HANDSHAKE_FAILURE; | 1905 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 1943 | SSLerror( | 1906 | SSLerror(SSL_R_UNABLE_TO_DECODE_ECDH_CERTS); |
| 1944 | SSL_R_UNABLE_TO_DECODE_ECDH_CERTS); | ||
| 1945 | goto f_err; | 1907 | goto f_err; |
| 1946 | } | 1908 | } |
| 1947 | 1909 | ||
| 1948 | if (EC_POINT_copy(clnt_ecpoint, | 1910 | if (EC_POINT_copy(clnt_ecpoint, |
| 1949 | EC_KEY_get0_public_key(clnt_pub_pkey->pkey.ec)) | 1911 | EC_KEY_get0_public_key(clnt_pub_pkey->pkey.ec)) |
| 1950 | == 0) { | 1912 | == 0) { |
| 1951 | SSLerror( | 1913 | SSLerror(ERR_R_EC_LIB); |
| 1952 | ERR_R_EC_LIB); | ||
| 1953 | goto err; | 1914 | goto err; |
| 1954 | } | 1915 | } |
| 1955 | ret = 2; /* Skip certificate verify processing */ | 1916 | ret = 2; /* Skip certificate verify processing */ |
| @@ -1959,8 +1920,7 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1959 | * in the ClientKeyExchange message. | 1920 | * in the ClientKeyExchange message. |
| 1960 | */ | 1921 | */ |
| 1961 | if ((bn_ctx = BN_CTX_new()) == NULL) { | 1922 | if ((bn_ctx = BN_CTX_new()) == NULL) { |
| 1962 | SSLerror( | 1923 | SSLerror(ERR_R_MALLOC_FAILURE); |
| 1963 | ERR_R_MALLOC_FAILURE); | ||
| 1964 | goto err; | 1924 | goto err; |
| 1965 | } | 1925 | } |
| 1966 | 1926 | ||
| @@ -1969,14 +1929,12 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1969 | 1929 | ||
| 1970 | p += 1; | 1930 | p += 1; |
| 1971 | if (n != 1 + i) { | 1931 | if (n != 1 + i) { |
| 1972 | SSLerror( | 1932 | SSLerror(ERR_R_EC_LIB); |
| 1973 | ERR_R_EC_LIB); | ||
| 1974 | goto err; | 1933 | goto err; |
| 1975 | } | 1934 | } |
| 1976 | if (EC_POINT_oct2point(group, | 1935 | if (EC_POINT_oct2point(group, |
| 1977 | clnt_ecpoint, p, i, bn_ctx) == 0) { | 1936 | clnt_ecpoint, p, i, bn_ctx) == 0) { |
| 1978 | SSLerror( | 1937 | SSLerror(ERR_R_EC_LIB); |
| 1979 | ERR_R_EC_LIB); | ||
| 1980 | goto err; | 1938 | goto err; |
| 1981 | } | 1939 | } |
| 1982 | /* | 1940 | /* |
| @@ -1989,15 +1947,13 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1989 | /* Compute the shared pre-master secret */ | 1947 | /* Compute the shared pre-master secret */ |
| 1990 | key_size = ECDH_size(srvr_ecdh); | 1948 | key_size = ECDH_size(srvr_ecdh); |
| 1991 | if (key_size <= 0) { | 1949 | if (key_size <= 0) { |
| 1992 | SSLerror( | 1950 | SSLerror(ERR_R_ECDH_LIB); |
| 1993 | ERR_R_ECDH_LIB); | ||
| 1994 | goto err; | 1951 | goto err; |
| 1995 | } | 1952 | } |
| 1996 | i = ECDH_compute_key(p, key_size, clnt_ecpoint, srvr_ecdh, | 1953 | i = ECDH_compute_key(p, key_size, clnt_ecpoint, srvr_ecdh, |
| 1997 | NULL); | 1954 | NULL); |
| 1998 | if (i <= 0) { | 1955 | if (i <= 0) { |
| 1999 | SSLerror( | 1956 | SSLerror(ERR_R_ECDH_LIB); |
| 2000 | ERR_R_ECDH_LIB); | ||
| 2001 | goto err; | 1957 | goto err; |
| 2002 | } | 1958 | } |
| 2003 | 1959 | ||
| @@ -2114,16 +2070,14 @@ ssl3_get_client_kex_gost(SSL *s, unsigned char *p, long n) | |||
| 2114 | if (ASN1_get_object((const unsigned char **)&p, &Tlen, &Ttag, | 2070 | if (ASN1_get_object((const unsigned char **)&p, &Tlen, &Ttag, |
| 2115 | &Tclass, n) != V_ASN1_CONSTRUCTED || | 2071 | &Tclass, n) != V_ASN1_CONSTRUCTED || |
| 2116 | Ttag != V_ASN1_SEQUENCE || Tclass != V_ASN1_UNIVERSAL) { | 2072 | Ttag != V_ASN1_SEQUENCE || Tclass != V_ASN1_UNIVERSAL) { |
| 2117 | SSLerror( | 2073 | SSLerror(SSL_R_DECRYPTION_FAILED); |
| 2118 | SSL_R_DECRYPTION_FAILED); | ||
| 2119 | goto gerr; | 2074 | goto gerr; |
| 2120 | } | 2075 | } |
| 2121 | start = p; | 2076 | start = p; |
| 2122 | inlen = Tlen; | 2077 | inlen = Tlen; |
| 2123 | if (EVP_PKEY_decrypt(pkey_ctx, premaster_secret, &outlen, | 2078 | if (EVP_PKEY_decrypt(pkey_ctx, premaster_secret, &outlen, |
| 2124 | start, inlen) <=0) { | 2079 | start, inlen) <=0) { |
| 2125 | SSLerror( | 2080 | SSLerror(SSL_R_DECRYPTION_FAILED); |
| 2126 | SSL_R_DECRYPTION_FAILED); | ||
| 2127 | goto gerr; | 2081 | goto gerr; |
| 2128 | } | 2082 | } |
| 2129 | /* Generate master secret */ | 2083 | /* Generate master secret */ |
| @@ -2184,8 +2138,7 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2184 | goto err; | 2138 | goto err; |
| 2185 | } else { | 2139 | } else { |
| 2186 | al = SSL_AD_HANDSHAKE_FAILURE; | 2140 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 2187 | SSLerror( | 2141 | SSLerror(SSL_R_UNKNOWN_CIPHER_TYPE); |
| 2188 | SSL_R_UNKNOWN_CIPHER_TYPE); | ||
| 2189 | goto f_err; | 2142 | goto f_err; |
| 2190 | } | 2143 | } |
| 2191 | 2144 | ||
| @@ -2228,8 +2181,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2228 | S3I(s)->tmp.reuse_message = 1; | 2181 | S3I(s)->tmp.reuse_message = 1; |
| 2229 | if (peer != NULL) { | 2182 | if (peer != NULL) { |
| 2230 | al = SSL_AD_UNEXPECTED_MESSAGE; | 2183 | al = SSL_AD_UNEXPECTED_MESSAGE; |
| 2231 | SSLerror( | 2184 | SSLerror(SSL_R_MISSING_VERIFY_MESSAGE); |
| 2232 | SSL_R_MISSING_VERIFY_MESSAGE); | ||
| 2233 | goto f_err; | 2185 | goto f_err; |
| 2234 | } | 2186 | } |
| 2235 | ret = 1; | 2187 | ret = 1; |
| @@ -2237,22 +2189,19 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2237 | } | 2189 | } |
| 2238 | 2190 | ||
| 2239 | if (peer == NULL) { | 2191 | if (peer == NULL) { |
| 2240 | SSLerror( | 2192 | SSLerror(SSL_R_NO_CLIENT_CERT_RECEIVED); |
| 2241 | SSL_R_NO_CLIENT_CERT_RECEIVED); | ||
| 2242 | al = SSL_AD_UNEXPECTED_MESSAGE; | 2193 | al = SSL_AD_UNEXPECTED_MESSAGE; |
| 2243 | goto f_err; | 2194 | goto f_err; |
| 2244 | } | 2195 | } |
| 2245 | 2196 | ||
| 2246 | if (!(type & EVP_PKT_SIGN)) { | 2197 | if (!(type & EVP_PKT_SIGN)) { |
| 2247 | SSLerror( | 2198 | SSLerror(SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE); |
| 2248 | SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE); | ||
| 2249 | al = SSL_AD_ILLEGAL_PARAMETER; | 2199 | al = SSL_AD_ILLEGAL_PARAMETER; |
| 2250 | goto f_err; | 2200 | goto f_err; |
| 2251 | } | 2201 | } |
| 2252 | 2202 | ||
| 2253 | if (S3I(s)->change_cipher_spec) { | 2203 | if (S3I(s)->change_cipher_spec) { |
| 2254 | SSLerror( | 2204 | SSLerror(SSL_R_CCS_RECEIVED_EARLY); |
| 2255 | SSL_R_CCS_RECEIVED_EARLY); | ||
| 2256 | al = SSL_AD_UNEXPECTED_MESSAGE; | 2205 | al = SSL_AD_UNEXPECTED_MESSAGE; |
| 2257 | goto f_err; | 2206 | goto f_err; |
| 2258 | } | 2207 | } |
| @@ -2273,8 +2222,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2273 | int sigalg = tls12_get_sigid(pkey); | 2222 | int sigalg = tls12_get_sigid(pkey); |
| 2274 | /* Should never happen */ | 2223 | /* Should never happen */ |
| 2275 | if (sigalg == -1) { | 2224 | if (sigalg == -1) { |
| 2276 | SSLerror( | 2225 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 2277 | ERR_R_INTERNAL_ERROR); | ||
| 2278 | al = SSL_AD_INTERNAL_ERROR; | 2226 | al = SSL_AD_INTERNAL_ERROR; |
| 2279 | goto f_err; | 2227 | goto f_err; |
| 2280 | } | 2228 | } |
| @@ -2282,15 +2230,13 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2282 | goto truncated; | 2230 | goto truncated; |
| 2283 | /* Check key type is consistent with signature */ | 2231 | /* Check key type is consistent with signature */ |
| 2284 | if (sigalg != (int)p[1]) { | 2232 | if (sigalg != (int)p[1]) { |
| 2285 | SSLerror( | 2233 | SSLerror(SSL_R_WRONG_SIGNATURE_TYPE); |
| 2286 | SSL_R_WRONG_SIGNATURE_TYPE); | ||
| 2287 | al = SSL_AD_DECODE_ERROR; | 2234 | al = SSL_AD_DECODE_ERROR; |
| 2288 | goto f_err; | 2235 | goto f_err; |
| 2289 | } | 2236 | } |
| 2290 | md = tls12_get_hash(p[0]); | 2237 | md = tls12_get_hash(p[0]); |
| 2291 | if (md == NULL) { | 2238 | if (md == NULL) { |
| 2292 | SSLerror( | 2239 | SSLerror(SSL_R_UNKNOWN_DIGEST); |
| 2293 | SSL_R_UNKNOWN_DIGEST); | ||
| 2294 | al = SSL_AD_DECODE_ERROR; | 2240 | al = SSL_AD_DECODE_ERROR; |
| 2295 | goto f_err; | 2241 | goto f_err; |
| 2296 | } | 2242 | } |
| @@ -2306,8 +2252,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2306 | } | 2252 | } |
| 2307 | j = EVP_PKEY_size(pkey); | 2253 | j = EVP_PKEY_size(pkey); |
| 2308 | if ((i > j) || (n > j) || (n <= 0)) { | 2254 | if ((i > j) || (n > j) || (n <= 0)) { |
| 2309 | SSLerror( | 2255 | SSLerror(SSL_R_WRONG_SIGNATURE_SIZE); |
| 2310 | SSL_R_WRONG_SIGNATURE_SIZE); | ||
| 2311 | al = SSL_AD_DECODE_ERROR; | 2256 | al = SSL_AD_DECODE_ERROR; |
| 2312 | goto f_err; | 2257 | goto f_err; |
| 2313 | } | 2258 | } |
| @@ -2317,23 +2262,20 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2317 | void *hdata; | 2262 | void *hdata; |
| 2318 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); | 2263 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); |
| 2319 | if (hdatalen <= 0) { | 2264 | if (hdatalen <= 0) { |
| 2320 | SSLerror( | 2265 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 2321 | ERR_R_INTERNAL_ERROR); | ||
| 2322 | al = SSL_AD_INTERNAL_ERROR; | 2266 | al = SSL_AD_INTERNAL_ERROR; |
| 2323 | goto f_err; | 2267 | goto f_err; |
| 2324 | } | 2268 | } |
| 2325 | if (!EVP_VerifyInit_ex(&mctx, md, NULL) || | 2269 | if (!EVP_VerifyInit_ex(&mctx, md, NULL) || |
| 2326 | !EVP_VerifyUpdate(&mctx, hdata, hdatalen)) { | 2270 | !EVP_VerifyUpdate(&mctx, hdata, hdatalen)) { |
| 2327 | SSLerror( | 2271 | SSLerror(ERR_R_EVP_LIB); |
| 2328 | ERR_R_EVP_LIB); | ||
| 2329 | al = SSL_AD_INTERNAL_ERROR; | 2272 | al = SSL_AD_INTERNAL_ERROR; |
| 2330 | goto f_err; | 2273 | goto f_err; |
| 2331 | } | 2274 | } |
| 2332 | 2275 | ||
| 2333 | if (EVP_VerifyFinal(&mctx, p, i, pkey) <= 0) { | 2276 | if (EVP_VerifyFinal(&mctx, p, i, pkey) <= 0) { |
| 2334 | al = SSL_AD_DECRYPT_ERROR; | 2277 | al = SSL_AD_DECRYPT_ERROR; |
| 2335 | SSLerror( | 2278 | SSLerror(SSL_R_BAD_SIGNATURE); |
| 2336 | SSL_R_BAD_SIGNATURE); | ||
| 2337 | goto f_err; | 2279 | goto f_err; |
| 2338 | } | 2280 | } |
| 2339 | } else | 2281 | } else |
| @@ -2343,14 +2285,12 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2343 | pkey->pkey.rsa); | 2285 | pkey->pkey.rsa); |
| 2344 | if (i < 0) { | 2286 | if (i < 0) { |
| 2345 | al = SSL_AD_DECRYPT_ERROR; | 2287 | al = SSL_AD_DECRYPT_ERROR; |
| 2346 | SSLerror( | 2288 | SSLerror(SSL_R_BAD_RSA_DECRYPT); |
| 2347 | SSL_R_BAD_RSA_DECRYPT); | ||
| 2348 | goto f_err; | 2289 | goto f_err; |
| 2349 | } | 2290 | } |
| 2350 | if (i == 0) { | 2291 | if (i == 0) { |
| 2351 | al = SSL_AD_DECRYPT_ERROR; | 2292 | al = SSL_AD_DECRYPT_ERROR; |
| 2352 | SSLerror( | 2293 | SSLerror(SSL_R_BAD_RSA_SIGNATURE); |
| 2353 | SSL_R_BAD_RSA_SIGNATURE); | ||
| 2354 | goto f_err; | 2294 | goto f_err; |
| 2355 | } | 2295 | } |
| 2356 | } else | 2296 | } else |
| @@ -2361,8 +2301,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2361 | if (j <= 0) { | 2301 | if (j <= 0) { |
| 2362 | /* bad signature */ | 2302 | /* bad signature */ |
| 2363 | al = SSL_AD_DECRYPT_ERROR; | 2303 | al = SSL_AD_DECRYPT_ERROR; |
| 2364 | SSLerror( | 2304 | SSLerror(SSL_R_BAD_DSA_SIGNATURE); |
| 2365 | SSL_R_BAD_DSA_SIGNATURE); | ||
| 2366 | goto f_err; | 2305 | goto f_err; |
| 2367 | } | 2306 | } |
| 2368 | } else | 2307 | } else |
| @@ -2373,8 +2312,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2373 | if (j <= 0) { | 2312 | if (j <= 0) { |
| 2374 | /* bad signature */ | 2313 | /* bad signature */ |
| 2375 | al = SSL_AD_DECRYPT_ERROR; | 2314 | al = SSL_AD_DECRYPT_ERROR; |
| 2376 | SSLerror( | 2315 | SSLerror(SSL_R_BAD_ECDSA_SIGNATURE); |
| 2377 | SSL_R_BAD_ECDSA_SIGNATURE); | ||
| 2378 | goto f_err; | 2316 | goto f_err; |
| 2379 | } | 2317 | } |
| 2380 | } else | 2318 | } else |
| @@ -2390,22 +2328,19 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2390 | 2328 | ||
| 2391 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); | 2329 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); |
| 2392 | if (hdatalen <= 0) { | 2330 | if (hdatalen <= 0) { |
| 2393 | SSLerror( | 2331 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 2394 | ERR_R_INTERNAL_ERROR); | ||
| 2395 | al = SSL_AD_INTERNAL_ERROR; | 2332 | al = SSL_AD_INTERNAL_ERROR; |
| 2396 | goto f_err; | 2333 | goto f_err; |
| 2397 | } | 2334 | } |
| 2398 | if (!EVP_PKEY_get_default_digest_nid(pkey, &nid) || | 2335 | if (!EVP_PKEY_get_default_digest_nid(pkey, &nid) || |
| 2399 | !(md = EVP_get_digestbynid(nid))) { | 2336 | !(md = EVP_get_digestbynid(nid))) { |
| 2400 | SSLerror( | 2337 | SSLerror(ERR_R_EVP_LIB); |
| 2401 | ERR_R_EVP_LIB); | ||
| 2402 | al = SSL_AD_INTERNAL_ERROR; | 2338 | al = SSL_AD_INTERNAL_ERROR; |
| 2403 | goto f_err; | 2339 | goto f_err; |
| 2404 | } | 2340 | } |
| 2405 | pctx = EVP_PKEY_CTX_new(pkey, NULL); | 2341 | pctx = EVP_PKEY_CTX_new(pkey, NULL); |
| 2406 | if (!pctx) { | 2342 | if (!pctx) { |
| 2407 | SSLerror( | 2343 | SSLerror(ERR_R_EVP_LIB); |
| 2408 | ERR_R_EVP_LIB); | ||
| 2409 | al = SSL_AD_INTERNAL_ERROR; | 2344 | al = SSL_AD_INTERNAL_ERROR; |
| 2410 | goto f_err; | 2345 | goto f_err; |
| 2411 | } | 2346 | } |
| @@ -2418,8 +2353,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2418 | EVP_PKEY_CTRL_GOST_SIG_FORMAT, | 2353 | EVP_PKEY_CTRL_GOST_SIG_FORMAT, |
| 2419 | GOST_SIG_FORMAT_RS_LE, | 2354 | GOST_SIG_FORMAT_RS_LE, |
| 2420 | NULL) <= 0)) { | 2355 | NULL) <= 0)) { |
| 2421 | SSLerror( | 2356 | SSLerror(ERR_R_EVP_LIB); |
| 2422 | ERR_R_EVP_LIB); | ||
| 2423 | al = SSL_AD_INTERNAL_ERROR; | 2357 | al = SSL_AD_INTERNAL_ERROR; |
| 2424 | EVP_PKEY_CTX_free(pctx); | 2358 | EVP_PKEY_CTX_free(pctx); |
| 2425 | goto f_err; | 2359 | goto f_err; |
| @@ -2427,8 +2361,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2427 | 2361 | ||
| 2428 | if (EVP_PKEY_verify(pctx, p, i, signature, siglen) <= 0) { | 2362 | if (EVP_PKEY_verify(pctx, p, i, signature, siglen) <= 0) { |
| 2429 | al = SSL_AD_DECRYPT_ERROR; | 2363 | al = SSL_AD_DECRYPT_ERROR; |
| 2430 | SSLerror( | 2364 | SSLerror(SSL_R_BAD_SIGNATURE); |
| 2431 | SSL_R_BAD_SIGNATURE); | ||
| 2432 | EVP_PKEY_CTX_free(pctx); | 2365 | EVP_PKEY_CTX_free(pctx); |
| 2433 | goto f_err; | 2366 | goto f_err; |
| 2434 | } | 2367 | } |
| @@ -2437,8 +2370,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2437 | } else | 2370 | } else |
| 2438 | #endif | 2371 | #endif |
| 2439 | { | 2372 | { |
| 2440 | SSLerror( | 2373 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 2441 | ERR_R_INTERNAL_ERROR); | ||
| 2442 | al = SSL_AD_UNSUPPORTED_CERTIFICATE; | 2374 | al = SSL_AD_UNSUPPORTED_CERTIFICATE; |
| 2443 | goto f_err; | 2375 | goto f_err; |
| 2444 | } | 2376 | } |
| @@ -2482,8 +2414,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2482 | if (S3I(s)->tmp.message_type == SSL3_MT_CLIENT_KEY_EXCHANGE) { | 2414 | if (S3I(s)->tmp.message_type == SSL3_MT_CLIENT_KEY_EXCHANGE) { |
| 2483 | if ((s->verify_mode & SSL_VERIFY_PEER) && | 2415 | if ((s->verify_mode & SSL_VERIFY_PEER) && |
| 2484 | (s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) { | 2416 | (s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) { |
| 2485 | SSLerror( | 2417 | SSLerror(SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE); |
| 2486 | SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE); | ||
| 2487 | al = SSL_AD_HANDSHAKE_FAILURE; | 2418 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 2488 | goto f_err; | 2419 | goto f_err; |
| 2489 | } | 2420 | } |
| @@ -2492,8 +2423,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2492 | * the client must return a 0 list. | 2423 | * the client must return a 0 list. |
| 2493 | */ | 2424 | */ |
| 2494 | if (S3I(s)->tmp.cert_request) { | 2425 | if (S3I(s)->tmp.cert_request) { |
| 2495 | SSLerror( | 2426 | SSLerror(SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST |
| 2496 | SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST | ||
| 2497 | ); | 2427 | ); |
| 2498 | al = SSL_AD_UNEXPECTED_MESSAGE; | 2428 | al = SSL_AD_UNEXPECTED_MESSAGE; |
| 2499 | goto f_err; | 2429 | goto f_err; |
| @@ -2504,8 +2434,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2504 | 2434 | ||
| 2505 | if (S3I(s)->tmp.message_type != SSL3_MT_CERTIFICATE) { | 2435 | if (S3I(s)->tmp.message_type != SSL3_MT_CERTIFICATE) { |
| 2506 | al = SSL_AD_UNEXPECTED_MESSAGE; | 2436 | al = SSL_AD_UNEXPECTED_MESSAGE; |
| 2507 | SSLerror( | 2437 | SSLerror(SSL_R_WRONG_MESSAGE_TYPE); |
| 2508 | SSL_R_WRONG_MESSAGE_TYPE); | ||
| 2509 | goto f_err; | 2438 | goto f_err; |
| 2510 | } | 2439 | } |
| 2511 | 2440 | ||
| @@ -2515,8 +2444,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2515 | CBS_init(&cbs, s->internal->init_msg, n); | 2444 | CBS_init(&cbs, s->internal->init_msg, n); |
| 2516 | 2445 | ||
| 2517 | if ((sk = sk_X509_new_null()) == NULL) { | 2446 | if ((sk = sk_X509_new_null()) == NULL) { |
| 2518 | SSLerror( | 2447 | SSLerror(ERR_R_MALLOC_FAILURE); |
| 2519 | ERR_R_MALLOC_FAILURE); | ||
| 2520 | goto err; | 2448 | goto err; |
| 2521 | } | 2449 | } |
| 2522 | 2450 | ||
| @@ -2529,27 +2457,23 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2529 | 2457 | ||
| 2530 | if (!CBS_get_u24_length_prefixed(&client_certs, &cert)) { | 2458 | if (!CBS_get_u24_length_prefixed(&client_certs, &cert)) { |
| 2531 | al = SSL_AD_DECODE_ERROR; | 2459 | al = SSL_AD_DECODE_ERROR; |
| 2532 | SSLerror( | 2460 | SSLerror(SSL_R_CERT_LENGTH_MISMATCH); |
| 2533 | SSL_R_CERT_LENGTH_MISMATCH); | ||
| 2534 | goto f_err; | 2461 | goto f_err; |
| 2535 | } | 2462 | } |
| 2536 | 2463 | ||
| 2537 | q = CBS_data(&cert); | 2464 | q = CBS_data(&cert); |
| 2538 | x = d2i_X509(NULL, &q, CBS_len(&cert)); | 2465 | x = d2i_X509(NULL, &q, CBS_len(&cert)); |
| 2539 | if (x == NULL) { | 2466 | if (x == NULL) { |
| 2540 | SSLerror( | 2467 | SSLerror(ERR_R_ASN1_LIB); |
| 2541 | ERR_R_ASN1_LIB); | ||
| 2542 | goto err; | 2468 | goto err; |
| 2543 | } | 2469 | } |
| 2544 | if (q != CBS_data(&cert) + CBS_len(&cert)) { | 2470 | if (q != CBS_data(&cert) + CBS_len(&cert)) { |
| 2545 | al = SSL_AD_DECODE_ERROR; | 2471 | al = SSL_AD_DECODE_ERROR; |
| 2546 | SSLerror( | 2472 | SSLerror(SSL_R_CERT_LENGTH_MISMATCH); |
| 2547 | SSL_R_CERT_LENGTH_MISMATCH); | ||
| 2548 | goto f_err; | 2473 | goto f_err; |
| 2549 | } | 2474 | } |
| 2550 | if (!sk_X509_push(sk, x)) { | 2475 | if (!sk_X509_push(sk, x)) { |
| 2551 | SSLerror( | 2476 | SSLerror(ERR_R_MALLOC_FAILURE); |
| 2552 | ERR_R_MALLOC_FAILURE); | ||
| 2553 | goto err; | 2477 | goto err; |
| 2554 | } | 2478 | } |
| 2555 | x = NULL; | 2479 | x = NULL; |
| @@ -2562,8 +2486,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2562 | */ | 2486 | */ |
| 2563 | if ((s->verify_mode & SSL_VERIFY_PEER) && | 2487 | if ((s->verify_mode & SSL_VERIFY_PEER) && |
| 2564 | (s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) { | 2488 | (s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) { |
| 2565 | SSLerror( | 2489 | SSLerror(SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE); |
| 2566 | SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE); | ||
| 2567 | al = SSL_AD_HANDSHAKE_FAILURE; | 2490 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 2568 | goto f_err; | 2491 | goto f_err; |
| 2569 | } | 2492 | } |
| @@ -2576,8 +2499,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2576 | i = ssl_verify_cert_chain(s, sk); | 2499 | i = ssl_verify_cert_chain(s, sk); |
| 2577 | if (i <= 0) { | 2500 | if (i <= 0) { |
| 2578 | al = ssl_verify_alarm_type(s->verify_result); | 2501 | al = ssl_verify_alarm_type(s->verify_result); |
| 2579 | SSLerror( | 2502 | SSLerror(SSL_R_NO_CERTIFICATE_RETURNED); |
| 2580 | SSL_R_NO_CERTIFICATE_RETURNED); | ||
| 2581 | goto f_err; | 2503 | goto f_err; |
| 2582 | } | 2504 | } |
| 2583 | } | 2505 | } |
| @@ -2593,8 +2515,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2593 | if (SSI(s)->sess_cert == NULL) { | 2515 | if (SSI(s)->sess_cert == NULL) { |
| 2594 | SSI(s)->sess_cert = ssl_sess_cert_new(); | 2516 | SSI(s)->sess_cert = ssl_sess_cert_new(); |
| 2595 | if (SSI(s)->sess_cert == NULL) { | 2517 | if (SSI(s)->sess_cert == NULL) { |
| 2596 | SSLerror( | 2518 | SSLerror(ERR_R_MALLOC_FAILURE); |
| 2597 | ERR_R_MALLOC_FAILURE); | ||
| 2598 | goto err; | 2519 | goto err; |
| 2599 | } | 2520 | } |
| 2600 | } | 2521 | } |
| @@ -2612,8 +2533,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2612 | if (0) { | 2533 | if (0) { |
| 2613 | truncated: | 2534 | truncated: |
| 2614 | al = SSL_AD_DECODE_ERROR; | 2535 | al = SSL_AD_DECODE_ERROR; |
| 2615 | SSLerror( | 2536 | SSLerror(SSL_R_BAD_PACKET_LENGTH); |
| 2616 | SSL_R_BAD_PACKET_LENGTH); | ||
| 2617 | f_err: | 2537 | f_err: |
| 2618 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 2538 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| 2619 | } | 2539 | } |
| @@ -2638,8 +2558,7 @@ ssl3_send_server_certificate(SSL *s) | |||
| 2638 | 2558 | ||
| 2639 | if (s->internal->state == SSL3_ST_SW_CERT_A) { | 2559 | if (s->internal->state == SSL3_ST_SW_CERT_A) { |
| 2640 | if ((x = ssl_get_server_send_cert(s)) == NULL) { | 2560 | if ((x = ssl_get_server_send_cert(s)) == NULL) { |
| 2641 | SSLerror( | 2561 | SSLerror(ERR_R_INTERNAL_ERROR); |
| 2642 | ERR_R_INTERNAL_ERROR); | ||
| 2643 | return (0); | 2562 | return (0); |
| 2644 | } | 2563 | } |
| 2645 | 2564 | ||
| @@ -2857,8 +2776,7 @@ ssl3_get_next_proto(SSL *s) | |||
| 2857 | * extension in their ClientHello | 2776 | * extension in their ClientHello |
| 2858 | */ | 2777 | */ |
| 2859 | if (!S3I(s)->next_proto_neg_seen) { | 2778 | if (!S3I(s)->next_proto_neg_seen) { |
| 2860 | SSLerror( | 2779 | SSLerror(SSL_R_GOT_NEXT_PROTO_WITHOUT_EXTENSION); |
| 2861 | SSL_R_GOT_NEXT_PROTO_WITHOUT_EXTENSION); | ||
| 2862 | return (-1); | 2780 | return (-1); |
| 2863 | } | 2781 | } |
| 2864 | 2782 | ||
| @@ -2874,8 +2792,7 @@ ssl3_get_next_proto(SSL *s) | |||
| 2874 | * by ssl3_get_finished). | 2792 | * by ssl3_get_finished). |
| 2875 | */ | 2793 | */ |
| 2876 | if (!S3I(s)->change_cipher_spec) { | 2794 | if (!S3I(s)->change_cipher_spec) { |
| 2877 | SSLerror( | 2795 | SSLerror(SSL_R_GOT_NEXT_PROTO_BEFORE_A_CCS); |
| 2878 | SSL_R_GOT_NEXT_PROTO_BEFORE_A_CCS); | ||
| 2879 | return (-1); | 2796 | return (-1); |
| 2880 | } | 2797 | } |
| 2881 | 2798 | ||
| @@ -2905,8 +2822,7 @@ ssl3_get_next_proto(SSL *s) | |||
| 2905 | s->internal->next_proto_negotiated_len = 0; | 2822 | s->internal->next_proto_negotiated_len = 0; |
| 2906 | 2823 | ||
| 2907 | if (!CBS_stow(&proto, &s->internal->next_proto_negotiated, &len)) { | 2824 | if (!CBS_stow(&proto, &s->internal->next_proto_negotiated, &len)) { |
| 2908 | SSLerror( | 2825 | SSLerror(ERR_R_MALLOC_FAILURE); |
| 2909 | ERR_R_MALLOC_FAILURE); | ||
| 2910 | return (0); | 2826 | return (0); |
| 2911 | } | 2827 | } |
| 2912 | s->internal->next_proto_negotiated_len = (uint8_t)len; | 2828 | s->internal->next_proto_negotiated_len = (uint8_t)len; |
