aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2024-06-05 08:00:05 +0000
committerWerner Koch <[email protected]>2024-06-05 09:18:13 +0000
commita2966c9d894a9a92d7000bdd08ab757ab0060ef3 (patch)
treec13e70c77ba7ab0ec98967bb8f4b3082210d84f8
parentgpg-auth: Fix use after free. (diff)
downloadgnupg-a2966c9d894a9a92d7000bdd08ab757ab0060ef3.tar.gz
gnupg-a2966c9d894a9a92d7000bdd08ab757ab0060ef3.zip
gpg: Do not show RENC if no key capabilities are found for a key.
* g10/packet.h (PUBKEY_USAGE_BASIC_MASK): New. * g10/getkey.c (merge_selfsigs_subkey): Mask the default. (merge_selfsigs_main): Ditto.
-rw-r--r--g10/getkey.c6
-rw-r--r--g10/packet.h4
2 files changed, 8 insertions, 2 deletions
diff --git a/g10/getkey.c b/g10/getkey.c
index ce59628a0..1898acb4d 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -3090,7 +3090,8 @@ merge_selfsigs_main (ctrl_t ctrl, kbnode_t keyblock, int *r_revoked,
if (!key_usage)
{
/* No key flags at all: get it from the algo. */
- key_usage = openpgp_pk_algo_usage (pk->pubkey_algo);
+ key_usage = (openpgp_pk_algo_usage (pk->pubkey_algo)
+ & PUBKEY_USAGE_BASIC_MASK);
}
else
{
@@ -3364,7 +3365,8 @@ merge_selfsigs_subkey (ctrl_t ctrl, kbnode_t keyblock, kbnode_t subnode)
if (!key_usage)
{
/* No key flags at all: get it from the algo. */
- key_usage = openpgp_pk_algo_usage (subpk->pubkey_algo);
+ key_usage = (openpgp_pk_algo_usage (subpk->pubkey_algo)
+ & PUBKEY_USAGE_BASIC_MASK);
}
else
{
diff --git a/g10/packet.h b/g10/packet.h
index 39dab96c9..fba2b1423 100644
--- a/g10/packet.h
+++ b/g10/packet.h
@@ -60,6 +60,10 @@
#define PUBKEY_USAGE_RENC 1024 /* Restricted encryption. */
#define PUBKEY_USAGE_TIME 2048 /* Timestamp use. */
+/* The usage bits which can be derived from the algo. */
+#define PUBKEY_USAGE_BASIC_MASK (PUBKEY_USAGE_SIG|PUBKEY_USAGE_ENC\
+ |PUBKEY_USAGE_CERT|PUBKEY_USAGE_AUTH)
+
/* Bitflags to convey hints on what kind of signature is created. */
#define SIGNHINT_KEYSIG 1
#define SIGNHINT_SELFSIG 2