diff options
Diffstat (limited to 'src/lib/libssl/s3_srvr.c')
| -rw-r--r-- | src/lib/libssl/s3_srvr.c | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/src/lib/libssl/s3_srvr.c b/src/lib/libssl/s3_srvr.c index f532e254f9..93510cb58a 100644 --- a/src/lib/libssl/s3_srvr.c +++ b/src/lib/libssl/s3_srvr.c | |||
| @@ -180,28 +180,6 @@ static const SSL_METHOD | |||
| 180 | return (NULL); | 180 | return (NULL); |
| 181 | } | 181 | } |
| 182 | 182 | ||
| 183 | #ifndef OPENSSL_NO_SRP | ||
| 184 | static int | ||
| 185 | ssl_check_srp_ext_ClientHello(SSL *s, int *al) | ||
| 186 | { | ||
| 187 | int ret = SSL_ERROR_NONE; | ||
| 188 | |||
| 189 | *al = SSL_AD_UNRECOGNIZED_NAME; | ||
| 190 | |||
| 191 | if ((s->s3->tmp.new_cipher->algorithm_mkey & SSL_kSRP) && | ||
| 192 | (s->srp_ctx.TLS_ext_srp_username_callback != NULL)) { | ||
| 193 | if (s->srp_ctx.login == NULL) { | ||
| 194 | /* RFC 5054 says SHOULD reject, | ||
| 195 | we do so if There is no srp login name */ | ||
| 196 | ret = SSL3_AL_FATAL; | ||
| 197 | *al = SSL_AD_UNKNOWN_PSK_IDENTITY; | ||
| 198 | } else { | ||
| 199 | ret = SSL_srp_server_param_with_username(s, al); | ||
| 200 | } | ||
| 201 | } | ||
| 202 | return ret; | ||
| 203 | } | ||
| 204 | #endif | ||
| 205 | 183 | ||
| 206 | IMPLEMENT_ssl3_meth_func(SSLv3_server_method, | 184 | IMPLEMENT_ssl3_meth_func(SSLv3_server_method, |
| 207 | ssl3_accept, ssl_undefined_function, ssl3_get_server_method) | 185 | ssl3_accept, ssl_undefined_function, ssl3_get_server_method) |
| @@ -341,39 +319,6 @@ ssl3_accept(SSL *s) | |||
| 341 | if (ret <= 0) | 319 | if (ret <= 0) |
| 342 | goto end; | 320 | goto end; |
| 343 | } | 321 | } |
| 344 | #ifndef OPENSSL_NO_SRP | ||
| 345 | { | ||
| 346 | int al; | ||
| 347 | if ((ret = | ||
| 348 | ssl_check_srp_ext_ClientHello(s, &al)) | ||
| 349 | < 0) { | ||
| 350 | /* | ||
| 351 | * Callback indicates further work to | ||
| 352 | * be done. | ||
| 353 | */ | ||
| 354 | s->rwstate = SSL_X509_LOOKUP; | ||
| 355 | goto end; | ||
| 356 | } | ||
| 357 | if (ret != SSL_ERROR_NONE) { | ||
| 358 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | ||
| 359 | |||
| 360 | /* | ||
| 361 | * This is not really an error but the | ||
| 362 | * only means for a client to detect | ||
| 363 | * whether srp is supported. | ||
| 364 | */ | ||
| 365 | if (al != TLS1_AD_UNKNOWN_PSK_IDENTITY) | ||
| 366 | SSLerr(SSL_F_SSL3_ACCEPT, | ||
| 367 | SSL_R_CLIENTHELLO_TLSEXT); | ||
| 368 | |||
| 369 | ret = SSL_TLSEXT_ERR_ALERT_FATAL; | ||
| 370 | |||
| 371 | ret = -1; | ||
| 372 | goto end; | ||
| 373 | |||
| 374 | } | ||
| 375 | } | ||
| 376 | #endif | ||
| 377 | 322 | ||
| 378 | s->renegotiate = 2; | 323 | s->renegotiate = 2; |
| 379 | s->state = SSL3_ST_SW_SRVR_HELLO_A; | 324 | s->state = SSL3_ST_SW_SRVR_HELLO_A; |
| @@ -472,10 +417,6 @@ ssl3_accept(SSL *s) | |||
| 472 | #ifndef OPENSSL_NO_PSK | 417 | #ifndef OPENSSL_NO_PSK |
| 473 | || ((alg_k & SSL_kPSK) && s->ctx->psk_identity_hint) | 418 | || ((alg_k & SSL_kPSK) && s->ctx->psk_identity_hint) |
| 474 | #endif | 419 | #endif |
| 475 | #ifndef OPENSSL_NO_SRP | ||
| 476 | /* SRP: send ServerKeyExchange */ | ||
| 477 | || (alg_k & SSL_kSRP) | ||
| 478 | #endif | ||
| 479 | || (alg_k & (SSL_kDHr|SSL_kDHd|SSL_kEDH)) | 420 | || (alg_k & (SSL_kDHr|SSL_kDHd|SSL_kEDH)) |
| 480 | || (alg_k & SSL_kEECDH) | 421 | || (alg_k & SSL_kEECDH) |
| 481 | || ((alg_k & SSL_kRSA) | 422 | || ((alg_k & SSL_kRSA) |
| @@ -1812,19 +1753,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1812 | n += 2 + pskhintlen; | 1753 | n += 2 + pskhintlen; |
| 1813 | } else | 1754 | } else |
| 1814 | #endif /* !OPENSSL_NO_PSK */ | 1755 | #endif /* !OPENSSL_NO_PSK */ |
| 1815 | #ifndef OPENSSL_NO_SRP | ||
| 1816 | if (type & SSL_kSRP) { | ||
| 1817 | if ((s->srp_ctx.N == NULL) || (s->srp_ctx.g == NULL) || | ||
| 1818 | (s->srp_ctx.s == NULL) || (s->srp_ctx.B == NULL)) { | ||
| 1819 | SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE, SSL_R_MISSING_SRP_PARAM); | ||
| 1820 | goto err; | ||
| 1821 | } | ||
| 1822 | r[0] = s->srp_ctx.N; | ||
| 1823 | r[1] = s->srp_ctx.g; | ||
| 1824 | r[2] = s->srp_ctx.s; | ||
| 1825 | r[3] = s->srp_ctx.B; | ||
| 1826 | } else | ||
| 1827 | #endif | ||
| 1828 | { | 1756 | { |
| 1829 | al = SSL_AD_HANDSHAKE_FAILURE; | 1757 | al = SSL_AD_HANDSHAKE_FAILURE; |
| 1830 | SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE, SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); | 1758 | SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE, SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); |
| @@ -1832,11 +1760,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1832 | } | 1760 | } |
| 1833 | for (i = 0; i < 4 && r[i] != NULL; i++) { | 1761 | for (i = 0; i < 4 && r[i] != NULL; i++) { |
| 1834 | nr[i] = BN_num_bytes(r[i]); | 1762 | nr[i] = BN_num_bytes(r[i]); |
| 1835 | #ifndef OPENSSL_NO_SRP | ||
| 1836 | if ((i == 2) && (type & SSL_kSRP)) | ||
| 1837 | n += 1 + nr[i]; | ||
| 1838 | else | ||
| 1839 | #endif | ||
| 1840 | n += 2 + nr[i]; | 1763 | n += 2 + nr[i]; |
| 1841 | } | 1764 | } |
| 1842 | 1765 | ||
| @@ -1862,12 +1785,6 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1862 | p = &(d[4]); | 1785 | p = &(d[4]); |
| 1863 | 1786 | ||
| 1864 | for (i = 0; i < 4 && r[i] != NULL; i++) { | 1787 | for (i = 0; i < 4 && r[i] != NULL; i++) { |
| 1865 | #ifndef OPENSSL_NO_SRP | ||
| 1866 | if ((i == 2) && (type & SSL_kSRP)) { | ||
| 1867 | *p = nr[i]; | ||
| 1868 | p++; | ||
| 1869 | } else | ||
| 1870 | #endif | ||
| 1871 | s2n(nr[i], p); | 1788 | s2n(nr[i], p); |
| 1872 | BN_bn2bin(r[i], p); | 1789 | BN_bn2bin(r[i], p); |
| 1873 | p += nr[i]; | 1790 | p += nr[i]; |
| @@ -2736,43 +2653,6 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2736 | goto f_err; | 2653 | goto f_err; |
| 2737 | } else | 2654 | } else |
| 2738 | #endif | 2655 | #endif |
| 2739 | #ifndef OPENSSL_NO_SRP | ||
| 2740 | if (alg_k & SSL_kSRP) { | ||
| 2741 | int param_len; | ||
| 2742 | |||
| 2743 | n2s(p, i); | ||
| 2744 | param_len = i + 2; | ||
| 2745 | if (param_len > n) { | ||
| 2746 | al = SSL_AD_DECODE_ERROR; | ||
| 2747 | SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, | ||
| 2748 | SSL_R_BAD_SRP_A_LENGTH); | ||
| 2749 | goto f_err; | ||
| 2750 | } | ||
| 2751 | if (!(s->srp_ctx.A = BN_bin2bn(p, i, NULL))) { | ||
| 2752 | SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, | ||
| 2753 | ERR_R_BN_LIB); | ||
| 2754 | goto err; | ||
| 2755 | } | ||
| 2756 | if (s->session->srp_username != NULL) | ||
| 2757 | OPENSSL_free(s->session->srp_username); | ||
| 2758 | s->session->srp_username = BUF_strdup(s->srp_ctx.login); | ||
| 2759 | if (s->session->srp_username == NULL) { | ||
| 2760 | SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, | ||
| 2761 | ERR_R_MALLOC_FAILURE); | ||
| 2762 | goto err; | ||
| 2763 | } | ||
| 2764 | |||
| 2765 | if ((s->session->master_key_length = | ||
| 2766 | SRP_generate_server_master_secret(s, | ||
| 2767 | s->session->master_key)) < 0) { | ||
| 2768 | SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, | ||
| 2769 | ERR_R_INTERNAL_ERROR); | ||
| 2770 | goto err; | ||
| 2771 | } | ||
| 2772 | |||
| 2773 | p += i; | ||
| 2774 | } else | ||
| 2775 | #endif /* OPENSSL_NO_SRP */ | ||
| 2776 | if (alg_k & SSL_kGOST) { | 2656 | if (alg_k & SSL_kGOST) { |
| 2777 | int ret = 0; | 2657 | int ret = 0; |
| 2778 | EVP_PKEY_CTX *pkey_ctx; | 2658 | EVP_PKEY_CTX *pkey_ctx; |
| @@ -2853,9 +2733,7 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2853 | return (1); | 2733 | return (1); |
| 2854 | f_err: | 2734 | f_err: |
| 2855 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 2735 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| 2856 | #if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_RSA) || !defined(OPENSSL_NO_ECDH) || defined(OPENSSL_NO_SRP) | ||
| 2857 | err: | 2736 | err: |
| 2858 | #endif | ||
| 2859 | #ifndef OPENSSL_NO_ECDH | 2737 | #ifndef OPENSSL_NO_ECDH |
| 2860 | EVP_PKEY_free(clnt_pub_pkey); | 2738 | EVP_PKEY_free(clnt_pub_pkey); |
| 2861 | EC_POINT_free(clnt_ecpoint); | 2739 | EC_POINT_free(clnt_ecpoint); |
