SilcPublicKey local_pubkey;
SilcSILCPublicKey silc_pubkey;
SilcUInt16 port;
- SILC_SERVER_REC *server;
+ SILC_SERVER_REC *server = NULL;
const char *hostname, *ip;
unsigned char *pk;
SilcUInt32 pk_len;
"server" : "client");
int i;
+ server = (SILC_SERVER_REC*)conn->context;
if (conn_type != SILC_CONN_CLIENT) {
- server = (SILC_SERVER_REC*)conn->context;
SILC_VERIFY(server);
if (!server) {
if (completion)
}
}
+ /* If we have pending public key prompt already up */
+ if (server && server->prompt_op) {
+ silc_async_abort(server->prompt_op, NULL, NULL);
+ server->prompt_op = NULL;
+ }
+
if (silc_pkcs_get_type(public_key) != SILC_PKCS_SILC) {
printformat_module("fe-common/silc", NULL, NULL,
MSGLEVEL_CRAP, SILCTXT_PUBKEY_UNSUPPORTED,
silc_pubkey->identifier.realname,
silc_pubkey->identifier.email ?
silc_pubkey->identifier.email : "");
+ else if (conn_type == SILC_CONN_CLIENT &&
+ (silc_pubkey->identifier.realname ||
+ silc_pubkey->identifier.email))
+ printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP,
+ SILCTXT_PUBKEY_RECEIVED_CLIENT, "",
+ 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,
format = format_get_text("fe-common/silc", NULL, NULL, NULL,
SILCTXT_PUBKEY_ACCEPT);
silc_keyboard_entry_redirect(verify_public_key_completion,
- format, 0, verify, &server->prompt_op);
+ format, 0, verify,
+ server ? &server->prompt_op : NULL);
g_free(format);
silc_free(fingerprint);
silc_free(babbleprint);
silc_pubkey->identifier.realname,
silc_pubkey->identifier.email ?
silc_pubkey->identifier.email : "");
+ else if (conn_type == SILC_CONN_CLIENT &&
+ (silc_pubkey->identifier.realname ||
+ silc_pubkey->identifier.email))
+ printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP,
+ SILCTXT_PUBKEY_RECEIVED_CLIENT, "",
+ 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,
format = format_get_text("fe-common/silc", NULL, NULL, NULL,
SILCTXT_PUBKEY_ACCEPT_ANYWAY);
silc_keyboard_entry_redirect(verify_public_key_completion,
- format, 0, verify, &server->prompt_op);
+ format, 0, verify,
+ server ? &server->prompt_op : NULL);
+
g_free(format);
silc_free(fingerprint);
silc_free(babbleprint);
silc_pubkey->identifier.realname,
silc_pubkey->identifier.email ?
silc_pubkey->identifier.email : "");
+ else if (conn_type == SILC_CONN_CLIENT &&
+ (silc_pubkey->identifier.realname ||
+ silc_pubkey->identifier.email))
+ printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP,
+ SILCTXT_PUBKEY_RECEIVED_CLIENT, "",
+ 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,
format = format_get_text("fe-common/silc", NULL, NULL, NULL,
SILCTXT_PUBKEY_ACCEPT_ANYWAY);
silc_keyboard_entry_redirect(verify_public_key_completion,
- format, 0, verify, &server->prompt_op);
+ format, 0, verify,
+ server ? &server->prompt_op : NULL);
g_free(format);
silc_free(fingerprint);
silc_free(babbleprint);
silc_pubkey->identifier.realname,
silc_pubkey->identifier.email ?
silc_pubkey->identifier.email : "");
+ else if (conn_type == SILC_CONN_CLIENT &&
+ (silc_pubkey->identifier.realname ||
+ silc_pubkey->identifier.email))
+ printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP,
+ SILCTXT_PUBKEY_RECEIVED_CLIENT, "",
+ 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,
format = format_get_text("fe-common/silc", NULL, NULL, NULL,
SILCTXT_PUBKEY_ACCEPT_ANYWAY);
silc_keyboard_entry_redirect(verify_public_key_completion,
- format, 0, verify, &server->prompt_op);
+ format, 0, verify,
+ server ? &server->prompt_op : NULL);
g_free(format);
silc_free(fingerprint);
silc_free(babbleprint);