/* Allocate cipher to be used in the communication */
if (!silc_cipher_alloc(cipher->cipher->name, &idata->send_key)) {
silc_free(conn_data);
+ SILC_LOG_ERROR(("Cannot allocate algorithm: %s", cipher->cipher->name));
return FALSE;
}
if (!silc_cipher_alloc(cipher->cipher->name, &idata->receive_key)) {
silc_free(conn_data);
+ SILC_LOG_ERROR(("Cannot allocate algorithm: %s", cipher->cipher->name));
return FALSE;
}
silc_cipher_free(idata->send_key);
silc_cipher_free(idata->receive_key);
silc_free(conn_data);
+ SILC_LOG_ERROR(("Cannot allocate algorithm: %s",
+ silc_hmac_get_name(hmac)));
return FALSE;
}
silc_cipher_free(idata->receive_key);
silc_hmac_free(idata->hmac_send);
silc_free(conn_data);
+ SILC_LOG_ERROR(("Cannot allocate algorithm: %s",
+ silc_hmac_get_name(hmac)));
return FALSE;
}
silc_hmac_free(idata->hmac_send);
silc_hmac_free(idata->hmac_receive);
silc_free(conn_data);
+ SILC_LOG_ERROR(("Cannot allocate algorithm: %s", hash->hash->name));
return FALSE;
}
if (maj == 0 && min < 5)
status = SILC_SKE_STATUS_BAD_VERSION;
+ if (status == SILC_SKE_STATUS_BAD_VERSION)
+ SILC_LOG_ERROR(("%s (%s) %s is not allowed/supported version",
+ ske->sock->hostname, ske->sock->ip, version));
+
return status;
}
SILC_LOG_DEBUG(("Start"));
if (ske->status != SILC_SKE_STATUS_OK) {
- SILC_LOG_WARNING(("Error (%s) during Key Exchange protocol",
- silc_ske_map_status(ske->status)));
+ SILC_LOG_ERROR(("Error (%s) during Key Exchange protocol",
+ silc_ske_map_status(ske->status)));
SILC_LOG_DEBUG(("Error (%s) during Key Exchange protocol",
silc_ske_map_status(ske->status)));
return;
if (status != SILC_SKE_STATUS_OK) {
- SILC_LOG_WARNING(("Error (%s) during Key Exchange protocol",
- silc_ske_map_status(status)));
+ SILC_LOG_ERROR(("Error (%s) during Key Exchange protocol",
+ silc_ske_map_status(status)));
SILC_LOG_DEBUG(("Error (%s) during Key Exchange protocol",
silc_ske_map_status(status)));
return;
if (status != SILC_SKE_STATUS_OK) {
- SILC_LOG_WARNING(("Error (%s) during Key Exchange protocol",
- silc_ske_map_status(status)));
+ SILC_LOG_ERROR(("Error (%s) during Key Exchange protocol",
+ silc_ske_map_status(status)));
SILC_LOG_DEBUG(("Error (%s) during Key Exchange protocol",
silc_ske_map_status(status)));
return;
if (status != SILC_SKE_STATUS_OK) {
- SILC_LOG_WARNING(("Error (%s) during Key Exchange protocol",
- silc_ske_map_status(status)));
+ SILC_LOG_ERROR(("Error (%s) during Key Exchange protocol",
+ silc_ske_map_status(status)));
SILC_LOG_DEBUG(("Error (%s) during Key Exchange protocol",
silc_ske_map_status(status)));
return;
if (status != SILC_SKE_STATUS_OK) {
- SILC_LOG_WARNING(("Error (%s) during Key Exchange protocol",
- silc_ske_map_status(status)));
+ SILC_LOG_ERROR(("Error (%s) during Key Exchange protocol",
+ silc_ske_map_status(status)));
SILC_LOG_DEBUG(("Error (%s) during Key Exchange protocol",
silc_ske_map_status(status)));
status = silc_ske_process_key_material(ctx->ske, 16, key_len, hash_len,
keymat);
if (status != SILC_SKE_STATUS_OK) {
+ SILC_LOG_ERROR(("Error during Key Exchange protocol: "
+ "could not process key material"));
+
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
silc_ske_free_key_material(keymat);
SILC_STR_UI_SHORT(&conn_type),
SILC_STR_END);
if (ret == -1) {
- SILC_LOG_DEBUG(("Bad payload in authentication packet"));
+ SILC_LOG_ERROR(("Bad payload in authentication packet"));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
}
if (payload_len != ctx->packet->buffer->len) {
- SILC_LOG_DEBUG(("Bad payload in authentication packet"));
+ SILC_LOG_ERROR(("Bad payload length in authentication packet"));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
if (conn_type < SILC_SOCKET_TYPE_CLIENT ||
conn_type > SILC_SOCKET_TYPE_ROUTER) {
- SILC_LOG_ERROR(("Bad connection type %d", conn_type));
+ SILC_LOG_ERROR(("Bad connection type (%d) in authentication packet",
+ conn_type));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
payload_len),
SILC_STR_END);
if (ret == -1) {
- SILC_LOG_DEBUG(("Bad payload in authentication packet"));
+ SILC_LOG_DEBUG(("Bad payload in authentication payload"));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
*/
unsigned char error[4];
- SILC_PUT32_MSB(SILC_AUTH_FAILED, error);
-
/* Authentication failed */
+ SILC_PUT32_MSB(SILC_AUTH_FAILED, error);
silc_server_packet_send(server, ctx->sock, SILC_PACKET_FAILURE,
0, error, 4, TRUE);
* We have received failure from remote
*/
+ SILC_LOG_ERROR(("Received Authentication Failure"));
+
/* Unregister the timeout task since the protocol has ended.
This was the timeout task to be executed if the protocol is
not completed fast enough. */
*/
if (ctx->packet->type != SILC_PACKET_KEY_EXCHANGE_1) {
- /* Error in protocol */
+ SILC_LOG_ERROR(("Error during Re-key (PFS): re-key state is "
+ "incorrect (received %d, expected %d packet)",
+ ctx->packet->type, SILC_PACKET_KEY_EXCHANGE_1));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
status = silc_ske_responder_phase_2(ctx->ske, ctx->packet->buffer);
if (status != SILC_SKE_STATUS_OK) {
- SILC_LOG_WARNING(("Error (%s) during Re-key (PFS)",
- silc_ske_map_status(status)));
-
+ SILC_LOG_ERROR(("Error (%s) during Re-key (PFS)",
+ silc_ske_map_status(status)));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
status = silc_ske_initiator_phase_2(ctx->ske, NULL, NULL, 0);
if (status != SILC_SKE_STATUS_OK) {
- SILC_LOG_WARNING(("Error (%s) during Re-key (PFS)",
- silc_ske_map_status(status)));
-
+ SILC_LOG_ERROR(("Error (%s) during Re-key (PFS)",
+ silc_ske_map_status(status)));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
status = silc_ske_responder_finish(ctx->ske, NULL, NULL,
SILC_SKE_PK_TYPE_SILC);
if (status != SILC_SKE_STATUS_OK) {
- SILC_LOG_WARNING(("Error (%s) during Re-key (PFS)",
- silc_ske_map_status(status)));
-
+ SILC_LOG_ERROR(("Error (%s) during Re-key (PFS)",
+ silc_ske_map_status(status)));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
* The packet type must be KE packet
*/
if (ctx->packet->type != SILC_PACKET_KEY_EXCHANGE_2) {
- /* Error in protocol */
+ SILC_LOG_ERROR(("Error during Re-key (PFS): re-key state is "
+ "incorrect (received %d, expected %d packet)",
+ ctx->packet->type, SILC_PACKET_KEY_EXCHANGE_2));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
status = silc_ske_initiator_finish(ctx->ske, ctx->packet->buffer);
if (status != SILC_SKE_STATUS_OK) {
- SILC_LOG_WARNING(("Error (%s) during Re-key (PFS)",
- silc_ske_map_status(status)));
-
+ SILC_LOG_ERROR(("Error (%s) during Re-key (PFS)",
+ silc_ske_map_status(status)));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
*/
if (ctx->packet->type != SILC_PACKET_REKEY_DONE) {
- /* Error in protocol */
+ SILC_LOG_ERROR(("Error during Re-key (PFS): re-key state is "
+ "incorrect (received %d, expected %d packet)",
+ ctx->packet->type, SILC_PACKET_REKEY_DONE));
protocol->state = SILC_PROTOCOL_STATE_ERROR;
silc_protocol_execute(protocol, server->schedule, 0, 300000);
return;
* Error occured
*/
- if (ctx->pfs == TRUE) {
+ if (ctx->pfs == TRUE)
/* Send abort notification */
silc_ske_abort(ctx->ske, ctx->ske->status);
- }
/* Assure that after calling final callback there cannot be pending
executions for this protocol anymore. This just unregisters any
* We have received failure from remote
*/
+ SILC_LOG_ERROR(("Error during Re-Key: received Failure"));
+
/* Assure that after calling final callback there cannot be pending
executions for this protocol anymore. This just unregisters any
timeout callbacks for this protocol. */