/* Sign the hash value */
SILC_FSM_CALL(ske->key_op =
- silc_pkcs_sign(ske->private_key, hash, hash_len, FALSE,
- ske->prop->hash, ske->rng,
- silc_ske_initiator_sign_cb, ske));
+ silc_pkcs_sign_async(ske->private_key, hash, hash_len, FALSE,
+ ske->prop->hash, ske->rng,
+ silc_ske_initiator_sign_cb, ske));
/* NOT REACHED */
}
/* Verify signature */
SILC_FSM_CALL(ske->key_op =
- silc_pkcs_verify(ske->prop->public_key, payload->sign_data,
- payload->sign_len, hash, hash_len, NULL,
- silc_ske_verify_cb, ske));
+ silc_pkcs_verify_async(ske->prop->public_key,
+ payload->sign_data,
+ payload->sign_len, hash,
+ hash_len, FALSE, NULL,
+ silc_ske_verify_cb, ske));
/* NOT REACHED */
}
/* Verify signature */
SILC_FSM_CALL(ske->key_op =
- silc_pkcs_verify(ske->prop->public_key,
- recv_payload->sign_data,
- recv_payload->sign_len,
- hash, hash_len, NULL,
- silc_ske_verify_cb, ske));
+ silc_pkcs_verify_async(ske->prop->public_key,
+ recv_payload->sign_data,
+ recv_payload->sign_len,
+ hash, hash_len, FALSE, NULL,
+ silc_ske_verify_cb, ske));
/* NOT REACHED */
}
/* Sign the hash value */
SILC_FSM_CALL(ske->key_op =
- silc_pkcs_sign(ske->private_key, hash, hash_len, FALSE,
- ske->prop->hash, ske->rng,
- silc_ske_responder_sign_cb, ske));
+ silc_pkcs_sign_async(ske->private_key, hash, hash_len, FALSE,
+ ske->prop->hash, ske->rng,
+ silc_ske_responder_sign_cb, ske));
/* NOT REACHED */
}
SilcHmac *ret_hmac_receive,
SilcHash *ret_hash)
{
- unsigned char iv[32];
+ unsigned char iv[SILC_HASH_MAXLEN];
SilcBool iv_included = (prop->flags & SILC_SKE_SP_FLAG_IV_INCLUDED);
/* Allocate ciphers to be used in the communication */
silc_hash_make(prop->hash, keymat->receive_iv, 8, iv);
if (!iv_included)
memcpy(iv + 4, keymat->receive_iv, 8);
+ else
+ memset(iv + 4, 0, 12);
}
silc_cipher_set_iv(*ret_send_key, iv);
silc_hash_make(prop->hash, keymat->send_iv, 8, iv);
if (!iv_included)
memcpy(iv + 4, keymat->send_iv, 8);
+ else
+ memset(iv + 4, 0, 12);
}
silc_cipher_set_iv(*ret_receive_key, iv);
silc_hash_make(prop->hash, keymat->send_iv, 8, iv);
if (!iv_included)
memcpy(iv + 4, keymat->send_iv, 8);
+ else
+ memset(iv + 4, 0, 12);
}
silc_cipher_set_iv(*ret_send_key, iv);
silc_hash_make(prop->hash, keymat->receive_iv, 8, iv);
if (!iv_included)
memcpy(iv + 4, keymat->receive_iv, 8);
+ else
+ memset(iv + 4, 0, 12);
}
silc_cipher_set_iv(*ret_receive_key, iv);