diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libssl/s23_clnt.c | 17 | ||||
| -rw-r--r-- | src/lib/libssl/s23_srvr.c | 11 | ||||
| -rw-r--r-- | src/lib/libssl/s3_cbc.c | 51 | ||||
| -rw-r--r-- | src/lib/libssl/s3_clnt.c | 3 | ||||
| -rw-r--r-- | src/lib/libssl/src/ssl/s23_clnt.c | 17 | ||||
| -rw-r--r-- | src/lib/libssl/src/ssl/s23_srvr.c | 11 | ||||
| -rw-r--r-- | src/lib/libssl/src/ssl/s3_cbc.c | 51 | ||||
| -rw-r--r-- | src/lib/libssl/src/ssl/s3_clnt.c | 3 | ||||
| -rw-r--r-- | src/lib/libssl/src/ssl/s3_enc.c | 6 | ||||
| -rw-r--r-- | src/lib/libssl/src/ssl/ssl_ciph.c | 15 | ||||
| -rw-r--r-- | src/lib/libssl/src/ssl/ssl_lib.c | 7 | ||||
| -rw-r--r-- | src/lib/libssl/src/ssl/ssltest.c | 21 | ||||
| -rw-r--r-- | src/lib/libssl/src/ssl/t1_enc.c | 7 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_ciph.c | 15 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_lib.c | 7 | ||||
| -rw-r--r-- | src/lib/libssl/t1_enc.c | 7 |
16 files changed, 4 insertions, 245 deletions
diff --git a/src/lib/libssl/s23_clnt.c b/src/lib/libssl/s23_clnt.c index 8ed79c3d55..3d2e7510cf 100644 --- a/src/lib/libssl/s23_clnt.c +++ b/src/lib/libssl/s23_clnt.c | |||
| @@ -387,15 +387,7 @@ ssl23_client_hello(SSL *s) | |||
| 387 | } else if (version == TLS1_VERSION) { | 387 | } else if (version == TLS1_VERSION) { |
| 388 | version_major = TLS1_VERSION_MAJOR; | 388 | version_major = TLS1_VERSION_MAJOR; |
| 389 | version_minor = TLS1_VERSION_MINOR; | 389 | version_minor = TLS1_VERSION_MINOR; |
| 390 | } | 390 | } else if (version == SSL3_VERSION) { |
| 391 | #ifdef OPENSSL_FIPS | ||
| 392 | else if (FIPS_mode()) { | ||
| 393 | SSLerr(SSL_F_SSL23_CLIENT_HELLO, | ||
| 394 | SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE); | ||
| 395 | return -1; | ||
| 396 | } | ||
| 397 | #endif | ||
| 398 | else if (version == SSL3_VERSION) { | ||
| 399 | version_major = SSL3_VERSION_MAJOR; | 391 | version_major = SSL3_VERSION_MAJOR; |
| 400 | version_minor = SSL3_VERSION_MINOR; | 392 | version_minor = SSL3_VERSION_MINOR; |
| 401 | } else if (version == SSL2_VERSION) { | 393 | } else if (version == SSL2_VERSION) { |
| @@ -671,13 +663,6 @@ ssl23_get_server_hello(SSL *s) | |||
| 671 | 663 | ||
| 672 | if ((p[2] == SSL3_VERSION_MINOR) && | 664 | if ((p[2] == SSL3_VERSION_MINOR) && |
| 673 | !(s->options & SSL_OP_NO_SSLv3)) { | 665 | !(s->options & SSL_OP_NO_SSLv3)) { |
| 674 | #ifdef OPENSSL_FIPS | ||
| 675 | if (FIPS_mode()) { | ||
| 676 | SSLerr(SSL_F_SSL23_GET_SERVER_HELLO, | ||
| 677 | SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE); | ||
| 678 | goto err; | ||
| 679 | } | ||
| 680 | #endif | ||
| 681 | s->version = SSL3_VERSION; | 666 | s->version = SSL3_VERSION; |
| 682 | s->method = SSLv3_client_method(); | 667 | s->method = SSLv3_client_method(); |
| 683 | } else if ((p[2] == TLS1_VERSION_MINOR) && | 668 | } else if ((p[2] == TLS1_VERSION_MINOR) && |
diff --git a/src/lib/libssl/s23_srvr.c b/src/lib/libssl/s23_srvr.c index 2aad21e93c..ca95d4e636 100644 --- a/src/lib/libssl/s23_srvr.c +++ b/src/lib/libssl/s23_srvr.c | |||
| @@ -115,9 +115,6 @@ | |||
| 115 | #include <openssl/rand.h> | 115 | #include <openssl/rand.h> |
| 116 | #include <openssl/objects.h> | 116 | #include <openssl/objects.h> |
| 117 | #include <openssl/evp.h> | 117 | #include <openssl/evp.h> |
| 118 | #ifdef OPENSSL_FIPS | ||
| 119 | #include <openssl/fips.h> | ||
| 120 | #endif | ||
| 121 | 118 | ||
| 122 | static const SSL_METHOD *ssl23_get_server_method(int ver); | 119 | static const SSL_METHOD *ssl23_get_server_method(int ver); |
| 123 | int ssl23_get_client_hello(SSL *s); | 120 | int ssl23_get_client_hello(SSL *s); |
| @@ -388,14 +385,6 @@ ssl23_get_client_hello(SSL *s) | |||
| 388 | } | 385 | } |
| 389 | } | 386 | } |
| 390 | 387 | ||
| 391 | #ifdef OPENSSL_FIPS | ||
| 392 | if (FIPS_mode() && (s->version < TLS1_VERSION)) { | ||
| 393 | SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO, | ||
| 394 | SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE); | ||
| 395 | goto err; | ||
| 396 | } | ||
| 397 | #endif | ||
| 398 | |||
| 399 | if (s->state == SSL23_ST_SR_CLNT_HELLO_B) { | 388 | if (s->state == SSL23_ST_SR_CLNT_HELLO_B) { |
| 400 | /* we have SSLv3/TLSv1 in an SSLv2 header | 389 | /* we have SSLv3/TLSv1 in an SSLv2 header |
| 401 | * (other cases skip this state) */ | 390 | * (other cases skip this state) */ |
diff --git a/src/lib/libssl/s3_cbc.c b/src/lib/libssl/s3_cbc.c index d6cc9b4771..964266e5b2 100644 --- a/src/lib/libssl/s3_cbc.c +++ b/src/lib/libssl/s3_cbc.c | |||
| @@ -386,10 +386,6 @@ tls1_sha512_final_raw(void* ctx, unsigned char *md_out) | |||
| 386 | char | 386 | char |
| 387 | ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx) | 387 | ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx) |
| 388 | { | 388 | { |
| 389 | #ifdef OPENSSL_FIPS | ||
| 390 | if (FIPS_mode()) | ||
| 391 | return 0; | ||
| 392 | #endif | ||
| 393 | switch (EVP_MD_CTX_type(ctx)) { | 389 | switch (EVP_MD_CTX_type(ctx)) { |
| 394 | case NID_md5: | 390 | case NID_md5: |
| 395 | case NID_sha1: | 391 | case NID_sha1: |
| @@ -710,50 +706,3 @@ void ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out, | |||
| 710 | *md_out_size = md_out_size_u; | 706 | *md_out_size = md_out_size_u; |
| 711 | EVP_MD_CTX_cleanup(&md_ctx); | 707 | EVP_MD_CTX_cleanup(&md_ctx); |
| 712 | } | 708 | } |
| 713 | |||
| 714 | #ifdef OPENSSL_FIPS | ||
| 715 | |||
| 716 | /* Due to the need to use EVP in FIPS mode we can't reimplement digests but | ||
| 717 | * we can ensure the number of blocks processed is equal for all cases | ||
| 718 | * by digesting additional data. | ||
| 719 | */ | ||
| 720 | |||
| 721 | void tls_fips_digest_extra(const EVP_CIPHER_CTX *cipher_ctx, | ||
| 722 | EVP_MD_CTX *mac_ctx, const unsigned char *data, size_t data_len, | ||
| 723 | size_t orig_len) | ||
| 724 | { | ||
| 725 | size_t block_size, digest_pad, blocks_data, blocks_orig; | ||
| 726 | if (EVP_CIPHER_CTX_mode(cipher_ctx) != EVP_CIPH_CBC_MODE) | ||
| 727 | return; | ||
| 728 | block_size = EVP_MD_CTX_block_size(mac_ctx); | ||
| 729 | /* We are in FIPS mode if we get this far so we know we have only SHA* | ||
| 730 | * digests and TLS to deal with. | ||
| 731 | * Minimum digest padding length is 17 for SHA384/SHA512 and 9 | ||
| 732 | * otherwise. | ||
| 733 | * Additional header is 13 bytes. To get the number of digest blocks | ||
| 734 | * processed round up the amount of data plus padding to the nearest | ||
| 735 | * block length. Block length is 128 for SHA384/SHA512 and 64 otherwise. | ||
| 736 | * So we have: | ||
| 737 | * blocks = (payload_len + digest_pad + 13 + block_size - 1)/block_size | ||
| 738 | * equivalently: | ||
| 739 | * blocks = (payload_len + digest_pad + 12)/block_size + 1 | ||
| 740 | * HMAC adds a constant overhead. | ||
| 741 | * We're ultimately only interested in differences so this becomes | ||
| 742 | * blocks = (payload_len + 29)/128 | ||
| 743 | * for SHA384/SHA512 and | ||
| 744 | * blocks = (payload_len + 21)/64 | ||
| 745 | * otherwise. | ||
| 746 | */ | ||
| 747 | digest_pad = block_size == 64 ? 21 : 29; | ||
| 748 | blocks_orig = (orig_len + digest_pad)/block_size; | ||
| 749 | blocks_data = (data_len + digest_pad)/block_size; | ||
| 750 | /* MAC enough blocks to make up the difference between the original | ||
| 751 | * and actual lengths plus one extra block to ensure this is never a | ||
| 752 | * no op. The "data" pointer should always have enough space to | ||
| 753 | * perform this operation as it is large enough for a maximum | ||
| 754 | * length TLS buffer. | ||
| 755 | */ | ||
| 756 | EVP_DigestSignUpdate(mac_ctx, data, | ||
| 757 | (blocks_orig - blocks_data + 1) * block_size); | ||
| 758 | } | ||
| 759 | #endif | ||
diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c index c1460266fe..88be294ab7 100644 --- a/src/lib/libssl/s3_clnt.c +++ b/src/lib/libssl/s3_clnt.c | |||
| @@ -156,9 +156,6 @@ | |||
| 156 | #include <openssl/objects.h> | 156 | #include <openssl/objects.h> |
| 157 | #include <openssl/evp.h> | 157 | #include <openssl/evp.h> |
| 158 | #include <openssl/md5.h> | 158 | #include <openssl/md5.h> |
| 159 | #ifdef OPENSSL_FIPS | ||
| 160 | #include <openssl/fips.h> | ||
| 161 | #endif | ||
| 162 | #ifndef OPENSSL_NO_DH | 159 | #ifndef OPENSSL_NO_DH |
| 163 | #include <openssl/dh.h> | 160 | #include <openssl/dh.h> |
| 164 | #endif | 161 | #endif |
diff --git a/src/lib/libssl/src/ssl/s23_clnt.c b/src/lib/libssl/src/ssl/s23_clnt.c index 8ed79c3d55..3d2e7510cf 100644 --- a/src/lib/libssl/src/ssl/s23_clnt.c +++ b/src/lib/libssl/src/ssl/s23_clnt.c | |||
| @@ -387,15 +387,7 @@ ssl23_client_hello(SSL *s) | |||
| 387 | } else if (version == TLS1_VERSION) { | 387 | } else if (version == TLS1_VERSION) { |
| 388 | version_major = TLS1_VERSION_MAJOR; | 388 | version_major = TLS1_VERSION_MAJOR; |
| 389 | version_minor = TLS1_VERSION_MINOR; | 389 | version_minor = TLS1_VERSION_MINOR; |
| 390 | } | 390 | } else if (version == SSL3_VERSION) { |
| 391 | #ifdef OPENSSL_FIPS | ||
| 392 | else if (FIPS_mode()) { | ||
| 393 | SSLerr(SSL_F_SSL23_CLIENT_HELLO, | ||
| 394 | SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE); | ||
| 395 | return -1; | ||
| 396 | } | ||
| 397 | #endif | ||
| 398 | else if (version == SSL3_VERSION) { | ||
| 399 | version_major = SSL3_VERSION_MAJOR; | 391 | version_major = SSL3_VERSION_MAJOR; |
| 400 | version_minor = SSL3_VERSION_MINOR; | 392 | version_minor = SSL3_VERSION_MINOR; |
| 401 | } else if (version == SSL2_VERSION) { | 393 | } else if (version == SSL2_VERSION) { |
| @@ -671,13 +663,6 @@ ssl23_get_server_hello(SSL *s) | |||
| 671 | 663 | ||
| 672 | if ((p[2] == SSL3_VERSION_MINOR) && | 664 | if ((p[2] == SSL3_VERSION_MINOR) && |
| 673 | !(s->options & SSL_OP_NO_SSLv3)) { | 665 | !(s->options & SSL_OP_NO_SSLv3)) { |
| 674 | #ifdef OPENSSL_FIPS | ||
| 675 | if (FIPS_mode()) { | ||
| 676 | SSLerr(SSL_F_SSL23_GET_SERVER_HELLO, | ||
| 677 | SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE); | ||
| 678 | goto err; | ||
| 679 | } | ||
| 680 | #endif | ||
| 681 | s->version = SSL3_VERSION; | 666 | s->version = SSL3_VERSION; |
| 682 | s->method = SSLv3_client_method(); | 667 | s->method = SSLv3_client_method(); |
| 683 | } else if ((p[2] == TLS1_VERSION_MINOR) && | 668 | } else if ((p[2] == TLS1_VERSION_MINOR) && |
diff --git a/src/lib/libssl/src/ssl/s23_srvr.c b/src/lib/libssl/src/ssl/s23_srvr.c index 2aad21e93c..ca95d4e636 100644 --- a/src/lib/libssl/src/ssl/s23_srvr.c +++ b/src/lib/libssl/src/ssl/s23_srvr.c | |||
| @@ -115,9 +115,6 @@ | |||
| 115 | #include <openssl/rand.h> | 115 | #include <openssl/rand.h> |
| 116 | #include <openssl/objects.h> | 116 | #include <openssl/objects.h> |
| 117 | #include <openssl/evp.h> | 117 | #include <openssl/evp.h> |
| 118 | #ifdef OPENSSL_FIPS | ||
| 119 | #include <openssl/fips.h> | ||
| 120 | #endif | ||
| 121 | 118 | ||
| 122 | static const SSL_METHOD *ssl23_get_server_method(int ver); | 119 | static const SSL_METHOD *ssl23_get_server_method(int ver); |
| 123 | int ssl23_get_client_hello(SSL *s); | 120 | int ssl23_get_client_hello(SSL *s); |
| @@ -388,14 +385,6 @@ ssl23_get_client_hello(SSL *s) | |||
| 388 | } | 385 | } |
| 389 | } | 386 | } |
| 390 | 387 | ||
| 391 | #ifdef OPENSSL_FIPS | ||
| 392 | if (FIPS_mode() && (s->version < TLS1_VERSION)) { | ||
| 393 | SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO, | ||
| 394 | SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE); | ||
| 395 | goto err; | ||
| 396 | } | ||
| 397 | #endif | ||
| 398 | |||
| 399 | if (s->state == SSL23_ST_SR_CLNT_HELLO_B) { | 388 | if (s->state == SSL23_ST_SR_CLNT_HELLO_B) { |
| 400 | /* we have SSLv3/TLSv1 in an SSLv2 header | 389 | /* we have SSLv3/TLSv1 in an SSLv2 header |
| 401 | * (other cases skip this state) */ | 390 | * (other cases skip this state) */ |
diff --git a/src/lib/libssl/src/ssl/s3_cbc.c b/src/lib/libssl/src/ssl/s3_cbc.c index d6cc9b4771..964266e5b2 100644 --- a/src/lib/libssl/src/ssl/s3_cbc.c +++ b/src/lib/libssl/src/ssl/s3_cbc.c | |||
| @@ -386,10 +386,6 @@ tls1_sha512_final_raw(void* ctx, unsigned char *md_out) | |||
| 386 | char | 386 | char |
| 387 | ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx) | 387 | ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx) |
| 388 | { | 388 | { |
| 389 | #ifdef OPENSSL_FIPS | ||
| 390 | if (FIPS_mode()) | ||
| 391 | return 0; | ||
| 392 | #endif | ||
| 393 | switch (EVP_MD_CTX_type(ctx)) { | 389 | switch (EVP_MD_CTX_type(ctx)) { |
| 394 | case NID_md5: | 390 | case NID_md5: |
| 395 | case NID_sha1: | 391 | case NID_sha1: |
| @@ -710,50 +706,3 @@ void ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out, | |||
| 710 | *md_out_size = md_out_size_u; | 706 | *md_out_size = md_out_size_u; |
| 711 | EVP_MD_CTX_cleanup(&md_ctx); | 707 | EVP_MD_CTX_cleanup(&md_ctx); |
| 712 | } | 708 | } |
| 713 | |||
| 714 | #ifdef OPENSSL_FIPS | ||
| 715 | |||
| 716 | /* Due to the need to use EVP in FIPS mode we can't reimplement digests but | ||
| 717 | * we can ensure the number of blocks processed is equal for all cases | ||
| 718 | * by digesting additional data. | ||
| 719 | */ | ||
| 720 | |||
| 721 | void tls_fips_digest_extra(const EVP_CIPHER_CTX *cipher_ctx, | ||
| 722 | EVP_MD_CTX *mac_ctx, const unsigned char *data, size_t data_len, | ||
| 723 | size_t orig_len) | ||
| 724 | { | ||
| 725 | size_t block_size, digest_pad, blocks_data, blocks_orig; | ||
| 726 | if (EVP_CIPHER_CTX_mode(cipher_ctx) != EVP_CIPH_CBC_MODE) | ||
| 727 | return; | ||
| 728 | block_size = EVP_MD_CTX_block_size(mac_ctx); | ||
| 729 | /* We are in FIPS mode if we get this far so we know we have only SHA* | ||
| 730 | * digests and TLS to deal with. | ||
| 731 | * Minimum digest padding length is 17 for SHA384/SHA512 and 9 | ||
| 732 | * otherwise. | ||
| 733 | * Additional header is 13 bytes. To get the number of digest blocks | ||
| 734 | * processed round up the amount of data plus padding to the nearest | ||
| 735 | * block length. Block length is 128 for SHA384/SHA512 and 64 otherwise. | ||
| 736 | * So we have: | ||
| 737 | * blocks = (payload_len + digest_pad + 13 + block_size - 1)/block_size | ||
| 738 | * equivalently: | ||
| 739 | * blocks = (payload_len + digest_pad + 12)/block_size + 1 | ||
| 740 | * HMAC adds a constant overhead. | ||
| 741 | * We're ultimately only interested in differences so this becomes | ||
| 742 | * blocks = (payload_len + 29)/128 | ||
| 743 | * for SHA384/SHA512 and | ||
| 744 | * blocks = (payload_len + 21)/64 | ||
| 745 | * otherwise. | ||
| 746 | */ | ||
| 747 | digest_pad = block_size == 64 ? 21 : 29; | ||
| 748 | blocks_orig = (orig_len + digest_pad)/block_size; | ||
| 749 | blocks_data = (data_len + digest_pad)/block_size; | ||
| 750 | /* MAC enough blocks to make up the difference between the original | ||
| 751 | * and actual lengths plus one extra block to ensure this is never a | ||
| 752 | * no op. The "data" pointer should always have enough space to | ||
| 753 | * perform this operation as it is large enough for a maximum | ||
| 754 | * length TLS buffer. | ||
| 755 | */ | ||
| 756 | EVP_DigestSignUpdate(mac_ctx, data, | ||
| 757 | (blocks_orig - blocks_data + 1) * block_size); | ||
| 758 | } | ||
| 759 | #endif | ||
diff --git a/src/lib/libssl/src/ssl/s3_clnt.c b/src/lib/libssl/src/ssl/s3_clnt.c index c1460266fe..88be294ab7 100644 --- a/src/lib/libssl/src/ssl/s3_clnt.c +++ b/src/lib/libssl/src/ssl/s3_clnt.c | |||
| @@ -156,9 +156,6 @@ | |||
| 156 | #include <openssl/objects.h> | 156 | #include <openssl/objects.h> |
| 157 | #include <openssl/evp.h> | 157 | #include <openssl/evp.h> |
| 158 | #include <openssl/md5.h> | 158 | #include <openssl/md5.h> |
| 159 | #ifdef OPENSSL_FIPS | ||
| 160 | #include <openssl/fips.h> | ||
| 161 | #endif | ||
| 162 | #ifndef OPENSSL_NO_DH | 159 | #ifndef OPENSSL_NO_DH |
| 163 | #include <openssl/dh.h> | 160 | #include <openssl/dh.h> |
| 164 | #endif | 161 | #endif |
diff --git a/src/lib/libssl/src/ssl/s3_enc.c b/src/lib/libssl/src/ssl/s3_enc.c index 9ed5850e73..bfd40b3d11 100644 --- a/src/lib/libssl/src/ssl/s3_enc.c +++ b/src/lib/libssl/src/ssl/s3_enc.c | |||
| @@ -591,12 +591,6 @@ ssl3_digest_cached_records(SSL *s) | |||
| 591 | for (i = 0; ssl_get_handshake_digest(i, &mask, &md); i++) { | 591 | for (i = 0; ssl_get_handshake_digest(i, &mask, &md); i++) { |
| 592 | if ((mask & ssl_get_algorithm2(s)) && md) { | 592 | if ((mask & ssl_get_algorithm2(s)) && md) { |
| 593 | s->s3->handshake_dgst[i] = EVP_MD_CTX_create(); | 593 | s->s3->handshake_dgst[i] = EVP_MD_CTX_create(); |
| 594 | #ifdef OPENSSL_FIPS | ||
| 595 | if (EVP_MD_nid(md) == NID_md5) { | ||
| 596 | EVP_MD_CTX_set_flags(s->s3->handshake_dgst[i], | ||
| 597 | EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); | ||
| 598 | } | ||
| 599 | #endif | ||
| 600 | EVP_DigestInit_ex(s->s3->handshake_dgst[i], md, NULL); | 594 | EVP_DigestInit_ex(s->s3->handshake_dgst[i], md, NULL); |
| 601 | EVP_DigestUpdate(s->s3->handshake_dgst[i], hdata, hdatalen); | 595 | EVP_DigestUpdate(s->s3->handshake_dgst[i], hdata, hdatalen); |
| 602 | } else { | 596 | } else { |
diff --git a/src/lib/libssl/src/ssl/ssl_ciph.c b/src/lib/libssl/src/ssl/ssl_ciph.c index ed2e78bdcc..ed5ac725a2 100644 --- a/src/lib/libssl/src/ssl/ssl_ciph.c +++ b/src/lib/libssl/src/ssl/ssl_ciph.c | |||
| @@ -617,11 +617,6 @@ ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc, | |||
| 617 | s->ssl_version < TLS1_VERSION) | 617 | s->ssl_version < TLS1_VERSION) |
| 618 | return 1; | 618 | return 1; |
| 619 | 619 | ||
| 620 | #ifdef OPENSSL_FIPS | ||
| 621 | if (FIPS_mode()) | ||
| 622 | return 1; | ||
| 623 | #endif | ||
| 624 | |||
| 625 | if (c->algorithm_enc == SSL_RC4 && | 620 | if (c->algorithm_enc == SSL_RC4 && |
| 626 | c->algorithm_mac == SSL_MD5 && | 621 | c->algorithm_mac == SSL_MD5 && |
| 627 | (evp = EVP_get_cipherbyname("RC4-HMAC-MD5"))) | 622 | (evp = EVP_get_cipherbyname("RC4-HMAC-MD5"))) |
| @@ -798,9 +793,6 @@ CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p) | |||
| 798 | c = ssl_method->get_cipher(i); | 793 | c = ssl_method->get_cipher(i); |
| 799 | /* drop those that use any of that is not available */ | 794 | /* drop those that use any of that is not available */ |
| 800 | if ((c != NULL) && c->valid && | 795 | if ((c != NULL) && c->valid && |
| 801 | #ifdef OPENSSL_FIPS | ||
| 802 | (!FIPS_mode() || (c->algo_strength & SSL_FIPS)) && | ||
| 803 | #endif | ||
| 804 | !(c->algorithm_mkey & disabled_mkey) && | 796 | !(c->algorithm_mkey & disabled_mkey) && |
| 805 | !(c->algorithm_auth & disabled_auth) && | 797 | !(c->algorithm_auth & disabled_auth) && |
| 806 | !(c->algorithm_enc & disabled_enc) && | 798 | !(c->algorithm_enc & disabled_enc) && |
| @@ -1461,12 +1453,7 @@ const char *rule_str) | |||
| 1461 | * to the resulting precedence to the STACK_OF(SSL_CIPHER). | 1453 | * to the resulting precedence to the STACK_OF(SSL_CIPHER). |
| 1462 | */ | 1454 | */ |
| 1463 | for (curr = head; curr != NULL; curr = curr->next) { | 1455 | for (curr = head; curr != NULL; curr = curr->next) { |
| 1464 | #ifdef OPENSSL_FIPS | 1456 | if (curr->active) { |
| 1465 | if (curr->active && (!FIPS_mode() || curr->cipher->algo_strength & SSL_FIPS)) | ||
| 1466 | #else | ||
| 1467 | if (curr->active) | ||
| 1468 | #endif | ||
| 1469 | { | ||
| 1470 | sk_SSL_CIPHER_push(cipherstack, curr->cipher); | 1457 | sk_SSL_CIPHER_push(cipherstack, curr->cipher); |
| 1471 | #ifdef CIPHER_DEBUG | 1458 | #ifdef CIPHER_DEBUG |
| 1472 | printf("<%s>\n", curr->cipher->name); | 1459 | printf("<%s>\n", curr->cipher->name); |
diff --git a/src/lib/libssl/src/ssl/ssl_lib.c b/src/lib/libssl/src/ssl/ssl_lib.c index 98764b82aa..b5ba0f4aac 100644 --- a/src/lib/libssl/src/ssl/ssl_lib.c +++ b/src/lib/libssl/src/ssl/ssl_lib.c | |||
| @@ -1708,13 +1708,6 @@ SSL_CTX | |||
| 1708 | return (NULL); | 1708 | return (NULL); |
| 1709 | } | 1709 | } |
| 1710 | 1710 | ||
| 1711 | #ifdef OPENSSL_FIPS | ||
| 1712 | if (FIPS_mode() && (meth->version < TLS1_VERSION)) { | ||
| 1713 | SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE); | ||
| 1714 | return NULL; | ||
| 1715 | } | ||
| 1716 | #endif | ||
| 1717 | |||
| 1718 | if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) { | 1711 | if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) { |
| 1719 | SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); | 1712 | SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); |
| 1720 | goto err; | 1713 | goto err; |
diff --git a/src/lib/libssl/src/ssl/ssltest.c b/src/lib/libssl/src/ssl/ssltest.c index 664147cb6a..ea236df44d 100644 --- a/src/lib/libssl/src/ssl/ssltest.c +++ b/src/lib/libssl/src/ssl/ssltest.c | |||
| @@ -299,9 +299,6 @@ sv_usage(void) | |||
| 299 | { | 299 | { |
| 300 | fprintf(stderr, "usage: ssltest [args ...]\n"); | 300 | fprintf(stderr, "usage: ssltest [args ...]\n"); |
| 301 | fprintf(stderr, "\n"); | 301 | fprintf(stderr, "\n"); |
| 302 | #ifdef OPENSSL_FIPS | ||
| 303 | fprintf(stderr, "-F - run test in FIPS mode\n"); | ||
| 304 | #endif | ||
| 305 | fprintf(stderr, " -server_auth - check server certificate\n"); | 302 | fprintf(stderr, " -server_auth - check server certificate\n"); |
| 306 | fprintf(stderr, " -client_auth - do client authentication\n"); | 303 | fprintf(stderr, " -client_auth - do client authentication\n"); |
| 307 | fprintf(stderr, " -proxy - allow proxy certificates\n"); | 304 | fprintf(stderr, " -proxy - allow proxy certificates\n"); |
| @@ -526,9 +523,6 @@ main(int argc, char *argv[]) | |||
| 526 | STACK_OF(SSL_COMP) *ssl_comp_methods = NULL; | 523 | STACK_OF(SSL_COMP) *ssl_comp_methods = NULL; |
| 527 | #endif | 524 | #endif |
| 528 | int test_cipherlist = 0; | 525 | int test_cipherlist = 0; |
| 529 | #ifdef OPENSSL_FIPS | ||
| 530 | int fips_mode = 0; | ||
| 531 | #endif | ||
| 532 | 526 | ||
| 533 | verbose = 0; | 527 | verbose = 0; |
| 534 | debug = 0; | 528 | debug = 0; |
| @@ -558,12 +552,8 @@ main(int argc, char *argv[]) | |||
| 558 | 552 | ||
| 559 | while (argc >= 1) { | 553 | while (argc >= 1) { |
| 560 | if (!strcmp(*argv, "-F")) { | 554 | if (!strcmp(*argv, "-F")) { |
| 561 | #ifdef OPENSSL_FIPS | ||
| 562 | fips_mode = 1; | ||
| 563 | #else | ||
| 564 | fprintf(stderr, "not compiled with FIPS support, so exitting without running.\n"); | 555 | fprintf(stderr, "not compiled with FIPS support, so exitting without running.\n"); |
| 565 | exit(0); | 556 | exit(0); |
| 566 | #endif | ||
| 567 | } else if (strcmp(*argv, "-server_auth") == 0) | 557 | } else if (strcmp(*argv, "-server_auth") == 0) |
| 568 | server_auth = 1; | 558 | server_auth = 1; |
| 569 | else if (strcmp(*argv, "-client_auth") == 0) | 559 | else if (strcmp(*argv, "-client_auth") == 0) |
| @@ -739,17 +729,6 @@ bad: | |||
| 739 | exit(1); | 729 | exit(1); |
| 740 | } | 730 | } |
| 741 | 731 | ||
| 742 | #ifdef OPENSSL_FIPS | ||
| 743 | if (fips_mode) { | ||
| 744 | if (!FIPS_mode_set(1)) { | ||
| 745 | ERR_load_crypto_strings(); | ||
| 746 | ERR_print_errors(BIO_new_fp(stderr, BIO_NOCLOSE)); | ||
| 747 | exit(1); | ||
| 748 | } else | ||
| 749 | fprintf(stderr, "*** IN FIPS MODE ***\n"); | ||
| 750 | } | ||
| 751 | #endif | ||
| 752 | |||
| 753 | if (print_time) { | 732 | if (print_time) { |
| 754 | if (!bio_pair) { | 733 | if (!bio_pair) { |
| 755 | fprintf(stderr, "Using BIO pair (-bio_pair)\n"); | 734 | fprintf(stderr, "Using BIO pair (-bio_pair)\n"); |
diff --git a/src/lib/libssl/src/ssl/t1_enc.c b/src/lib/libssl/src/ssl/t1_enc.c index e59e883424..71d9f164b4 100644 --- a/src/lib/libssl/src/ssl/t1_enc.c +++ b/src/lib/libssl/src/ssl/t1_enc.c | |||
| @@ -981,13 +981,6 @@ tls1_mac(SSL *ssl, unsigned char *md, int send) | |||
| 981 | EVP_DigestSignUpdate(mac_ctx, rec->input, rec->length); | 981 | EVP_DigestSignUpdate(mac_ctx, rec->input, rec->length); |
| 982 | t = EVP_DigestSignFinal(mac_ctx, md, &md_size); | 982 | t = EVP_DigestSignFinal(mac_ctx, md, &md_size); |
| 983 | OPENSSL_assert(t > 0); | 983 | OPENSSL_assert(t > 0); |
| 984 | #ifdef OPENSSL_FIPS | ||
| 985 | if (!send && FIPS_mode()) | ||
| 986 | tls_fips_digest_extra( | ||
| 987 | ssl->enc_read_ctx, | ||
| 988 | mac_ctx, rec->input, | ||
| 989 | rec->length, orig_len); | ||
| 990 | #endif | ||
| 991 | } | 984 | } |
| 992 | 985 | ||
| 993 | if (!stream_mac) | 986 | if (!stream_mac) |
diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c index ed2e78bdcc..ed5ac725a2 100644 --- a/src/lib/libssl/ssl_ciph.c +++ b/src/lib/libssl/ssl_ciph.c | |||
| @@ -617,11 +617,6 @@ ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc, | |||
| 617 | s->ssl_version < TLS1_VERSION) | 617 | s->ssl_version < TLS1_VERSION) |
| 618 | return 1; | 618 | return 1; |
| 619 | 619 | ||
| 620 | #ifdef OPENSSL_FIPS | ||
| 621 | if (FIPS_mode()) | ||
| 622 | return 1; | ||
| 623 | #endif | ||
| 624 | |||
| 625 | if (c->algorithm_enc == SSL_RC4 && | 620 | if (c->algorithm_enc == SSL_RC4 && |
| 626 | c->algorithm_mac == SSL_MD5 && | 621 | c->algorithm_mac == SSL_MD5 && |
| 627 | (evp = EVP_get_cipherbyname("RC4-HMAC-MD5"))) | 622 | (evp = EVP_get_cipherbyname("RC4-HMAC-MD5"))) |
| @@ -798,9 +793,6 @@ CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p) | |||
| 798 | c = ssl_method->get_cipher(i); | 793 | c = ssl_method->get_cipher(i); |
| 799 | /* drop those that use any of that is not available */ | 794 | /* drop those that use any of that is not available */ |
| 800 | if ((c != NULL) && c->valid && | 795 | if ((c != NULL) && c->valid && |
| 801 | #ifdef OPENSSL_FIPS | ||
| 802 | (!FIPS_mode() || (c->algo_strength & SSL_FIPS)) && | ||
| 803 | #endif | ||
| 804 | !(c->algorithm_mkey & disabled_mkey) && | 796 | !(c->algorithm_mkey & disabled_mkey) && |
| 805 | !(c->algorithm_auth & disabled_auth) && | 797 | !(c->algorithm_auth & disabled_auth) && |
| 806 | !(c->algorithm_enc & disabled_enc) && | 798 | !(c->algorithm_enc & disabled_enc) && |
| @@ -1461,12 +1453,7 @@ const char *rule_str) | |||
| 1461 | * to the resulting precedence to the STACK_OF(SSL_CIPHER). | 1453 | * to the resulting precedence to the STACK_OF(SSL_CIPHER). |
| 1462 | */ | 1454 | */ |
| 1463 | for (curr = head; curr != NULL; curr = curr->next) { | 1455 | for (curr = head; curr != NULL; curr = curr->next) { |
| 1464 | #ifdef OPENSSL_FIPS | 1456 | if (curr->active) { |
| 1465 | if (curr->active && (!FIPS_mode() || curr->cipher->algo_strength & SSL_FIPS)) | ||
| 1466 | #else | ||
| 1467 | if (curr->active) | ||
| 1468 | #endif | ||
| 1469 | { | ||
| 1470 | sk_SSL_CIPHER_push(cipherstack, curr->cipher); | 1457 | sk_SSL_CIPHER_push(cipherstack, curr->cipher); |
| 1471 | #ifdef CIPHER_DEBUG | 1458 | #ifdef CIPHER_DEBUG |
| 1472 | printf("<%s>\n", curr->cipher->name); | 1459 | printf("<%s>\n", curr->cipher->name); |
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 98764b82aa..b5ba0f4aac 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
| @@ -1708,13 +1708,6 @@ SSL_CTX | |||
| 1708 | return (NULL); | 1708 | return (NULL); |
| 1709 | } | 1709 | } |
| 1710 | 1710 | ||
| 1711 | #ifdef OPENSSL_FIPS | ||
| 1712 | if (FIPS_mode() && (meth->version < TLS1_VERSION)) { | ||
| 1713 | SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE); | ||
| 1714 | return NULL; | ||
| 1715 | } | ||
| 1716 | #endif | ||
| 1717 | |||
| 1718 | if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) { | 1711 | if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) { |
| 1719 | SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); | 1712 | SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); |
| 1720 | goto err; | 1713 | goto err; |
diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c index e59e883424..71d9f164b4 100644 --- a/src/lib/libssl/t1_enc.c +++ b/src/lib/libssl/t1_enc.c | |||
| @@ -981,13 +981,6 @@ tls1_mac(SSL *ssl, unsigned char *md, int send) | |||
| 981 | EVP_DigestSignUpdate(mac_ctx, rec->input, rec->length); | 981 | EVP_DigestSignUpdate(mac_ctx, rec->input, rec->length); |
| 982 | t = EVP_DigestSignFinal(mac_ctx, md, &md_size); | 982 | t = EVP_DigestSignFinal(mac_ctx, md, &md_size); |
| 983 | OPENSSL_assert(t > 0); | 983 | OPENSSL_assert(t > 0); |
| 984 | #ifdef OPENSSL_FIPS | ||
| 985 | if (!send && FIPS_mode()) | ||
| 986 | tls_fips_digest_extra( | ||
| 987 | ssl->enc_read_ctx, | ||
| 988 | mac_ctx, rec->input, | ||
| 989 | rec->length, orig_len); | ||
| 990 | #endif | ||
| 991 | } | 984 | } |
| 992 | 985 | ||
| 993 | if (!stream_mac) | 986 | if (!stream_mac) |
