Re: [PATCH 0/4] Differentiate use of non-compliant flags in the SLI

NIIBE Yutaka via Gcrypt-devel <[email protected]>
Newsgroups gmane.comp.encryption.gpg.libgcrypt.devel
Message-ID <[email protected]>
NIIBE Yutaka <[email protected]> wrote:
> Let me apply and push the first two patches firstly.  I'll push these
> two.

Done.

> For the third, it changes the behavior of gcry_pk_random_override_new
> (adding rejection) to require major changes in tests (of the fourth).  I
> wonder if this is appropriate in 1.11.  Let me consider for this.

I would like to apply the patch attached to introduce
GCRY_FIPS_FLAG_REJECT_PK_FLAGS.  The intention is keeping the behavior
of 1.10, so that forthcoming 1.11.1 release won't break things with
existing applications.

Then, let me apply yours of:

	[PATCH 3/4] cipher, visibility: Differentiate use of random-override in the SLI

After that, let me fix it with GCRY_FIPS_FLAG_REJECT_PK_FLAGS, so that
your fourth patch is not needed for 1.11.

The idea here is that:

  * For existing FIPS conscious applications with libgcrypt, it assumes
    old API of static indicator; That is, use of
    GCRYCTL_FIPS_SERVICE_INDICATOR_CIPHER,
    GCRYCTL_FIPS_SERVICE_INDICATOR_MAC,
    GCRYCTL_FIPS_SERVICE_INDICATOR_MD,
    GCRYCTL_FIPS_SERVICE_INDICATOR_KDF,
    GCRYCTL_FIPS_SERVICE_INDICATOR_FUNCTION, and
    GCRYCTL_FIPS_SERVICE_INDICATOR_PK_FLAGS.  It has the behaviors of
    rejecting non-compliant use in some places in supported functions,
    but not for other places.  It is OK with old API, non-supported
    functions don't reject (like MD5 can be used).

  * For new FIPS conscious applications, there are new API to check the
    indicator.  We are now introducing new API for 1.12, and
    forward-compatible implementation in 1.11.

  * Existing tests in tests/ are basically with old API (except
    t-fips-service-ind).  Update will be done in master for 1.12 after
    1.11 branch will be created.
--

_______________________________________________
Gcrypt-devel mailing list
[email protected]
https://lists.gnupg.org/mailman/listinfo/gcrypt-devel
0001-fips-cipher-Add-GCRY_FIPS_FLAG_REJECT_PK_FLAGS.patch (text/x-diff, 2.6 KB)
>From 0414e126b939f0b11ecf441908d923e87c1caf02 Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <[email protected]>
Date: Thu, 6 Mar 2025 08:57:51 +0900
Subject: [PATCH 1/4] fips,cipher: Add GCRY_FIPS_FLAG_REJECT_PK_FLAGS.

* src/gcrypt.h.in (GCRY_FIPS_FLAG_REJECT_PK_FLAGS): New.
* cipher/pubkey-util.c (_gcry_pk_util_parse_flaglist): Keep the
behavior of 1.10.
* cipher/rsa.c (rsa_decrypt, rsa_sign): Likewise.

--

GnuPG-bug-id: 7338
Signed-off-by: NIIBE Yutaka <[email protected]>
---
 cipher/pubkey-util.c | 2 +-
 cipher/rsa.c         | 4 ++--
 src/gcrypt.h.in      | 3 ++-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/cipher/pubkey-util.c b/cipher/pubkey-util.c
index 9c927638..e7355569 100644
--- a/cipher/pubkey-util.c
+++ b/cipher/pubkey-util.c
@@ -202,7 +202,7 @@ _gcry_pk_util_parse_flaglist (gcry_sexp_t list,
 
   if (fips_mode () && igninvflag)
     {
-      if (fips_check_rejection (GCRY_FIPS_FLAG_REJECT_PK))
+      if (fips_check_rejection (GCRY_FIPS_FLAG_REJECT_PK_FLAGS))
         rc = GPG_ERR_INV_FLAG;
       else
         fips_service_indicator_mark_non_compliant ();
diff --git a/cipher/rsa.c b/cipher/rsa.c
index dce76414..7e086df4 100644
--- a/cipher/rsa.c
+++ b/cipher/rsa.c
@@ -1504,7 +1504,7 @@ rsa_decrypt (gcry_sexp_t *r_plain, gcry_sexp_t s_data, gcry_sexp_t keyparms)
     {
       if (fips_mode ())
         {
-          if (fips_check_rejection (GCRY_FIPS_FLAG_REJECT_PK))
+          if (fips_check_rejection (GCRY_FIPS_FLAG_REJECT_PK_FLAGS))
             {
               rc = GPG_ERR_INV_FLAG;
               goto leave;
@@ -1649,7 +1649,7 @@ rsa_sign (gcry_sexp_t *r_sig, gcry_sexp_t s_data, gcry_sexp_t keyparms)
     {
       if (fips_mode ())
         {
-          if (fips_check_rejection (GCRY_FIPS_FLAG_REJECT_PK))
+          if (fips_check_rejection (GCRY_FIPS_FLAG_REJECT_PK_FLAGS))
             {
               rc = GPG_ERR_INV_FLAG;
               goto leave;
diff --git a/src/gcrypt.h.in b/src/gcrypt.h.in
index fe3db16a..a282268d 100644
--- a/src/gcrypt.h.in
+++ b/src/gcrypt.h.in
@@ -1991,11 +1991,12 @@ char *gcry_get_config (int mode, const char *what);
 #define GCRY_FIPS_FLAG_REJECT_CIPHER_MODE   (1 << 8)
 /**/
 #define GCRY_FIPS_FLAG_REJECT_PK_ECC_K      (1 << 10)
+#define GCRY_FIPS_FLAG_REJECT_PK_FLAGS      (1 << 11)
 
 #define GCRY_FIPS_FLAG_REJECT_MD \
   (GCRY_FIPS_FLAG_REJECT_MD_MD5 | GCRY_FIPS_FLAG_REJECT_MD_OTHERS)
 
-/* Note: Don't reject MD5, PK MD, PK GOST and PK SM2 */
+/* Note: Don't reject MD5, PK MD, PK GOST, PK SM2, PK ECC K, and PK FLAGS */
 #define GCRY_FIPS_FLAG_REJECT_COMPAT110 \
   (GCRY_FIPS_FLAG_REJECT_MD_OTHERS      \
    | GCRY_FIPS_FLAG_REJECT_MAC          \
-- 
2.39.5
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.