diff options
author | Werner Koch <[email protected]> | 2025-02-06 16:45:23 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2025-02-06 16:45:23 +0000 |
commit | 00c31f8b04a41dcf1ee8f57e1225e12c999a37a9 (patch) | |
tree | ea996854fe8fbcff8d805c3ff086361a3f1a06d1 /g10 | |
parent | kbx: Fix for building without keyboxd. (diff) | |
download | gnupg-00c31f8b04a41dcf1ee8f57e1225e12c999a37a9.tar.gz gnupg-00c31f8b04a41dcf1ee8f57e1225e12c999a37a9.zip |
gpg: New option --disable-pqc-encryption.
* g10/options.h (flags): Add field disable_pqc_encryption.
* g10/gpg.c (oDisablePQCEncryption): New.
(opts): Add --option.
(main): Set option.
* g10/getkey.c (finish_lookup): Skip subkeys if option is set.
--
This option can be used to avoid the use of Kyber encryption subkeys
if this does not make sense (i.e. protection of local files).
Diffstat (limited to 'g10')
-rw-r--r-- | g10/getkey.c | 8 | ||||
-rw-r--r-- | g10/gpg.c | 7 | ||||
-rw-r--r-- | g10/options.h | 3 |
3 files changed, 18 insertions, 0 deletions
diff --git a/g10/getkey.c b/g10/getkey.c index a5effb606..a841aeec8 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -3804,6 +3804,14 @@ finish_lookup (kbnode_t keyblock, unsigned int req_usage, int want_exact, req_usage, pk->pubkey_usage); continue; } + if (opt.flags.disable_pqc_encryption + && pk->pubkey_algo == PUBKEY_ALGO_KYBER) + { + if (DBG_LOOKUP) + log_debug ("\tsubkey skipped due to option %s\n", + "--disable-pqc-encryption"); + continue; + } n_subkeys++; if (pk->flags.revoked) @@ -461,6 +461,7 @@ enum cmd_and_opt_values oAssertPubkeyAlgo, oKbxBufferSize, oRequirePQCEncryption, + oDisablePQCEncryption, oProcAllSigs, oNoop @@ -907,6 +908,7 @@ static gpgrt_opt_t opts[] = { ARGPARSE_s_s (oDigestAlgo, "digest-algo", "@"), ARGPARSE_s_s (oCertDigestAlgo, "cert-digest-algo", "@"), ARGPARSE_s_n (oRequirePQCEncryption, "require-pqc-encryption", "@"), + ARGPARSE_s_n (oDisablePQCEncryption, "disable-pqc-encryption", "@"), ARGPARSE_header (NULL, N_("Options for unattended use")), @@ -3095,6 +3097,11 @@ main (int argc, char **argv) case oMinRSALength: opt.min_rsa_length = pargs.r.ret_ulong; break; case oRequirePQCEncryption: opt.flags.require_pqc_encryption = 1; + opt.flags.disable_pqc_encryption = 0; + break; + case oDisablePQCEncryption: + if (!opt.flags.require_pqc_encryption) + opt.flags.disable_pqc_encryption = 1; break; case oRFC2440Text: opt.rfc2440_text=1; break; diff --git a/g10/options.h b/g10/options.h index 6f5017196..89f04526f 100644 --- a/g10/options.h +++ b/g10/options.h @@ -308,6 +308,9 @@ struct unsigned int require_compliance:1; /* Fail encryption unless a PQC algorithm is used. */ unsigned int require_pqc_encryption:1; + /* Do not use PQC subkeys for encryption. This is never set if + * require_pqc_encryption is also set. */ + unsigned int disable_pqc_encryption:1; /* Process all signatures even in batch mode. */ unsigned int proc_all_sigs:1; } flags; |