From b0c4e67ab5c5047716f1794473a8e2d54a9f4ad9 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Tue, 23 Jan 2007 14:53:24 +0000 Subject: [PATCH] Added SILC Public Key version 2 support. --- apps/irssi/src/fe-common/silc/module-formats.c | 1 + apps/irssi/src/fe-common/silc/module-formats.h | 1 + apps/irssi/src/silc/core/silc-channels.c | 4 ++++ apps/irssi/src/silc/core/silc-servers.c | 13 +++++++------ lib/silcapputil/silcapputil.c | 11 ++++++++--- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/apps/irssi/src/fe-common/silc/module-formats.c b/apps/irssi/src/fe-common/silc/module-formats.c index ce7c5012..2171d607 100644 --- a/apps/irssi/src/fe-common/silc/module-formats.c +++ b/apps/irssi/src/fe-common/silc/module-formats.c @@ -246,6 +246,7 @@ FORMAT_REC fecommon_silc_formats[] = { { "lstkey_file", "Public key file : $0", 1, { 0 } }, { "lstkey_alg", "Algorithm : $0", 1, { 0 } }, + { "lstkey_ver", "Version : $0", 1, { 0 } }, { "lstkey_bits", "Key length (bits) : $0", 1, { 1 } }, { "lstkey_rn", "Real name : $0", 1, { 0 } }, { "lstkey_un", "Username : $0", 1, { 0 } }, diff --git a/apps/irssi/src/fe-common/silc/module-formats.h b/apps/irssi/src/fe-common/silc/module-formats.h index 2c4c064b..bb5666ad 100644 --- a/apps/irssi/src/fe-common/silc/module-formats.h +++ b/apps/irssi/src/fe-common/silc/module-formats.h @@ -239,6 +239,7 @@ enum { SILCTXT_LISTKEY_PUB_FILE, SILCTXT_LISTKEY_PUB_ALG, + SILCTXT_LISTKEY_PUB_VER, SILCTXT_LISTKEY_PUB_BITS, SILCTXT_LISTKEY_PUB_RN, SILCTXT_LISTKEY_PUB_UN, diff --git a/apps/irssi/src/silc/core/silc-channels.c b/apps/irssi/src/silc/core/silc-channels.c index 7a879746..bcf4099d 100644 --- a/apps/irssi/src/silc/core/silc-channels.c +++ b/apps/irssi/src/silc/core/silc-channels.c @@ -1090,6 +1090,10 @@ void silc_list_key(const char *pub_filename, int verbose) printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_LISTKEY_PUB_BITS, (unsigned int)key_len); + if (ident->version && verbose) + printformat_module("fe-common/silc", NULL, NULL, + MSGLEVEL_CRAP, SILCTXT_LISTKEY_PUB_VER, + ident->version); if (ident->realname && (!is_server_key || verbose)) printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_LISTKEY_PUB_RN, diff --git a/apps/irssi/src/silc/core/silc-servers.c b/apps/irssi/src/silc/core/silc-servers.c index 6f58b5a0..455aeed3 100644 --- a/apps/irssi/src/silc/core/silc-servers.c +++ b/apps/irssi/src/silc/core/silc-servers.c @@ -1,7 +1,7 @@ /* silc-server.c : irssi - Copyright (C) 2000 - 2006 Timo Sirainen + Copyright (C) 2000 - 2007 Timo Sirainen Pekka Riikonen This program is free software; you can redistribute it and/or modify @@ -461,17 +461,18 @@ static void sig_disconnected(SILC_SERVER_REC *server) silc_dlist_uninit(server->ftp_sessions); if (server->conn) { + /* Close connection */ silc_client_close_connection(silc_client, server->conn); - - /* SILC closes the handle */ - g_io_channel_unref(net_sendbuffer_handle(server->handle)); - net_sendbuffer_destroy(server->handle, FALSE); - server->handle = NULL; } else if (server->op) { /* Abort on going connecting (key exchange) */ silc_async_abort(server->op, NULL, NULL); server->op = NULL; } + + /* SILC closes the handle */ + g_io_channel_unref(net_sendbuffer_handle(server->handle)); + net_sendbuffer_destroy(server->handle, FALSE); + server->handle = NULL; } SERVER_REC *silc_server_init_connect(SERVER_CONNECT_REC *conn) diff --git a/lib/silcapputil/silcapputil.c b/lib/silcapputil/silcapputil.c index 32018654..059fbce3 100644 --- a/lib/silcapputil/silcapputil.c +++ b/lib/silcapputil/silcapputil.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 2002 - 2006 Pekka Riikonen + Copyright (C) 2002 - 2007 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,7 +43,7 @@ static char *silc_create_pk_identifier(void) silc_snprintf(email, sizeof(email), "%s@%s", username, hostname); ident = silc_pkcs_silc_encode_identifier(username, hostname, realname, - email, NULL, NULL); + email, NULL, NULL, NULL); if (realname) silc_free(realname); silc_free(hostname); @@ -192,8 +192,11 @@ New pair of keys will be created. Please, answer to following questions.\n\ } } + if (interactive) + printf("\nGenerating the key pair...\n"); + /* Generate keys */ - if (!silc_pkcs_silc_generate_key(alg, "pkcs1-no-oid", key_len_bits, + if (!silc_pkcs_silc_generate_key(alg, key_len_bits, identifier, rng, &public_key, &private_key)) return FALSE; @@ -302,6 +305,8 @@ SilcBool silc_show_public_key(SilcPublicKey public_key) printf("Algorithm : %s\n", silc_pkcs_get_name(public_key)); if (key_len) printf("Key length (bits) : %d\n", (unsigned int)key_len); + if (ident->version) + printf("Version : %s\n", ident->version); if (ident->realname) printf("Real name : %s\n", ident->realname); if (ident->username) -- 2.24.0