diff options
| author | Werner Koch <[email protected]> | 2014-04-15 14:40:48 +0000 |
|---|---|---|
| committer | Werner Koch <[email protected]> | 2014-04-15 17:44:50 +0000 |
| commit | db3b528239c9d56bc71fd2283e07a3f1d91e4fd0 (patch) | |
| tree | 905f77e255d5f32f01590c37a6802dc773de96e6 /g10/getkey.c | |
| parent | gpg: Re-indent a file. (diff) | |
| download | gnupg-db3b528239c9d56bc71fd2283e07a3f1d91e4fd0.tar.gz gnupg-db3b528239c9d56bc71fd2283e07a3f1d91e4fd0.zip | |
gpg: Re-enable secret key deletion.
* g10/call-agent.c (agent_delete_key): New.
* g10/keydb.h (FORMAT_KEYDESC_DELKEY): New.
* g10/passphrase.c (gpg_format_keydesc): Support new format.
* g10/delkey.c (do_delete_key): Add secret key deletion.
Diffstat (limited to 'g10/getkey.c')
| -rw-r--r-- | g10/getkey.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/g10/getkey.c b/g10/getkey.c index 777f3833f..458672a09 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -1237,6 +1237,38 @@ getkey_end (getkey_ctx_t ctx) ************* Merging stuff ******************** ************************************************/ +/* Set the mainkey_id fields for all keys in KEYBLOCK. This is + usually done by merge_selfsigs but at some places we only need the + main_kid but the the full merging. The function also guarantees + that all pk->keyids are computed. */ +void +setup_main_keyids (kbnode_t keyblock) +{ + u32 kid[2], mainkid[2]; + kbnode_t kbctx, node; + PKT_public_key *pk; + + if (keyblock->pkt->pkttype != PKT_PUBLIC_KEY) + BUG (); + pk = keyblock->pkt->pkt.public_key; + + keyid_from_pk (pk, mainkid); + for (kbctx=NULL; (node = walk_kbnode (keyblock, &kbctx, 0)); ) + { + if (!(node->pkt->pkttype == PKT_PUBLIC_KEY + || node->pkt->pkttype == PKT_PUBLIC_SUBKEY)) + continue; + pk = node->pkt->pkt.public_key; + keyid_from_pk (pk, kid); /* Make sure pk->keyid is set. */ + if (!pk->main_keyid[0] && !pk->main_keyid[1]) + { + pk->main_keyid[0] = mainkid[0]; + pk->main_keyid[1] = mainkid[1]; + } + } +} + + /* Merge all self-signatures with the keys. */ void merge_keys_and_selfsig (KBNODE keyblock) |
