mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
gpg: Show AEAD preferences
* g10/packet.h (preftype_t): Add PREFTYPE_AEAD. * g10/keyedit.c (show_prefs): Print AEAD preferences. * g10/getkey.c (fixup_uidnode): Set AEAD flags. (merge_selfsigs): Ditto. -- Although we are not able to create such keys we should be abale to show them. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
1dfe71c62b
commit
ab7a0b0702
3 changed files with 49 additions and 5 deletions
23
g10/getkey.c
23
g10/getkey.c
|
@ -2414,8 +2414,8 @@ fixup_uidnode (KBNODE uidnode, KBNODE signode, u32 keycreated)
|
|||
{
|
||||
PKT_user_id *uid = uidnode->pkt->pkt.user_id;
|
||||
PKT_signature *sig = signode->pkt->pkt.signature;
|
||||
const byte *p, *sym, *hash, *zip;
|
||||
size_t n, nsym, nhash, nzip;
|
||||
const byte *p, *sym, *aead, *hash, *zip;
|
||||
size_t n, nsym, naead, nhash, nzip;
|
||||
|
||||
sig->flags.chosen_selfsig = 1;/* We chose this one. */
|
||||
uid->created = 0; /* Not created == invalid. */
|
||||
|
@ -2470,6 +2470,9 @@ fixup_uidnode (KBNODE uidnode, KBNODE signode, u32 keycreated)
|
|||
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_PREF_SYM, &n);
|
||||
sym = p;
|
||||
nsym = p ? n : 0;
|
||||
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_PREF_AEAD, &n);
|
||||
aead = p;
|
||||
naead = p ? n : 0;
|
||||
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_PREF_HASH, &n);
|
||||
hash = p;
|
||||
nhash = p ? n : 0;
|
||||
|
@ -2490,6 +2493,11 @@ fixup_uidnode (KBNODE uidnode, KBNODE signode, u32 keycreated)
|
|||
uid->prefs[n].type = PREFTYPE_SYM;
|
||||
uid->prefs[n].value = *sym++;
|
||||
}
|
||||
for (; naead; naead--, n++)
|
||||
{
|
||||
uid->prefs[n].type = PREFTYPE_AEAD;
|
||||
uid->prefs[n].value = *aead++;
|
||||
}
|
||||
for (; nhash; nhash--, n++)
|
||||
{
|
||||
uid->prefs[n].type = PREFTYPE_HASH;
|
||||
|
@ -2510,6 +2518,12 @@ fixup_uidnode (KBNODE uidnode, KBNODE signode, u32 keycreated)
|
|||
if (p && n && (p[0] & 0x01))
|
||||
uid->flags.mdc = 1;
|
||||
|
||||
/* See whether we have the AEAD feature. */
|
||||
uid->flags.aead = 0;
|
||||
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_FEATURES, &n);
|
||||
if (p && n && (p[0] & 0x02))
|
||||
uid->flags.aead = 1;
|
||||
|
||||
/* And the keyserver modify flag. */
|
||||
uid->flags.ks_modify = 1;
|
||||
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_KS_FLAGS, &n);
|
||||
|
@ -3332,6 +3346,7 @@ merge_selfsigs (ctrl_t ctrl, kbnode_t keyblock)
|
|||
PKT_public_key *main_pk;
|
||||
prefitem_t *prefs;
|
||||
unsigned int mdc_feature;
|
||||
unsigned int aead_feature;
|
||||
|
||||
if (keyblock->pkt->pkttype != PKT_PUBLIC_KEY)
|
||||
{
|
||||
|
@ -3393,7 +3408,7 @@ merge_selfsigs (ctrl_t ctrl, kbnode_t keyblock)
|
|||
* all preferences.
|
||||
* Do a similar thing for the MDC feature flag. */
|
||||
prefs = NULL;
|
||||
mdc_feature = 0;
|
||||
mdc_feature = aead_feature = 0;
|
||||
for (k = keyblock; k && k->pkt->pkttype != PKT_PUBLIC_SUBKEY; k = k->next)
|
||||
{
|
||||
if (k->pkt->pkttype == PKT_USER_ID
|
||||
|
@ -3402,6 +3417,7 @@ merge_selfsigs (ctrl_t ctrl, kbnode_t keyblock)
|
|||
{
|
||||
prefs = k->pkt->pkt.user_id->prefs;
|
||||
mdc_feature = k->pkt->pkt.user_id->flags.mdc;
|
||||
aead_feature = k->pkt->pkt.user_id->flags.aead;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3415,6 +3431,7 @@ merge_selfsigs (ctrl_t ctrl, kbnode_t keyblock)
|
|||
xfree (pk->prefs);
|
||||
pk->prefs = copy_prefs (prefs);
|
||||
pk->flags.mdc = mdc_feature;
|
||||
pk->flags.aead = aead_feature;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue