diff options
author | Sven Moritz Hallberg <sm@khjk.org> | 2008-02-17 02:58:41 +0100 |
---|---|---|
committer | Sven Moritz Hallberg <sm@khjk.org> | 2008-02-17 02:58:41 +0100 |
commit | d0faf626e98cf8a332afac5ac7d61c80dd8d3064 (patch) | |
tree | bca0f1aa8a8e8f8a068153c4c4b65cd34909c73a /otr.c | |
parent | 82e8fe8f36b0c0c53389358dca184f6d12184933 (diff) |
put 'otr forget key' back in, which now works
Diffstat (limited to 'otr.c')
-rw-r--r-- | otr.c | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -126,6 +126,7 @@ void myfgets(char *s, int size, FILE *stream); void yes_keygen(gpointer w, void *data); void yes_forget_fingerprint(gpointer w, void *data); void yes_forget_context(gpointer w, void *data); +void yes_forget_key(gpointer w, void *data); /* helper to make sure accountname and protocol match the incoming "opdata" */ struct im_connection *check_imc(void *opdata, const char *accountname, @@ -898,6 +899,13 @@ void yes_forget_context(gpointer w, void *data) otrl_context_forget(ctx); } +void yes_forget_key(gpointer w, void *data) +{ + OtrlPrivKey *key = (OtrlPrivKey *)data; + + otrl_privkey_forget(key); +} + void cmd_otr_forget(irc_t *irc, char **args) { if(!strcmp(args[1], "fingerprint")) @@ -974,6 +982,23 @@ void cmd_otr_forget(irc_t *irc, char **args) g_free(s); } + else if(!strcmp(args[1], "key")) + { + OtrlPrivKey *key; + char *s; + + key = match_privkey(irc, ((const char **)args)+2); + if(!key) { + /* match_privkey does error messages */ + return; + } + + s = g_strdup_printf("about to forget the private key for %s/%s, are you sure?", + key->accountname, key->protocol); + query_add(irc, NULL, s, yes_forget_key, NULL, key); + g_free(s); + } + else { irc_usermsg(irc, "otr %s: unknown subcommand \"%s\", see \x02help otr forget\x02", |