X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcske%2Fsilcske.c;h=e95c57e225761a7ef090da41d409a36f1fd241fd;hb=11ae0e5a25d03aafe1322362afec85ccdf724f11;hp=694c2ac89e90b2d65201ec6967f44938aeb41472;hpb=fbb6b73744494d8a908d9cfff2e4dbf882bf5ccf;p=silc.git diff --git a/lib/silcske/silcske.c b/lib/silcske/silcske.c index 694c2ac8..e95c57e2 100644 --- a/lib/silcske/silcske.c +++ b/lib/silcske/silcske.c @@ -357,19 +357,19 @@ static void silc_ske_initiator_finish_final(SilcSKE ske, return; } - /* Decode the public key */ - if (!silc_pkcs_public_key_decode(payload->pk_data, payload->pk_len, - &public_key)) { - status = SILC_SKE_STATUS_UNSUPPORTED_PUBLIC_KEY; - if (finish->callback) - finish->callback(ske, finish->context); - silc_free(finish); - return; - } + if (payload->pk_data) { + /* Decode the public key */ + if (!silc_pkcs_public_key_decode(payload->pk_data, payload->pk_len, + &public_key)) { + status = SILC_SKE_STATUS_UNSUPPORTED_PUBLIC_KEY; + if (finish->callback) + finish->callback(ske, finish->context); + silc_free(finish); + return; + } - SILC_LOG_DEBUG(("Public key is authentic")); + SILC_LOG_DEBUG(("Public key is authentic")); - if (payload->pk_data) { /* Compute the hash value */ status = silc_ske_make_hash(ske, hash, &hash_len, FALSE); if (status != SILC_SKE_STATUS_OK) @@ -497,13 +497,13 @@ SilcSKEStatus silc_ske_initiator_finish(SilcSKE ske, finish->callback = callback; finish->context = context; - if (verify_key) { + if (payload->pk_data && verify_key) { SILC_LOG_DEBUG(("Verifying public key")); (*verify_key)(ske, payload->pk_data, payload->pk_len, payload->pk_type, verify_context, silc_ske_initiator_finish_final, finish); - + /* We will continue to the final state after the public key has been verified by the caller. */ return SILC_SKE_STATUS_PENDING; @@ -864,7 +864,7 @@ SilcSKEStatus silc_ske_responder_phase_2(SilcSKE ske, return status; } - if (verify_key) { + if (recv_payload->pk_data && verify_key) { SILC_LOG_DEBUG(("Verifying public key")); (*verify_key)(ske, recv_payload->pk_data, recv_payload->pk_len,