diff options
Diffstat (limited to 'src/lib/libcrypto/rsa')
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_crpt.c | 32 | ||||
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_gen.c | 15 | ||||
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_lib.c | 11 | ||||
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_pmeth.c | 76 | ||||
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_sign.c | 17 |
5 files changed, 0 insertions, 151 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_crpt.c b/src/lib/libcrypto/rsa/rsa_crpt.c index d3e44785dc..7750366613 100644 --- a/src/lib/libcrypto/rsa/rsa_crpt.c +++ b/src/lib/libcrypto/rsa/rsa_crpt.c | |||
| @@ -75,56 +75,24 @@ int RSA_size(const RSA *r) | |||
| 75 | int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, | 75 | int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, |
| 76 | RSA *rsa, int padding) | 76 | RSA *rsa, int padding) |
| 77 | { | 77 | { |
| 78 | #ifdef OPENSSL_FIPS | ||
| 79 | if (FIPS_mode() && !(rsa->meth->flags & RSA_FLAG_FIPS_METHOD) | ||
| 80 | && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW)) | ||
| 81 | { | ||
| 82 | RSAerr(RSA_F_RSA_PUBLIC_ENCRYPT, RSA_R_NON_FIPS_RSA_METHOD); | ||
| 83 | return -1; | ||
| 84 | } | ||
| 85 | #endif | ||
| 86 | return(rsa->meth->rsa_pub_enc(flen, from, to, rsa, padding)); | 78 | return(rsa->meth->rsa_pub_enc(flen, from, to, rsa, padding)); |
| 87 | } | 79 | } |
| 88 | 80 | ||
| 89 | int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, | 81 | int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, |
| 90 | RSA *rsa, int padding) | 82 | RSA *rsa, int padding) |
| 91 | { | 83 | { |
| 92 | #ifdef OPENSSL_FIPS | ||
| 93 | if (FIPS_mode() && !(rsa->meth->flags & RSA_FLAG_FIPS_METHOD) | ||
| 94 | && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW)) | ||
| 95 | { | ||
| 96 | RSAerr(RSA_F_RSA_PRIVATE_ENCRYPT, RSA_R_NON_FIPS_RSA_METHOD); | ||
| 97 | return -1; | ||
| 98 | } | ||
| 99 | #endif | ||
| 100 | return(rsa->meth->rsa_priv_enc(flen, from, to, rsa, padding)); | 84 | return(rsa->meth->rsa_priv_enc(flen, from, to, rsa, padding)); |
| 101 | } | 85 | } |
| 102 | 86 | ||
| 103 | int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, | 87 | int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, |
| 104 | RSA *rsa, int padding) | 88 | RSA *rsa, int padding) |
| 105 | { | 89 | { |
| 106 | #ifdef OPENSSL_FIPS | ||
| 107 | if (FIPS_mode() && !(rsa->meth->flags & RSA_FLAG_FIPS_METHOD) | ||
| 108 | && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW)) | ||
| 109 | { | ||
| 110 | RSAerr(RSA_F_RSA_PRIVATE_DECRYPT, RSA_R_NON_FIPS_RSA_METHOD); | ||
| 111 | return -1; | ||
| 112 | } | ||
| 113 | #endif | ||
| 114 | return(rsa->meth->rsa_priv_dec(flen, from, to, rsa, padding)); | 90 | return(rsa->meth->rsa_priv_dec(flen, from, to, rsa, padding)); |
| 115 | } | 91 | } |
| 116 | 92 | ||
| 117 | int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, | 93 | int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, |
| 118 | RSA *rsa, int padding) | 94 | RSA *rsa, int padding) |
| 119 | { | 95 | { |
| 120 | #ifdef OPENSSL_FIPS | ||
| 121 | if (FIPS_mode() && !(rsa->meth->flags & RSA_FLAG_FIPS_METHOD) | ||
| 122 | && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW)) | ||
| 123 | { | ||
| 124 | RSAerr(RSA_F_RSA_PUBLIC_DECRYPT, RSA_R_NON_FIPS_RSA_METHOD); | ||
| 125 | return -1; | ||
| 126 | } | ||
| 127 | #endif | ||
| 128 | return(rsa->meth->rsa_pub_dec(flen, from, to, rsa, padding)); | 96 | return(rsa->meth->rsa_pub_dec(flen, from, to, rsa, padding)); |
| 129 | } | 97 | } |
| 130 | 98 | ||
diff --git a/src/lib/libcrypto/rsa/rsa_gen.c b/src/lib/libcrypto/rsa/rsa_gen.c index 42290cce66..767f7ab682 100644 --- a/src/lib/libcrypto/rsa/rsa_gen.c +++ b/src/lib/libcrypto/rsa/rsa_gen.c | |||
| @@ -67,9 +67,6 @@ | |||
| 67 | #include "cryptlib.h" | 67 | #include "cryptlib.h" |
| 68 | #include <openssl/bn.h> | 68 | #include <openssl/bn.h> |
| 69 | #include <openssl/rsa.h> | 69 | #include <openssl/rsa.h> |
| 70 | #ifdef OPENSSL_FIPS | ||
| 71 | #include <openssl/fips.h> | ||
| 72 | #endif | ||
| 73 | 70 | ||
| 74 | static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb); | 71 | static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb); |
| 75 | 72 | ||
| @@ -80,20 +77,8 @@ static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb) | |||
| 80 | * now just because key-generation is part of RSA_METHOD. */ | 77 | * now just because key-generation is part of RSA_METHOD. */ |
| 81 | int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb) | 78 | int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb) |
| 82 | { | 79 | { |
| 83 | #ifdef OPENSSL_FIPS | ||
| 84 | if (FIPS_mode() && !(rsa->meth->flags & RSA_FLAG_FIPS_METHOD) | ||
| 85 | && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW)) | ||
| 86 | { | ||
| 87 | RSAerr(RSA_F_RSA_GENERATE_KEY_EX, RSA_R_NON_FIPS_RSA_METHOD); | ||
| 88 | return 0; | ||
| 89 | } | ||
| 90 | #endif | ||
| 91 | if(rsa->meth->rsa_keygen) | 80 | if(rsa->meth->rsa_keygen) |
| 92 | return rsa->meth->rsa_keygen(rsa, bits, e_value, cb); | 81 | return rsa->meth->rsa_keygen(rsa, bits, e_value, cb); |
| 93 | #ifdef OPENSSL_FIPS | ||
| 94 | if (FIPS_mode()) | ||
| 95 | return FIPS_rsa_generate_key_ex(rsa, bits, e_value, cb); | ||
| 96 | #endif | ||
| 97 | return rsa_builtin_keygen(rsa, bits, e_value, cb); | 82 | return rsa_builtin_keygen(rsa, bits, e_value, cb); |
| 98 | } | 83 | } |
| 99 | 84 | ||
diff --git a/src/lib/libcrypto/rsa/rsa_lib.c b/src/lib/libcrypto/rsa/rsa_lib.c index c95ceafc82..9e3f7dafcd 100644 --- a/src/lib/libcrypto/rsa/rsa_lib.c +++ b/src/lib/libcrypto/rsa/rsa_lib.c | |||
| @@ -67,10 +67,6 @@ | |||
| 67 | #include <openssl/engine.h> | 67 | #include <openssl/engine.h> |
| 68 | #endif | 68 | #endif |
| 69 | 69 | ||
| 70 | #ifdef OPENSSL_FIPS | ||
| 71 | #include <openssl/fips.h> | ||
| 72 | #endif | ||
| 73 | |||
| 74 | const char RSA_version[]="RSA" OPENSSL_VERSION_PTEXT; | 70 | const char RSA_version[]="RSA" OPENSSL_VERSION_PTEXT; |
| 75 | 71 | ||
| 76 | static const RSA_METHOD *default_RSA_meth=NULL; | 72 | static const RSA_METHOD *default_RSA_meth=NULL; |
| @@ -91,18 +87,11 @@ const RSA_METHOD *RSA_get_default_method(void) | |||
| 91 | { | 87 | { |
| 92 | if (default_RSA_meth == NULL) | 88 | if (default_RSA_meth == NULL) |
| 93 | { | 89 | { |
| 94 | #ifdef OPENSSL_FIPS | ||
| 95 | if (FIPS_mode()) | ||
| 96 | return FIPS_rsa_pkcs1_ssleay(); | ||
| 97 | else | ||
| 98 | return RSA_PKCS1_SSLeay(); | ||
| 99 | #else | ||
| 100 | #ifdef RSA_NULL | 90 | #ifdef RSA_NULL |
| 101 | default_RSA_meth=RSA_null_method(); | 91 | default_RSA_meth=RSA_null_method(); |
| 102 | #else | 92 | #else |
| 103 | default_RSA_meth=RSA_PKCS1_SSLeay(); | 93 | default_RSA_meth=RSA_PKCS1_SSLeay(); |
| 104 | #endif | 94 | #endif |
| 105 | #endif | ||
| 106 | } | 95 | } |
| 107 | 96 | ||
| 108 | return default_RSA_meth; | 97 | return default_RSA_meth; |
diff --git a/src/lib/libcrypto/rsa/rsa_pmeth.c b/src/lib/libcrypto/rsa/rsa_pmeth.c index 157aa5c41d..d706d35ff6 100644 --- a/src/lib/libcrypto/rsa/rsa_pmeth.c +++ b/src/lib/libcrypto/rsa/rsa_pmeth.c | |||
| @@ -66,9 +66,6 @@ | |||
| 66 | #ifndef OPENSSL_NO_CMS | 66 | #ifndef OPENSSL_NO_CMS |
| 67 | #include <openssl/cms.h> | 67 | #include <openssl/cms.h> |
| 68 | #endif | 68 | #endif |
| 69 | #ifdef OPENSSL_FIPS | ||
| 70 | #include <openssl/fips.h> | ||
| 71 | #endif | ||
| 72 | #include "evp_locl.h" | 69 | #include "evp_locl.h" |
| 73 | #include "rsa_locl.h" | 70 | #include "rsa_locl.h" |
| 74 | 71 | ||
| @@ -156,32 +153,6 @@ static void pkey_rsa_cleanup(EVP_PKEY_CTX *ctx) | |||
| 156 | OPENSSL_free(rctx); | 153 | OPENSSL_free(rctx); |
| 157 | } | 154 | } |
| 158 | } | 155 | } |
| 159 | #ifdef OPENSSL_FIPS | ||
| 160 | /* FIP checker. Return value indicates status of context parameters: | ||
| 161 | * 1 : redirect to FIPS. | ||
| 162 | * 0 : don't redirect to FIPS. | ||
| 163 | * -1 : illegal operation in FIPS mode. | ||
| 164 | */ | ||
| 165 | |||
| 166 | static int pkey_fips_check_ctx(EVP_PKEY_CTX *ctx) | ||
| 167 | { | ||
| 168 | RSA_PKEY_CTX *rctx = ctx->data; | ||
| 169 | RSA *rsa = ctx->pkey->pkey.rsa; | ||
| 170 | int rv = -1; | ||
| 171 | if (!FIPS_mode()) | ||
| 172 | return 0; | ||
| 173 | if (rsa->flags & RSA_FLAG_NON_FIPS_ALLOW) | ||
| 174 | rv = 0; | ||
| 175 | if (!(rsa->meth->flags & RSA_FLAG_FIPS_METHOD) && rv) | ||
| 176 | return -1; | ||
| 177 | if (rctx->md && !(rctx->md->flags & EVP_MD_FLAG_FIPS)) | ||
| 178 | return rv; | ||
| 179 | if (rctx->mgf1md && !(rctx->mgf1md->flags & EVP_MD_FLAG_FIPS)) | ||
| 180 | return rv; | ||
| 181 | return 1; | ||
| 182 | } | ||
| 183 | #endif | ||
| 184 | |||
| 185 | static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, | 156 | static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, |
| 186 | const unsigned char *tbs, size_t tbslen) | 157 | const unsigned char *tbs, size_t tbslen) |
| 187 | { | 158 | { |
| @@ -189,15 +160,6 @@ static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, | |||
| 189 | RSA_PKEY_CTX *rctx = ctx->data; | 160 | RSA_PKEY_CTX *rctx = ctx->data; |
| 190 | RSA *rsa = ctx->pkey->pkey.rsa; | 161 | RSA *rsa = ctx->pkey->pkey.rsa; |
| 191 | 162 | ||
| 192 | #ifdef OPENSSL_FIPS | ||
| 193 | ret = pkey_fips_check_ctx(ctx); | ||
| 194 | if (ret < 0) | ||
| 195 | { | ||
| 196 | RSAerr(RSA_F_PKEY_RSA_SIGN, RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE); | ||
| 197 | return -1; | ||
| 198 | } | ||
| 199 | #endif | ||
| 200 | |||
| 201 | if (rctx->md) | 163 | if (rctx->md) |
| 202 | { | 164 | { |
| 203 | if (tbslen != (size_t)EVP_MD_size(rctx->md)) | 165 | if (tbslen != (size_t)EVP_MD_size(rctx->md)) |
| @@ -206,22 +168,6 @@ static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, | |||
| 206 | RSA_R_INVALID_DIGEST_LENGTH); | 168 | RSA_R_INVALID_DIGEST_LENGTH); |
| 207 | return -1; | 169 | return -1; |
| 208 | } | 170 | } |
| 209 | #ifdef OPENSSL_FIPS | ||
| 210 | if (ret > 0) | ||
| 211 | { | ||
| 212 | unsigned int slen; | ||
| 213 | ret = FIPS_rsa_sign_digest(rsa, tbs, tbslen, rctx->md, | ||
| 214 | rctx->pad_mode, | ||
| 215 | rctx->saltlen, | ||
| 216 | rctx->mgf1md, | ||
| 217 | sig, &slen); | ||
| 218 | if (ret > 0) | ||
| 219 | *siglen = slen; | ||
| 220 | else | ||
| 221 | *siglen = 0; | ||
| 222 | return ret; | ||
| 223 | } | ||
| 224 | #endif | ||
| 225 | 171 | ||
| 226 | if (EVP_MD_type(rctx->md) == NID_mdc2) | 172 | if (EVP_MD_type(rctx->md) == NID_mdc2) |
| 227 | { | 173 | { |
| @@ -343,30 +289,8 @@ static int pkey_rsa_verify(EVP_PKEY_CTX *ctx, | |||
| 343 | RSA_PKEY_CTX *rctx = ctx->data; | 289 | RSA_PKEY_CTX *rctx = ctx->data; |
| 344 | RSA *rsa = ctx->pkey->pkey.rsa; | 290 | RSA *rsa = ctx->pkey->pkey.rsa; |
| 345 | size_t rslen; | 291 | size_t rslen; |
| 346 | #ifdef OPENSSL_FIPS | ||
| 347 | int rv; | ||
| 348 | rv = pkey_fips_check_ctx(ctx); | ||
| 349 | if (rv < 0) | ||
| 350 | { | ||
| 351 | RSAerr(RSA_F_PKEY_RSA_VERIFY, RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE); | ||
| 352 | return -1; | ||
| 353 | } | ||
| 354 | #endif | ||
| 355 | if (rctx->md) | 292 | if (rctx->md) |
| 356 | { | 293 | { |
| 357 | #ifdef OPENSSL_FIPS | ||
| 358 | if (rv > 0) | ||
| 359 | { | ||
| 360 | return FIPS_rsa_verify_digest(rsa, | ||
| 361 | tbs, tbslen, | ||
| 362 | rctx->md, | ||
| 363 | rctx->pad_mode, | ||
| 364 | rctx->saltlen, | ||
| 365 | rctx->mgf1md, | ||
| 366 | sig, siglen); | ||
| 367 | |||
| 368 | } | ||
| 369 | #endif | ||
| 370 | if (rctx->pad_mode == RSA_PKCS1_PADDING) | 294 | if (rctx->pad_mode == RSA_PKCS1_PADDING) |
| 371 | return RSA_verify(EVP_MD_type(rctx->md), tbs, tbslen, | 295 | return RSA_verify(EVP_MD_type(rctx->md), tbs, tbslen, |
| 372 | sig, siglen, rsa); | 296 | sig, siglen, rsa); |
diff --git a/src/lib/libcrypto/rsa/rsa_sign.c b/src/lib/libcrypto/rsa/rsa_sign.c index b6f6037ae0..fa3239ab30 100644 --- a/src/lib/libcrypto/rsa/rsa_sign.c +++ b/src/lib/libcrypto/rsa/rsa_sign.c | |||
| @@ -77,14 +77,6 @@ int RSA_sign(int type, const unsigned char *m, unsigned int m_len, | |||
| 77 | const unsigned char *s = NULL; | 77 | const unsigned char *s = NULL; |
| 78 | X509_ALGOR algor; | 78 | X509_ALGOR algor; |
| 79 | ASN1_OCTET_STRING digest; | 79 | ASN1_OCTET_STRING digest; |
| 80 | #ifdef OPENSSL_FIPS | ||
| 81 | if (FIPS_mode() && !(rsa->meth->flags & RSA_FLAG_FIPS_METHOD) | ||
| 82 | && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW)) | ||
| 83 | { | ||
| 84 | RSAerr(RSA_F_RSA_SIGN, RSA_R_NON_FIPS_RSA_METHOD); | ||
| 85 | return 0; | ||
| 86 | } | ||
| 87 | #endif | ||
| 88 | if((rsa->flags & RSA_FLAG_SIGN_VER) && rsa->meth->rsa_sign) | 80 | if((rsa->flags & RSA_FLAG_SIGN_VER) && rsa->meth->rsa_sign) |
| 89 | { | 81 | { |
| 90 | return rsa->meth->rsa_sign(type, m, m_len, | 82 | return rsa->meth->rsa_sign(type, m, m_len, |
| @@ -161,15 +153,6 @@ int int_rsa_verify(int dtype, const unsigned char *m, | |||
| 161 | unsigned char *s; | 153 | unsigned char *s; |
| 162 | X509_SIG *sig=NULL; | 154 | X509_SIG *sig=NULL; |
| 163 | 155 | ||
| 164 | #ifdef OPENSSL_FIPS | ||
| 165 | if (FIPS_mode() && !(rsa->meth->flags & RSA_FLAG_FIPS_METHOD) | ||
| 166 | && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW)) | ||
| 167 | { | ||
| 168 | RSAerr(RSA_F_INT_RSA_VERIFY, RSA_R_NON_FIPS_RSA_METHOD); | ||
| 169 | return 0; | ||
| 170 | } | ||
| 171 | #endif | ||
| 172 | |||
| 173 | if (siglen != (unsigned int)RSA_size(rsa)) | 156 | if (siglen != (unsigned int)RSA_size(rsa)) |
| 174 | { | 157 | { |
| 175 | RSAerr(RSA_F_INT_RSA_VERIFY,RSA_R_WRONG_SIGNATURE_LENGTH); | 158 | RSAerr(RSA_F_INT_RSA_VERIFY,RSA_R_WRONG_SIGNATURE_LENGTH); |
