aboutsummaryrefslogtreecommitdiffstats
path: root/g10/sign.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>1998-03-03 08:43:28 +0000
committerWerner Koch <[email protected]>1998-03-03 08:43:28 +0000
commit0eb5aa6cfd145ececede8e5c6ed34f8bc9674830 (patch)
treee43b97086562b6414382b045d0221e25b243a43a /g10/sign.c
parentbug fixes (diff)
downloadgnupg-0eb5aa6cfd145ececede8e5c6ed34f8bc9674830.tar.gz
gnupg-0eb5aa6cfd145ececede8e5c6ed34f8bc9674830.zip
v0.2.11
Diffstat (limited to 'g10/sign.c')
-rw-r--r--g10/sign.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/g10/sign.c b/g10/sign.c
index e3af619e2..55e5fbdd7 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -854,6 +854,84 @@ edit_keysigs( const char *username )
}
+/****************
+ * Eine public key aus dem keyring entfernen.
+ */
+int
+delete_key( const char *username )
+{
+ int rc = 0;
+ KBNODE keyblock = NULL;
+ KBNODE node;
+ KBPOS kbpos;
+ PKT_public_cert *pkc;
+ u32 pkc_keyid[2];
+ int okay=0;
+
+ /* search the userid */
+ rc = find_keyblock_byname( &kbpos, username );
+ if( rc ) {
+ log_error("%s: user not found\n", username );
+ goto leave;
+ }
+
+ /* read the keyblock */
+ rc = read_keyblock( &kbpos, &keyblock );
+ if( rc ) {
+ log_error("%s: certificate read problem: %s\n", username, g10_errstr(rc) );
+ goto leave;
+ }
+
+ /* get the keyid from the keyblock */
+ node = find_kbnode( keyblock, PKT_PUBLIC_CERT );
+ if( !node ) {
+ log_error("Oops; public key not found anymore!\n");
+ rc = G10ERR_GENERAL;
+ goto leave;
+ }
+
+ pkc = node->pkt->pkt.public_cert;
+ keyid_from_pkc( pkc, pkc_keyid );
+
+ if( opt.batch && opt.answer_yes )
+ okay++;
+ else if( opt.batch )
+ log_error("can't do that in batch-mode without \"--yes\"\n");
+ else {
+ char *p;
+ size_t n;
+
+ tty_printf("pub %4u%c/%08lX %s ",
+ nbits_from_pkc( pkc ),
+ pubkey_letter( pkc->pubkey_algo ),
+ pkc_keyid[1], datestr_from_pkc(pkc) );
+ p = get_user_id( pkc_keyid, &n );
+ tty_print_string( p, n );
+ m_free(p);
+ tty_printf("\n\n");
+
+ p = tty_get("Delete this key from the keyring? ");
+ tty_kill_prompt();
+ if( answer_is_yes(p) )
+ okay++;
+ m_free(p);
+ }
+
+
+ if( okay ) {
+ rc = delete_keyblock( &kbpos );
+ if( rc ) {
+ log_error("delete_keyblock failed: %s\n", g10_errstr(rc) );
+ goto leave;
+ }
+ }
+
+ leave:
+ release_kbnode( keyblock );
+ return rc;
+}
+
+
int
change_passphrase( const char *username )
{