summaryrefslogtreecommitdiffstats
path: root/crypto/ffc
diff options
context:
space:
mode:
authorShane Lontis <shane.lontis@oracle.com>2020-08-29 18:03:17 +1000
committerMatt Caswell <matt@openssl.org>2020-09-18 14:20:39 +0100
commit49ed5ba8f62875074f04417189147fd3dda072ab (patch)
treeec3fb443c1027ec8ffbb98f5138eade6c31e86c0 /crypto/ffc
parent16fbda848d9fa3a2ca31bc168680f246a8edcc95 (diff)
fix provider signatures
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/12745)
Diffstat (limited to 'crypto/ffc')
-rw-r--r--crypto/ffc/ffc_params_generate.c47
1 files changed, 34 insertions, 13 deletions
diff --git a/crypto/ffc/ffc_params_generate.c b/crypto/ffc/ffc_params_generate.c
index 03b209ebad..1fe8e4a6a5 100644
--- a/crypto/ffc/ffc_params_generate.c
+++ b/crypto/ffc/ffc_params_generate.c
@@ -37,38 +37,59 @@
* Verify that the passed in L, N pair for DH or DSA is valid.
* Returns 0 if invalid, otherwise it returns the security strength.
*/
+
+#ifdef FIPS_MODULE
+static int ffc_validate_LN(size_t L, size_t N, int type, int verify)
+{
+ if (type == FFC_PARAM_TYPE_DH) {
+ /* Valid DH L,N parameters from SP800-56Ar3 5.5.1 Table 1 */
+ if (L == 2048 && (N == 224 || N == 256))
+ return 112;
+# ifndef OPENSSL_NO_DH
+ DHerr(0, DH_R_BAD_FFC_PARAMETERS);
+# endif
+ } else if (type == FFC_PARAM_TYPE_DSA) {
+ /* Valid DSA L,N parameters from FIPS 186-4 Section 4.2 */
+ /* In fips mode 1024/160 can only be used for verification */
+ if (verify && L == 1024 && N == 160)
+ return 80;
+ if (L == 2048 && (N == 224 || N == 256))
+ return 112;
+ if (L == 3072 && N == 256)
+ return 128;
+# ifndef OPENSSL_NO_DSA
+ DSAerr(0, DSA_R_BAD_FFC_PARAMETERS);
+# endif
+ }
+ return 0;
+}
+#else
static int ffc_validate_LN(size_t L, size_t N, int type, int verify)
{
if (type == FFC_PARAM_TYPE_DH) {
-#ifndef FIPS_MODULE
/* Allow legacy 1024/160 in non fips mode */
if (L == 1024 && N == 160)
return 80;
-#endif
/* Valid DH L,N parameters from SP800-56Ar3 5.5.1 Table 1 */
if (L == 2048 && (N == 224 || N == 256))
return 112;
-#ifndef OPENSSL_NO_DH
+# ifndef OPENSSL_NO_DH
DHerr(0, DH_R_BAD_FFC_PARAMETERS);
-#endif
+# endif
} else if (type == FFC_PARAM_TYPE_DSA) {
- /* Valid DSA L,N parameters from FIPS 186-4 Section 4.2 */
-#ifdef FIPS_MODULE
- /* In fips mode 1024/160 can only be used for verification */
- if (verify)
-#endif
- if (L == 1024 && N == 160)
- return 80;
+ if (L == 1024 && N == 160)
+ return 80;
if (L == 2048 && (N == 224 || N == 256))
return 112;
if (L == 3072 && N == 256)
return 128;
-#ifndef OPENSSL_NO_DSA
+# ifndef OPENSSL_NO_DSA
DSAerr(0, DSA_R_BAD_FFC_PARAMETERS);
-#endif
+# endif
}
return 0;
}
+#endif /* FIPS_MODULE */
/* FIPS186-4 A.2.1 Unverifiable Generation of Generator g */
static int generate_unverifiable_g(BN_CTX *ctx, BN_MONT_CTX *mont, BIGNUM *g,