Blob Blame History Raw
From afab56d09edb525dd794fcb2ae2295ab7f39400a Mon Sep 17 00:00:00 2001
From: Dmitry Belyavskiy <dbelyavs@redhat.com>
Date: Mon, 21 Aug 2023 16:01:48 +0200
Subject: [PATCH 42/48] 0091-FIPS-RSA-encapsulate.patch

Patch-name: 0091-FIPS-RSA-encapsulate.patch
Patch-id: 91
---
 providers/implementations/kem/rsa_kem.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/providers/implementations/kem/rsa_kem.c b/providers/implementations/kem/rsa_kem.c
index 365ae3d7d6..8a6f585d0b 100644
--- a/providers/implementations/kem/rsa_kem.c
+++ b/providers/implementations/kem/rsa_kem.c
@@ -265,6 +265,14 @@ static int rsasve_generate(PROV_RSA_CTX *prsactx,
             *secretlen = nlen;
         return 1;
     }
+
+#ifdef FIPS_MODULE
+    if (nlen < OPENSSL_RSA_FIPS_MIN_MODULUS_BITS/8) {
+        ERR_raise(ERR_LIB_PROV, PROV_R_KEY_SIZE_TOO_SMALL);
+        return 0;
+    }
+#endif
+
     /*
      * Step (2): Generate a random byte string z of nlen bytes where
      *            1 < z < n - 1
@@ -308,6 +316,13 @@ static int rsasve_recover(PROV_RSA_CTX *prsactx,
         return 1;
     }
 
+#ifdef FIPS_MODULE
+    if (nlen < OPENSSL_RSA_FIPS_MIN_MODULUS_BITS/8) {
+        ERR_raise(ERR_LIB_PROV, PROV_R_KEY_SIZE_TOO_SMALL);
+        return 0;
+    }
+#endif
+
     /* Step (2): check the input ciphertext 'inlen' matches the nlen */
     if (inlen != nlen) {
         ERR_raise(ERR_LIB_PROV, PROV_R_BAD_LENGTH);
-- 
2.41.0