diff --git a/g10/ChangeLog b/g10/ChangeLog index ed892b167..0fb74e5db 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,10 @@ +2003-02-02 David Shaw + + * keyedit.c (menu_revuid): Properly handle a nonselfsigned uid on + a v4 key (treat as a v4 revocation). + + * import.c (print_import_check): Do not re-utf8 convert user IDs. + 2003-01-27 David Shaw * mainproc.c (list_node): Show signature expiration date in diff --git a/g10/import.c b/g10/import.c index 200b53360..83ae0b804 100644 --- a/g10/import.c +++ b/g10/import.c @@ -555,11 +555,10 @@ print_import_ok (PKT_public_key *pk, PKT_secret_key *sk, unsigned int reason) write_status_text (STATUS_IMPORT_OK, buf); } - void print_import_check (PKT_public_key * pk, PKT_user_id * id) { - char * buf, * p; + char * buf; byte fpr[24]; u32 keyid[2]; size_t i, pos = 0, n; @@ -573,14 +572,11 @@ print_import_check (PKT_public_key * pk, PKT_user_id * id) sprintf (buf+pos, "%02X", fpr[i]); strcat (buf, " "); pos += 1; - p = native_to_utf8 (id->name); - strcat (buf, p); + strcat (buf, id->name); write_status_text (STATUS_IMPORT_CHECK, buf); m_free (buf); - m_free (p); } - /**************** * Try to import one keyblock. Return an error only in serious cases, but * never for an invalid keyblock. It uses log_error to increase the @@ -632,7 +628,7 @@ import_one( const char *fname, KBNODE keyblock, if (opt.interactive) { if(is_status_enabled()) print_import_check (pk, uidnode->pkt->pkt.user_id); - merge_keys_and_selfsig (keyblock); + merge_keys_and_selfsig (keyblock); tty_printf ("\n"); show_basic_key_info (keyblock); tty_printf ("\n"); diff --git a/g10/keyedit.c b/g10/keyedit.c index e431bc1fc..9a7d1f2a7 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -3352,8 +3352,8 @@ menu_revuid( KBNODE pub_keyblock, KBNODE sec_keyblock ) probably be safe to use v4 revocations everywhere. -ds */ for( node = pub_keyblock; node; node = node->next ) - if(node->pkt->pkttype==PKT_USER_ID && - node->pkt->pkt.user_id->selfsigversion>3) + if(pk->version>3 || (node->pkt->pkttype==PKT_USER_ID && + node->pkt->pkt.user_id->selfsigversion>3)) { if((reason = ask_revocation_reason( 0, 1, 4 ))) break; @@ -3413,13 +3413,11 @@ menu_revuid( KBNODE pub_keyblock, KBNODE sec_keyblock ) pkt->pkt.signature = sig; insert_kbnode( node, new_kbnode(pkt), 0 ); - if(!update_trust) - { - /* If the trustdb has an entry for this key+uid then the - trustdb needs an update. */ - if((get_validity(pk,uid)&TRUST_MASK)>=TRUST_UNDEFINED) - update_trust=1; - } + /* If the trustdb has an entry for this key+uid then the + trustdb needs an update. */ + if(!update_trust + && (get_validity(pk,uid)&TRUST_MASK)>=TRUST_UNDEFINED) + update_trust=1; changed = 1; node->pkt->pkt.user_id->is_revoked=1;