Page MenuHome GnuPG

gnupg_show_full_openpgp_key_flags.patch

Authored By
stm
Jan 7 2018, 9:39 AM
Size
4 KB
Subscribers
None

gnupg_show_full_openpgp_key_flags.patch

diff --git a/g10/getkey.c b/g10/getkey.c
index dabd052e0..719ea0104 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -2403,12 +2403,24 @@ parse_key_usage (PKT_signature * sig)
flags &= ~(0x04 | 0x08);
}
+ if (flags & 0x10)
+ {
+ key_usage |= PUBKEY_USAGE_SPLIT;
+ flags &= ~0x10;
+ }
+
if (flags & 0x20)
{
key_usage |= PUBKEY_USAGE_AUTH;
flags &= ~0x20;
}
+
+ if (flags & 0x80)
+ {
+ key_usage |= PUBKEY_USAGE_GROUP;
+ flags &= ~0x80;
+ }
+
if (flags)
key_usage |= PUBKEY_USAGE_UNKNOWN;
diff --git a/g10/keyid.c b/g10/keyid.c
index a9034ee46..bd688f0d3 100644
--- a/g10/keyid.c
+++ b/g10/keyid.c
@@ -709,6 +709,12 @@ usagestr_from_pk (PKT_public_key *pk, int fill)
if ( (use & PUBKEY_USAGE_AUTH) )
buffer[i++] = 'A';
+ if ( (use & PUBKEY_USAGE_SPLIT) )
+ buffer[i++] = 'P';
+
+ if ( (use & PUBKEY_USAGE_GROUP) )
+ buffer[i++] = 'G';
+
while (fill && i < 4)
buffer[i++] = ' ';
diff --git a/g10/keylist.c b/g10/keylist.c
index bcbad450a..a2b367dd6 100644
--- a/g10/keylist.c
+++ b/g10/keylist.c
@@ -764,7 +764,7 @@ print_capabilities (ctrl_t ctrl, PKT_public_key *pk, KBNODE keyblock)
{
/* Figure out the usable capabilities. */
KBNODE k;
- int enc = 0, sign = 0, cert = 0, auth = 0, disabled = 0;
+ int enc = 0, sign = 0, cert = 0, auth = 0, split = 0, group = 0, disabled = 0;
for (k = keyblock; k; k = k->next)
{
@@ -790,6 +790,10 @@ print_capabilities (ctrl_t ctrl, PKT_public_key *pk, KBNODE keyblock)
cert = 1;
if ((pk->pubkey_usage & PUBKEY_USAGE_AUTH))
auth = 1;
+ if ((pk->pubkey_usage & PUBKEY_USAGE_SPLIT))
+ split = 1;
+ if ((pk->pubkey_usage & PUBKEY_USAGE_GROUP))
+ group = 1;
}
}
}
@@ -801,6 +805,10 @@ print_capabilities (ctrl_t ctrl, PKT_public_key *pk, KBNODE keyblock)
es_putc ('C', es_stdout);
if (auth)
es_putc ('A', es_stdout);
+ if (split)
+ es_putc ('P', es_stdout);
+ if (group)
+ es_putc ('G', es_stdout);
if (disabled)
es_putc ('D', es_stdout);
}
diff --git a/g10/misc.c b/g10/misc.c
index 9016d2770..487830f23 100644
--- a/g10/misc.c
+++ b/g10/misc.c
@@ -657,28 +657,32 @@ openpgp_pk_algo_usage ( int algo )
switch ( algo ) {
case PUBKEY_ALGO_RSA:
use = (PUBKEY_USAGE_CERT | PUBKEY_USAGE_SIG
- | PUBKEY_USAGE_ENC | PUBKEY_USAGE_AUTH);
+ | PUBKEY_USAGE_ENC | PUBKEY_USAGE_AUTH | PUBKEY_USAGE_SPLIT
+ | PUBKEY_USAGE_GROUP);
break;
case PUBKEY_ALGO_RSA_E:
case PUBKEY_ALGO_ECDH:
- use = PUBKEY_USAGE_ENC;
+ use = PUBKEY_USAGE_ENC | PUBKEY_USAGE_SPLIT | PUBKEY_USAGE_GROUP;
break;
case PUBKEY_ALGO_RSA_S:
- use = PUBKEY_USAGE_CERT | PUBKEY_USAGE_SIG;
+ use = PUBKEY_USAGE_CERT | PUBKEY_USAGE_SIG | PUBKEY_USAGE_SPLIT
+ | PUBKEY_USAGE_GROUP;
break;
case PUBKEY_ALGO_ELGAMAL:
if (RFC2440)
- use = PUBKEY_USAGE_ENC;
+ use = PUBKEY_USAGE_ENC | PUBKEY_USAGE_SPLIT | PUBKEY_USAGE_GROUP;
break;
case PUBKEY_ALGO_ELGAMAL_E:
- use = PUBKEY_USAGE_ENC;
+ use = PUBKEY_USAGE_ENC | PUBKEY_USAGE_SPLIT | PUBKEY_USAGE_GROUP;
break;
case PUBKEY_ALGO_DSA:
- use = PUBKEY_USAGE_CERT | PUBKEY_USAGE_SIG | PUBKEY_USAGE_AUTH;
+ use = PUBKEY_USAGE_CERT | PUBKEY_USAGE_SIG | PUBKEY_USAGE_AUTH
+ | PUBKEY_USAGE_SPLIT | PUBKEY_USAGE_GROUP;
break;
case PUBKEY_ALGO_ECDSA:
case PUBKEY_ALGO_EDDSA:
- use = PUBKEY_USAGE_CERT | PUBKEY_USAGE_SIG | PUBKEY_USAGE_AUTH;
+ use = PUBKEY_USAGE_CERT | PUBKEY_USAGE_SIG | PUBKEY_USAGE_AUTH
+ | PUBKEY_USAGE_SPLIT | PUBKEY_USAGE_GROUP;
default:
break;
}
diff --git a/g10/packet.h b/g10/packet.h
index 8dca88b75..d8b408ab1 100644
--- a/g10/packet.h
+++ b/g10/packet.h
@@ -45,10 +45,13 @@
#define PUBKEY_USAGE_ENC GCRY_PK_USAGE_ENCR /* Good for encryption. */
#define PUBKEY_USAGE_CERT GCRY_PK_USAGE_CERT /* Also good to certify keys.*/
#define PUBKEY_USAGE_AUTH GCRY_PK_USAGE_AUTH /* Good for authentication. */
+#define PUBKEY_USAGE_SPLIT 16 /* Has been split or shared. */
+#define PUBKEY_USAGE_GROUP 32 /* Group key, more than one person. */
#define PUBKEY_USAGE_UNKNOWN GCRY_PK_USAGE_UNKN /* Unknown usage flag. */
#define PUBKEY_USAGE_NONE 256 /* No usage given. */
#if (GCRY_PK_USAGE_SIGN | GCRY_PK_USAGE_ENCR | GCRY_PK_USAGE_CERT \
- | GCRY_PK_USAGE_AUTH | GCRY_PK_USAGE_UNKN) >= 256
+ | GCRY_PK_USAGE_AUTH | PUBKEY_USAGE_SPLIT | PUBKEY_USAGE_GROUP \
+ | GCRY_PK_USAGE_UNKN) >= 256
# error Please choose another value for PUBKEY_USAGE_NONE
#endif

File Metadata

Mime Type
text/x-diff
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
123067

Event Timeline