(SilcServerKEInternalContext *)protocol->context;
SilcServer server = (SilcServer)ctx->server;
- SILC_LOG_DEBUG(("Start"));
-
- if (silc_verify_public_key_internal(server, ctx->sock,
- (ctx->responder == FALSE ?
- SILC_SOCKET_TYPE_ROUTER:
- ctx->sconfig.ref_ptr ? SILC_SOCKET_TYPE_SERVER :
- ctx->rconfig.ref_ptr ? SILC_SOCKET_TYPE_ROUTER :
- SILC_SOCKET_TYPE_CLIENT),
- pk_data, pk_len, pk_type))
+ SILC_LOG_DEBUG(("Verifying received public key"));
+
+ if (silc_verify_public_key_internal(
+ server, ctx->sock,
+ (ctx->responder == FALSE ?
+ SILC_SOCKET_TYPE_ROUTER:
+ ctx->sconfig.ref_ptr ? SILC_SOCKET_TYPE_SERVER :
+ ctx->rconfig.ref_ptr ? SILC_SOCKET_TYPE_ROUTER :
+ SILC_SOCKET_TYPE_CLIENT),
+ pk_data, pk_len, pk_type))
completion(ske, SILC_SKE_STATUS_OK, completion_context);
else
completion(ske, SILC_SKE_STATUS_UNSUPPORTED_PUBLIC_KEY,
SilcUnknownEntry conn_data;
SilcIDListData idata;
- SILC_LOG_DEBUG(("Setting new key into use"));
+ SILC_LOG_DEBUG(("Setting new keys into use"));
conn_data = silc_calloc(1, sizeof(*conn_data));
idata = (SilcIDListData)conn_data;
(SilcServerKEInternalContext *)protocol->context;
SilcServer server = (SilcServer)ctx->server;
- SILC_LOG_DEBUG(("Start"));
-
if (ske->status != SILC_SKE_STATUS_OK) {
SILC_LOG_ERROR(("Error (%s) during Key Exchange protocol",
silc_ske_map_status(ske->status)));
/* Send Ok to the other end. We will end the protocol as responder
sends Ok to us when we will take the new keys into use. */
if (ctx->responder == FALSE) {
+ SILC_LOG_DEBUG(("Ending key exchange protocol"));
silc_ske_end(ctx->ske);
/* End the protocol on the next round */
SilcServer server = (SilcServer)ctx->server;
SilcSKEStatus status = SILC_SKE_STATUS_OK;
- SILC_LOG_DEBUG(("Start"));
-
if (protocol->state == SILC_PROTOCOL_STATE_UNKNOWN)
protocol->state = SILC_PROTOCOL_STATE_START;
- SILC_LOG_DEBUG(("State=%d", protocol->state));
+ SILC_LOG_DEBUG(("Current protocol state %d", protocol->state));
switch(protocol->state) {
case SILC_PROTOCOL_STATE_START:
if (ctx->responder == TRUE) {
/* Start the key exchange by processing the received security
properties packet from initiator. */
+ SILC_LOG_DEBUG(("Process security property list (KE)"));
status = silc_ske_responder_start(ske, ctx->rng, ctx->sock,
silc_version_string,
ctx->packet->buffer, ctx->flags);
} else {
SilcSKEStartPayload *start_payload;
+ SILC_LOG_DEBUG(("Send security property list (KE)"));
+
/* Assemble security properties. */
silc_ske_assemble_security_properties(ske, ctx->flags,
silc_version_string,
*/
if (ctx->responder == TRUE) {
/* Sends the selected security properties to the initiator. */
+ SILC_LOG_DEBUG(("Send security property list reply (KE)"));
status = silc_ske_responder_phase_1(ctx->ske);
} else {
/* Call Phase-1 function. This processes the Key Exchange Start
paylaod reply we just got from the responder. The callback
function will receive the processed payload where we will
save it. */
+ SILC_LOG_DEBUG(("Process security property list reply (KE)"));
status = silc_ske_initiator_phase_1(ctx->ske, ctx->packet->buffer);
}
the initiator. This also creates our parts of the Diffie
Hellman algorithm. The silc_server_protocol_ke_continue
will be called after the public key has been verified. */
+ SILC_LOG_DEBUG(("Process KE1 packet"));
status = silc_ske_responder_phase_2(ctx->ske, ctx->packet->buffer);
} else {
/* Call the Phase-2 function. This creates Diffie Hellman
key exchange parameters and sends our public part inside
Key Exhange 1 Payload to the responder. */
+ SILC_LOG_DEBUG(("Send KE1 packet"));
status = silc_ske_initiator_phase_2(ctx->ske,
server->public_key,
server->private_key,
if (ctx->responder == TRUE) {
/* This creates the key exchange material and sends our
public parts to the initiator inside Key Exchange 2 Payload. */
+ SILC_LOG_DEBUG(("Process KE2 packet"));
status = silc_ske_responder_finish(ctx->ske,
server->public_key,
server->private_key,
/* Finish the protocol. This verifies the Key Exchange 2 payload
sent by responder. The silc_server_protocol_ke_continue will
be called after the public key has been verified. */
+ SILC_LOG_DEBUG(("Send KE2 packet"));
status = silc_ske_initiator_finish(ctx->ske, ctx->packet->buffer);
}
int key_len = silc_cipher_get_key_len(ctx->ske->prop->cipher);
int hash_len = silc_hash_len(ctx->ske->prop->hash);
+ SILC_LOG_DEBUG(("Process computed key material"));
+
/* Process the key material */
keymat = silc_calloc(1, sizeof(*keymat));
status = silc_ske_process_key_material(ctx->ske, 16, key_len, hash_len,
/* Send Ok to the other end if we are responder. If we are initiator
we have sent this already. */
- if (ctx->responder == TRUE)
+ if (ctx->responder == TRUE) {
+ SILC_LOG_DEBUG(("Ending key exchange protocol"));
silc_ske_end(ctx->ske);
+ }
/* Unregister the timeout task since the protocol has ended.
This was the timeout task to be executed if the protocol is
return TRUE;
}
+ SILC_LOG_ERROR(("Error computing signature"));
+
silc_free(*auth_data);
silc_buffer_free(auth);
return FALSE;
remote_auth_len, ske);
}
+ SILC_LOG_DEBUG(("Authentication %s", result ? "successful" : "failed"));
+
return result;
}
(SilcServerConnAuthInternalContext *)protocol->context;
SilcServer server = (SilcServer)ctx->server;
- SILC_LOG_DEBUG(("Start"));
-
if (protocol->state == SILC_PROTOCOL_STATE_UNKNOWN)
protocol->state = SILC_PROTOCOL_STATE_START;
- SILC_LOG_DEBUG(("State=%d", protocol->state));
+ SILC_LOG_DEBUG(("Current protocol state %d", protocol->state));
switch(protocol->state) {
case SILC_PROTOCOL_STATE_START:
SilcIDListData idata = (SilcIDListData)ctx->sock->user_data;
SilcSKEStatus status;
- SILC_LOG_DEBUG(("Start"));
-
if (protocol->state == SILC_PROTOCOL_STATE_UNKNOWN)
protocol->state = SILC_PROTOCOL_STATE_START;
- SILC_LOG_DEBUG(("State=%d", protocol->state));
+ SILC_LOG_DEBUG(("Current protocol state %d", protocol->state));
switch(protocol->state) {
case SILC_PROTOCOL_STATE_START: