mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
gpg: Extend the "sig" record in --list-mode.
* g10/getkey.c (get_user_id_string): Add arg R_NOUID. Change call callers. (get_user_id): Add arg R_NOUID. Change call callers. * g10/mainproc.c (issuer_fpr_string): Make global. * g10/keylist.c (list_keyblock_colon): Print a '?' for a missing key also in --list-mode. Print the "issuer fpr" field also if there is an issuer fingerprint subpacket. -- Scripts used to rely on the "User ID not found" string even in the --with-colons listing. However, that is not a good idea because that string is subject to translations etc. Now we have an explicit way of telling that a key is missing. For example: gpg --list-sigs --with-colons | \ awk -F: '$1=="sig" && $2=="?" {if($13){print $13}else{print $5}}' Prints all keyids or fingerprint of signing keys for which we do not have the key in our local keyring. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
23a714598c
commit
69c3e7acb7
10 changed files with 55 additions and 21 deletions
21
g10/getkey.c
21
g10/getkey.c
|
@ -4119,15 +4119,20 @@ get_seckey_default_or_card (ctrl_t ctrl, PKT_public_key *pk,
|
|||
*********************************************/
|
||||
|
||||
/* Return a string with a printable representation of the user_id.
|
||||
* this string must be freed by xfree. */
|
||||
* this string must be freed by xfree. If R_NOUID is not NULL it is
|
||||
* set to true if a user id was not found; otherwise to false. */
|
||||
static char *
|
||||
get_user_id_string (ctrl_t ctrl, u32 * keyid, int mode, size_t *r_len)
|
||||
get_user_id_string (ctrl_t ctrl, u32 * keyid, int mode, size_t *r_len,
|
||||
int *r_nouid)
|
||||
{
|
||||
user_id_db_t r;
|
||||
keyid_list_t a;
|
||||
int pass = 0;
|
||||
char *p;
|
||||
|
||||
if (r_nouid)
|
||||
*r_nouid = 0;
|
||||
|
||||
/* Try it two times; second pass reads from the database. */
|
||||
do
|
||||
{
|
||||
|
@ -4174,6 +4179,8 @@ get_user_id_string (ctrl_t ctrl, u32 * keyid, int mode, size_t *r_len)
|
|||
else
|
||||
p = xasprintf ("%s [?]", keystr (keyid));
|
||||
|
||||
if (r_nouid)
|
||||
*r_nouid = 1;
|
||||
if (r_len)
|
||||
*r_len = strlen (p);
|
||||
return p;
|
||||
|
@ -4183,7 +4190,7 @@ get_user_id_string (ctrl_t ctrl, u32 * keyid, int mode, size_t *r_len)
|
|||
char *
|
||||
get_user_id_string_native (ctrl_t ctrl, u32 * keyid)
|
||||
{
|
||||
char *p = get_user_id_string (ctrl, keyid, 0, NULL);
|
||||
char *p = get_user_id_string (ctrl, keyid, 0, NULL, NULL);
|
||||
char *p2 = utf8_to_native (p, strlen (p), 0);
|
||||
xfree (p);
|
||||
return p2;
|
||||
|
@ -4193,15 +4200,15 @@ get_user_id_string_native (ctrl_t ctrl, u32 * keyid)
|
|||
char *
|
||||
get_long_user_id_string (ctrl_t ctrl, u32 * keyid)
|
||||
{
|
||||
return get_user_id_string (ctrl, keyid, 1, NULL);
|
||||
return get_user_id_string (ctrl, keyid, 1, NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
/* Please try to use get_user_byfpr instead of this one. */
|
||||
char *
|
||||
get_user_id (ctrl_t ctrl, u32 *keyid, size_t *rn)
|
||||
get_user_id (ctrl_t ctrl, u32 *keyid, size_t *rn, int *r_nouid)
|
||||
{
|
||||
return get_user_id_string (ctrl, keyid, 2, rn);
|
||||
return get_user_id_string (ctrl, keyid, 2, rn, r_nouid);
|
||||
}
|
||||
|
||||
|
||||
|
@ -4210,7 +4217,7 @@ char *
|
|||
get_user_id_native (ctrl_t ctrl, u32 *keyid)
|
||||
{
|
||||
size_t rn;
|
||||
char *p = get_user_id (ctrl, keyid, &rn);
|
||||
char *p = get_user_id (ctrl, keyid, &rn, NULL);
|
||||
char *p2 = utf8_to_native (p, rn, 0);
|
||||
xfree (p);
|
||||
return p2;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue