Commit e3e11e99 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Remove RSA exception when generating server key exchange.



Reviewed-by: default avatarTim Hudson <tjh@openssl.org>
parent 192e4bbb
Loading
Loading
Loading
Loading
+0 −37
Original line number Diff line number Diff line
@@ -1725,11 +1725,7 @@ int tls_construct_server_done(SSL *s)
int tls_construct_server_key_exchange(SSL *s)
{
#ifndef OPENSSL_NO_RSA
    unsigned char *q;
    int j, num;
    RSA *rsa;
    unsigned char md_buf[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH];
    unsigned int u;
#endif
#ifndef OPENSSL_NO_DH
    DH *dh = NULL, *dhp;
@@ -2103,39 +2099,6 @@ int tls_construct_server_key_exchange(SSL *s)
         * n is the length of the params, they start at &(d[4]) and p
         * points to the space at the end.
         */
#ifndef OPENSSL_NO_RSA
        if (pkey->type == EVP_PKEY_RSA && !SSL_USE_SIGALGS(s)) {
            q = md_buf;
            j = 0;
            for (num = 2; num > 0; num--) {
                EVP_MD_CTX_set_flags(&md_ctx,
                                     EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
                if (EVP_DigestInit_ex(&md_ctx, (num == 2)
                                      ? s->ctx->md5 : s->ctx->sha1, NULL) <= 0
                        || EVP_DigestUpdate(&md_ctx, &(s->s3->client_random[0]),
                                            SSL3_RANDOM_SIZE) <= 0
                        || EVP_DigestUpdate(&md_ctx, &(s->s3->server_random[0]),
                                            SSL3_RANDOM_SIZE) <= 0
                        || EVP_DigestUpdate(&md_ctx, d, n) <= 0
                        || EVP_DigestFinal_ex(&md_ctx, q,
                                              (unsigned int *)&i) <= 0) {
                    SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE,
                           ERR_LIB_EVP);
                    al = SSL_AD_INTERNAL_ERROR;
                    goto f_err;
                }
                q += i;
                j += i;
            }
            if (RSA_sign(NID_md5_sha1, md_buf, j,
                         &(p[2]), &u, pkey->pkey.rsa) <= 0) {
                SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE, ERR_LIB_RSA);
                goto err;
            }
            s2n(u, p);
            n += u + 2;
        } else
#endif
        if (md) {
            /* send signature algorithm */
            if (SSL_USE_SIGALGS(s)) {