diff options
Diffstat (limited to 'src/lib')
-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) |