diff options
author | beck <> | 2000-03-19 11:13:58 +0000 |
---|---|---|
committer | beck <> | 2000-03-19 11:13:58 +0000 |
commit | 796d609550df3a33fc11468741c5d2f6d3df4c11 (patch) | |
tree | 6c6d539061caa20372dad0ac4ddb1dfae2fbe7fe /src/lib/libssl/s3_clnt.c | |
parent | 5be3114c1fd7e0dfea1e38d3abb4cbba75244419 (diff) | |
download | openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.tar.gz openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.tar.bz2 openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.zip |
OpenSSL 0.9.5 merge
*warning* this bumps shared lib minors for libssl and libcrypto from 2.1 to 2.2
if you are using the ssl26 packages for ssh and other things to work you will
need to get new ones (see ~beck/libsslsnap/<arch>) on cvs or ~beck/src-patent.tar.gz on cvs
Diffstat (limited to 'src/lib/libssl/s3_clnt.c')
-rw-r--r-- | src/lib/libssl/s3_clnt.c | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c index d3e6b4d1e5..279d2c0198 100644 --- a/src/lib/libssl/s3_clnt.c +++ b/src/lib/libssl/s3_clnt.c | |||
@@ -110,7 +110,7 @@ int ssl3_connect(SSL *s) | |||
110 | int ret= -1; | 110 | int ret= -1; |
111 | int new_state,state,skip=0;; | 111 | int new_state,state,skip=0;; |
112 | 112 | ||
113 | RAND_seed(&Time,sizeof(Time)); | 113 | RAND_add(&Time,sizeof(Time),0); |
114 | ERR_clear_error(); | 114 | ERR_clear_error(); |
115 | clear_sys_error(); | 115 | clear_sys_error(); |
116 | 116 | ||
@@ -325,8 +325,8 @@ int ssl3_connect(SSL *s) | |||
325 | case SSL3_ST_CW_FINISHED_B: | 325 | case SSL3_ST_CW_FINISHED_B: |
326 | ret=ssl3_send_finished(s, | 326 | ret=ssl3_send_finished(s, |
327 | SSL3_ST_CW_FINISHED_A,SSL3_ST_CW_FINISHED_B, | 327 | SSL3_ST_CW_FINISHED_A,SSL3_ST_CW_FINISHED_B, |
328 | s->method->ssl3_enc->client_finished, | 328 | s->method->ssl3_enc->client_finished_label, |
329 | s->method->ssl3_enc->client_finished_len); | 329 | s->method->ssl3_enc->client_finished_label_len); |
330 | if (ret <= 0) goto end; | 330 | if (ret <= 0) goto end; |
331 | s->state=SSL3_ST_CW_FLUSH; | 331 | s->state=SSL3_ST_CW_FLUSH; |
332 | 332 | ||
@@ -466,7 +466,7 @@ static int ssl3_client_hello(SSL *s) | |||
466 | p=s->s3->client_random; | 466 | p=s->s3->client_random; |
467 | Time=time(NULL); /* Time */ | 467 | Time=time(NULL); /* Time */ |
468 | l2n(Time,p); | 468 | l2n(Time,p); |
469 | RAND_bytes(p,SSL3_RANDOM_SIZE-sizeof(Time)); | 469 | RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-sizeof(Time)); |
470 | 470 | ||
471 | /* Do the message type and length last */ | 471 | /* Do the message type and length last */ |
472 | d=p= &(buf[4]); | 472 | d=p= &(buf[4]); |
@@ -1053,15 +1053,15 @@ static int ssl3_get_key_exchange(SSL *s) | |||
1053 | q+=i; | 1053 | q+=i; |
1054 | j+=i; | 1054 | j+=i; |
1055 | } | 1055 | } |
1056 | i=RSA_public_decrypt((int)n,p,p,pkey->pkey.rsa, | 1056 | i=RSA_verify(NID_md5_sha1, md_buf, j, p, n, |
1057 | RSA_PKCS1_PADDING); | 1057 | pkey->pkey.rsa); |
1058 | if (i <= 0) | 1058 | if (i < 0) |
1059 | { | 1059 | { |
1060 | al=SSL_AD_DECRYPT_ERROR; | 1060 | al=SSL_AD_DECRYPT_ERROR; |
1061 | SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_BAD_RSA_DECRYPT); | 1061 | SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_BAD_RSA_DECRYPT); |
1062 | goto f_err; | 1062 | goto f_err; |
1063 | } | 1063 | } |
1064 | if ((j != i) || (memcmp(p,md_buf,i) != 0)) | 1064 | if (i == 0) |
1065 | { | 1065 | { |
1066 | /* bad signature */ | 1066 | /* bad signature */ |
1067 | al=SSL_AD_DECRYPT_ERROR; | 1067 | al=SSL_AD_DECRYPT_ERROR; |
@@ -1225,7 +1225,7 @@ fclose(out); | |||
1225 | 1225 | ||
1226 | if ((xn=d2i_X509_NAME(NULL,&q,l)) == NULL) | 1226 | if ((xn=d2i_X509_NAME(NULL,&q,l)) == NULL) |
1227 | { | 1227 | { |
1228 | /* If netscape tollerance is on, ignore errors */ | 1228 | /* If netscape tolerance is on, ignore errors */ |
1229 | if (s->options & SSL_OP_NETSCAPE_CA_DN_BUG) | 1229 | if (s->options & SSL_OP_NETSCAPE_CA_DN_BUG) |
1230 | goto cont; | 1230 | goto cont; |
1231 | else | 1231 | else |
@@ -1258,7 +1258,7 @@ cont: | |||
1258 | ERR_clear_error(); | 1258 | ERR_clear_error(); |
1259 | } | 1259 | } |
1260 | 1260 | ||
1261 | /* we should setup a certficate to return.... */ | 1261 | /* we should setup a certificate to return.... */ |
1262 | s->s3->tmp.cert_req=1; | 1262 | s->s3->tmp.cert_req=1; |
1263 | s->s3->tmp.ctype_num=ctype_num; | 1263 | s->s3->tmp.ctype_num=ctype_num; |
1264 | if (s->s3->tmp.ca_names != NULL) | 1264 | if (s->s3->tmp.ca_names != NULL) |
@@ -1341,7 +1341,8 @@ static int ssl3_send_client_key_exchange(SSL *s) | |||
1341 | 1341 | ||
1342 | tmp_buf[0]=s->client_version>>8; | 1342 | tmp_buf[0]=s->client_version>>8; |
1343 | tmp_buf[1]=s->client_version&0xff; | 1343 | tmp_buf[1]=s->client_version&0xff; |
1344 | RAND_bytes(&(tmp_buf[2]),SSL_MAX_MASTER_KEY_LENGTH-2); | 1344 | if (RAND_bytes(&(tmp_buf[2]),SSL_MAX_MASTER_KEY_LENGTH-2) <= 0) |
1345 | goto err; | ||
1345 | 1346 | ||
1346 | s->session->master_key_length=SSL_MAX_MASTER_KEY_LENGTH; | 1347 | s->session->master_key_length=SSL_MAX_MASTER_KEY_LENGTH; |
1347 | 1348 | ||
@@ -1460,7 +1461,7 @@ static int ssl3_send_client_verify(SSL *s) | |||
1460 | unsigned char data[MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH]; | 1461 | unsigned char data[MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH]; |
1461 | EVP_PKEY *pkey; | 1462 | EVP_PKEY *pkey; |
1462 | #ifndef NO_RSA | 1463 | #ifndef NO_RSA |
1463 | int i=0; | 1464 | unsigned u=0; |
1464 | #endif | 1465 | #endif |
1465 | unsigned long n; | 1466 | unsigned long n; |
1466 | #ifndef NO_DSA | 1467 | #ifndef NO_DSA |
@@ -1481,17 +1482,15 @@ static int ssl3_send_client_verify(SSL *s) | |||
1481 | { | 1482 | { |
1482 | s->method->ssl3_enc->cert_verify_mac(s, | 1483 | s->method->ssl3_enc->cert_verify_mac(s, |
1483 | &(s->s3->finish_dgst1),&(data[0])); | 1484 | &(s->s3->finish_dgst1),&(data[0])); |
1484 | i=RSA_private_encrypt( | 1485 | if (RSA_sign(NID_md5_sha1, data, |
1485 | MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH, | 1486 | MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH, |
1486 | data,&(p[2]),pkey->pkey.rsa, | 1487 | &(p[2]), &u, pkey->pkey.rsa) <= 0 ) |
1487 | RSA_PKCS1_PADDING); | ||
1488 | if (i <= 0) | ||
1489 | { | 1488 | { |
1490 | SSLerr(SSL_F_SSL3_SEND_CLIENT_VERIFY,ERR_R_RSA_LIB); | 1489 | SSLerr(SSL_F_SSL3_SEND_CLIENT_VERIFY,ERR_R_RSA_LIB); |
1491 | goto err; | 1490 | goto err; |
1492 | } | 1491 | } |
1493 | s2n(i,p); | 1492 | s2n(u,p); |
1494 | n=i+2; | 1493 | n=u+2; |
1495 | } | 1494 | } |
1496 | else | 1495 | else |
1497 | #endif | 1496 | #endif |
@@ -1689,13 +1688,13 @@ static int ssl3_check_cert_and_algorithm(SSL *s) | |||
1689 | #endif | 1688 | #endif |
1690 | #endif | 1689 | #endif |
1691 | 1690 | ||
1692 | if (SSL_IS_EXPORT(algs) && !has_bits(i,EVP_PKT_EXP)) | 1691 | if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && !has_bits(i,EVP_PKT_EXP)) |
1693 | { | 1692 | { |
1694 | #ifndef NO_RSA | 1693 | #ifndef NO_RSA |
1695 | if (algs & SSL_kRSA) | 1694 | if (algs & SSL_kRSA) |
1696 | { | 1695 | { |
1697 | if (rsa == NULL | 1696 | if (rsa == NULL |
1698 | || RSA_size(rsa) > SSL_EXPORT_PKEYLENGTH(algs)) | 1697 | || RSA_size(rsa) > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) |
1699 | { | 1698 | { |
1700 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_EXPORT_TMP_RSA_KEY); | 1699 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_EXPORT_TMP_RSA_KEY); |
1701 | goto f_err; | 1700 | goto f_err; |
@@ -1707,7 +1706,7 @@ static int ssl3_check_cert_and_algorithm(SSL *s) | |||
1707 | if (algs & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) | 1706 | if (algs & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) |
1708 | { | 1707 | { |
1709 | if (dh == NULL | 1708 | if (dh == NULL |
1710 | || DH_size(dh) > SSL_EXPORT_PKEYLENGTH(algs)) | 1709 | || DH_size(dh) > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) |
1711 | { | 1710 | { |
1712 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_EXPORT_TMP_DH_KEY); | 1711 | SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_EXPORT_TMP_DH_KEY); |
1713 | goto f_err; | 1712 | goto f_err; |