From: Pekka Riikonen Date: Thu, 17 May 2007 09:38:47 +0000 (+0000) Subject: Show realname and email from public key during GETKEY verification. X-Git-Tag: silc.toolkit.1.1.beta3~3 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=7d87c334f2441ec55f9dd8da48be0bdae3730e55 Show realname and email from public key during GETKEY verification. --- diff --git a/CHANGES b/CHANGES index c1bdcd67..55fb3e5d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,10 @@ +Thu May 17 11:57:40 EEST 2007 Pekka Riikonen + + * Show realname and email address from public key when verifying + cached public keys with GETKEY. Affected files are + apps/irssi/src/fe-common/module-formats.[ch] and + apps/irssi/src/silc/core/client_ops.c. + Wed May 16 20:41:04 CEST 2007 Jochen Eisinger * Include SILC Plugin theme. Affected file is apps/irssi/plugin.theme diff --git a/apps/irssi/src/fe-common/silc/module-formats.c b/apps/irssi/src/fe-common/silc/module-formats.c index 4bfe1d27..40c7d789 100644 --- a/apps/irssi/src/fe-common/silc/module-formats.c +++ b/apps/irssi/src/fe-common/silc/module-formats.c @@ -148,6 +148,7 @@ FORMAT_REC fecommon_silc_formats[] = { { "key_agreement_started", "Key agreement is already started with {nick $0}", 1, { 0 } }, { "key_agreement_denied", "Key agreement cannot be started with yourself", 0 }, { "pubkey_received", "Received {hilight $0} public key", 1, { 0 } }, + { "pubkey_received_client", "Client {hilight $0} ($1 $2)", 3, { 0, 0, 0 } }, { "pubkey_fingerprint", "Fingerprint and babbleprint for the {hilight $0} key are %: $1", 2, { 0, 0 } }, { "pubkey_babbleprint", " $0", 1, { 0 } }, { "pubkey_unsupported", "We don't support {hilight $0} public key type {hilight $1}", 2, { 0, 0 } }, @@ -160,7 +161,8 @@ FORMAT_REC fecommon_silc_formats[] = { { "pubkey_maybe_expired", "It is possible that the key has expired or changed", 0 }, { "pubkey_mitm_attack", "It is also possible that someone is performing a man-in-the-middle attack", 0 }, { "pubkey_notkey", "Server did not return any public key", 0 }, - { "pubkey_verified", "Verified successfully $0 {hilight $1}'s cached public key", 2, { 0, 0 } }, + { "pubkey_verified", "Verified successfully server {hilight $0} cached public key", 1, { 0 } }, + { "pubkey_verified_client", "Verified successfully user {hilight $0}'s ($1 $2) cached public key", 3, { 0, 0, 0 } }, { "pubkey_notverified", "Could not verify $0 {hilight $1}'s public key", 2, { 0, 0 } }, /* Misc messages */ diff --git a/apps/irssi/src/fe-common/silc/module-formats.h b/apps/irssi/src/fe-common/silc/module-formats.h index 8f174be1..4fdae389 100644 --- a/apps/irssi/src/fe-common/silc/module-formats.h +++ b/apps/irssi/src/fe-common/silc/module-formats.h @@ -142,6 +142,7 @@ enum { SILCTXT_KEY_AGREEMENT_ALREADY_STARTED, SILCTXT_KEY_AGREEMENT_SELF_DENIED, SILCTXT_PUBKEY_RECEIVED, + SILCTXT_PUBKEY_RECEIVED_CLIENT, SILCTXT_PUBKEY_FINGERPRINT, SILCTXT_PUBKEY_BABBLEPRINT, SILCTXT_PUBKEY_UNSUPPORTED, @@ -155,6 +156,7 @@ enum { SILCTXT_PUBKEY_MITM_ATTACK, SILCTXT_PUBKEY_NOKEY, SILCTXT_PUBKEY_VERIFIED, + SILCTXT_PUBKEY_VERIFIED_CLIENT, SILCTXT_PUBKEY_NOTVERIFIED, SILCTXT_FILL_4, diff --git a/apps/irssi/src/silc/core/client_ops.c b/apps/irssi/src/silc/core/client_ops.c index 8ce4d2b1..5dc0fb5c 100644 --- a/apps/irssi/src/silc/core/client_ops.c +++ b/apps/irssi/src/silc/core/client_ops.c @@ -1360,10 +1360,26 @@ void silc_getkey_cb(bool success, void *context) char *name = (getkey->id_type == SILC_ID_CLIENT ? ((SilcClientEntry)getkey->entry)->nickname : ((SilcServerEntry)getkey->entry)->server_name); + SilcPublicKey public_key = (getkey->id_type == SILC_ID_CLIENT ? + ((SilcClientEntry)getkey->entry)->public_key : + ((SilcServerEntry)getkey->entry)->public_key); + SilcSILCPublicKey silc_pubkey; + + silc_pubkey = silc_pkcs_get_context(SILC_PKCS_SILC, public_key); if (success) { - printformat_module("fe-common/silc", NULL, NULL, - MSGLEVEL_CRAP, SILCTXT_PUBKEY_VERIFIED, entity, name); + if (getkey->id_type == SILC_ID_CLIENT) + printformat_module("fe-common/silc", NULL, NULL, + MSGLEVEL_CRAP, SILCTXT_PUBKEY_VERIFIED_CLIENT, + name, + silc_pubkey->identifier.realname ? + silc_pubkey->identifier.realname : "", + silc_pubkey->identifier.email ? + silc_pubkey->identifier.email : ""); + else + printformat_module("fe-common/silc", NULL, NULL, + MSGLEVEL_CRAP, SILCTXT_PUBKEY_VERIFIED, + entity, name); } else { printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_PUBKEY_NOTVERIFIED, @@ -2329,6 +2345,7 @@ silc_verify_public_key_internal(SilcClient client, SilcClientConnection conn, char file[256], filename[256], filename2[256], *ipf, *hostf = NULL; char *fingerprint, *babbleprint, *format; SilcPublicKey local_pubkey; + SilcSILCPublicKey silc_pubkey; SilcUInt16 port; const char *hostname, *ip; unsigned char *pk; @@ -2357,6 +2374,8 @@ silc_verify_public_key_internal(SilcClient client, SilcClientConnection conn, return; } + silc_pubkey = silc_pkcs_get_context(SILC_PKCS_SILC, public_key); + pw = getpwuid(getuid()); if (!pw) { if (completion) @@ -2433,6 +2452,13 @@ silc_verify_public_key_internal(SilcClient client, SilcClientConnection conn, printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_PUBKEY_RECEIVED,verify->entity_name ? verify->entity_name : entity); + if (conn_type == SILC_CONN_CLIENT && name && + silc_pubkey->identifier.realname) + printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, + SILCTXT_PUBKEY_RECEIVED_CLIENT, name, + silc_pubkey->identifier.realname, + silc_pubkey->identifier.email ? + silc_pubkey->identifier.email : ""); printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_PUBKEY_FINGERPRINT, entity, fingerprint); printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, @@ -2457,6 +2483,13 @@ silc_verify_public_key_internal(SilcClient client, SilcClientConnection conn, printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_PUBKEY_RECEIVED,verify->entity_name ? verify->entity_name : entity); + if (conn_type == SILC_CONN_CLIENT && name && + silc_pubkey->identifier.realname) + printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, + SILCTXT_PUBKEY_RECEIVED_CLIENT, name, + silc_pubkey->identifier.realname, + silc_pubkey->identifier.email ? + silc_pubkey->identifier.email : ""); printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_PUBKEY_FINGERPRINT, entity, fingerprint); printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, @@ -2480,6 +2513,13 @@ silc_verify_public_key_internal(SilcClient client, SilcClientConnection conn, printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_PUBKEY_RECEIVED,verify->entity_name ? verify->entity_name : entity); + if (conn_type == SILC_CONN_CLIENT && name && + silc_pubkey->identifier.realname) + printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, + SILCTXT_PUBKEY_RECEIVED_CLIENT, name, + silc_pubkey->identifier.realname, + silc_pubkey->identifier.email ? + silc_pubkey->identifier.email : ""); printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_PUBKEY_FINGERPRINT, entity, fingerprint); printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, @@ -2503,6 +2543,13 @@ silc_verify_public_key_internal(SilcClient client, SilcClientConnection conn, printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_PUBKEY_RECEIVED,verify->entity_name ? verify->entity_name : entity); + if (conn_type == SILC_CONN_CLIENT && name && + silc_pubkey->identifier.realname) + printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, + SILCTXT_PUBKEY_RECEIVED_CLIENT, name, + silc_pubkey->identifier.realname, + silc_pubkey->identifier.email ? + silc_pubkey->identifier.email : ""); printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_PUBKEY_FINGERPRINT, entity, fingerprint); printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP,