diff options
author | David Shaw <[email protected]> | 2004-04-15 00:30:05 +0000 |
---|---|---|
committer | David Shaw <[email protected]> | 2004-04-15 00:30:05 +0000 |
commit | 8c4607568d9fde6a13320a2b53e333e58aefaec8 (patch) | |
tree | c706d2b346a72086e220bb4ffed77bb19dd87ac4 /g10/keyedit.c | |
parent | * options.h, import.c, keyserver-internal.h, g10.c, mainproc.c, (diff) | |
download | gnupg-8c4607568d9fde6a13320a2b53e333e58aefaec8.tar.gz gnupg-8c4607568d9fde6a13320a2b53e333e58aefaec8.zip |
* packet.h, getkey.c (fixup_uidnode, merge_selfsigs_subkey): Keep track of
which self-sig we actually chose.
* keyedit.c (menu_expire, menu_set_primary_uid, menu_set_preferences): Use
it here to avoid updating non-used self-sigs and possibly promoting an old
self-sig into consideration again.
Diffstat (limited to 'g10/keyedit.c')
-rw-r--r-- | g10/keyedit.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/g10/keyedit.c b/g10/keyedit.c index 771f4d6d2..c96aeb4ab 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -2872,7 +2872,9 @@ menu_expire( KBNODE pub_keyblock, KBNODE sec_keyblock ) if( keyid[0] == sig->keyid[0] && keyid[1] == sig->keyid[1] && ( (mainkey && uid && uid->created && (sig->sig_class&~3) == 0x10) - || (!mainkey && sig->sig_class == 0x18) ) ) { + || (!mainkey && sig->sig_class == 0x18) ) + && sig->flags.chosen_selfsig ) + { /* this is a selfsignature which is to be replaced */ PKT_signature *newsig; PACKET *newpkt; @@ -3012,8 +3014,10 @@ menu_set_primary_uid ( KBNODE pub_keyblock, KBNODE sec_keyblock ) else if ( main_pk && uid && node->pkt->pkttype == PKT_SIGNATURE ) { PKT_signature *sig = node->pkt->pkt.signature; if ( keyid[0] == sig->keyid[0] && keyid[1] == sig->keyid[1] - && (uid && (sig->sig_class&~3) == 0x10) - && attribute == (uid->attrib_data!=NULL)) { + && (uid && (sig->sig_class&~3) == 0x10) + && attribute == (uid->attrib_data!=NULL) + && sig->flags.chosen_selfsig ) + { if(sig->version < 4) { char *user=utf8_to_native(uid->name,strlen(uid->name),0); @@ -3122,7 +3126,8 @@ menu_set_preferences (KBNODE pub_keyblock, KBNODE sec_keyblock ) && node->pkt->pkttype == PKT_SIGNATURE ) { PKT_signature *sig = node->pkt->pkt.signature; if ( keyid[0] == sig->keyid[0] && keyid[1] == sig->keyid[1] - && (uid && (sig->sig_class&~3) == 0x10) ) { + && (uid && (sig->sig_class&~3) == 0x10) + && sig->flags.chosen_selfsig ) { if( sig->version < 4 ) { char *user=utf8_to_native(uid->name,strlen(uid->name),0); |