From d3bc48b76b223d297dbb91475ef488477b6ed52f Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Wed, 6 Nov 2002 16:56:59 +0000 Subject: [PATCH] Resolve public key in JOIN for founder auth. Bug #53. --- CHANGES | 5 +++++ apps/silcd/command.c | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/CHANGES b/CHANGES index 064ef49b..73b61248 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,11 @@ Wed Nov 6 17:18:13 EET 2002 Pekka Riikonen * Fixed silc_get_input to NULL-terminate the returned input. Affected file lib/silcutil/silcutil.c. + * Resolve the client's public key in JOIN command if the + founder auth data is being requested but we don't know the + client's public key. Affected file silcd/command.c. + Bug #53. + Mon Nov 4 16:02:59 EET 2002 Pekka Riikonen * Print notify for server opers when backup router comes diff --git a/apps/silcd/command.c b/apps/silcd/command.c index 560fcec1..b1e90854 100644 --- a/apps/silcd/command.c +++ b/apps/silcd/command.c @@ -1737,6 +1737,25 @@ static void silc_server_command_join_channel(SilcServer server, goto out; } + if (auth && auth_len && !client->data.public_key) { + if (cmd->pending == 2) + goto out; + + /* We must retrieve the detached client's public key by sending + GETKEY command. Reprocess this packet after receiving the key */ + clidp = silc_id_payload_encode(client_id, SILC_ID_CLIENT); + silc_server_send_command(server, cmd->sock, + SILC_COMMAND_GETKEY, ++server->cmd_ident, + 1, 1, clidp->data, clidp->len); + silc_buffer_free(clidp); + silc_server_command_pending(server, SILC_COMMAND_GETKEY, + server->cmd_ident, + silc_server_command_join, + silc_server_command_dup(cmd)); + cmd->pending = 2; + goto out; + } + cmd->pending = FALSE; } -- 2.24.0