Lines Matching refs:hkdf

5550         mbedtls_free(operation->ctx.hkdf.info);
5551 status = psa_mac_abort(&operation->ctx.hkdf.hmac);
5636 static psa_status_t psa_key_derivation_hkdf_read(psa_hkdf_key_derivation_t *hkdf, argument
5651 if (hkdf->state < HKDF_STATE_KEYED ||
5652 (!hkdf->info_set
5659 hkdf->state = HKDF_STATE_OUTPUT;
5663 uint8_t n = hash_length - hkdf->offset_in_block;
5667 memcpy(output, hkdf->output_block + hkdf->offset_in_block, n);
5670 hkdf->offset_in_block += n;
5679 if (hkdf->block_number == last_block) {
5684 ++hkdf->block_number;
5685 hkdf->offset_in_block = 0;
5687 status = psa_key_derivation_start_hmac(&hkdf->hmac,
5689 hkdf->prk,
5695 if (hkdf->block_number != 1) {
5696 status = psa_mac_update(&hkdf->hmac,
5697 hkdf->output_block,
5703 status = psa_mac_update(&hkdf->hmac,
5704 hkdf->info,
5705 hkdf->info_length);
5709 status = psa_mac_update(&hkdf->hmac,
5710 &hkdf->block_number, 1);
5714 status = psa_mac_sign_finish(&hkdf->hmac,
5715 hkdf->output_block,
5716 sizeof(hkdf->output_block),
6104 status = psa_key_derivation_hkdf_read(&operation->ctx.hkdf, kdf_alg,
6799 static psa_status_t psa_hkdf_input(psa_hkdf_key_derivation_t *hkdf, argument
6814 if (hkdf->state != HKDF_STATE_INIT) {
6817 status = psa_key_derivation_start_hmac(&hkdf->hmac,
6823 hkdf->state = HKDF_STATE_STARTED;
6833 if (hkdf->state != HKDF_STATE_INIT) {
6842 memcpy(hkdf->prk, data, data_length);
6848 if (hkdf->state == HKDF_STATE_INIT) {
6854 status = psa_key_derivation_start_hmac(&hkdf->hmac,
6860 hkdf->state = HKDF_STATE_STARTED;
6862 if (hkdf->state != HKDF_STATE_STARTED) {
6865 status = psa_mac_update(&hkdf->hmac,
6870 status = psa_mac_sign_finish(&hkdf->hmac,
6871 hkdf->prk,
6872 sizeof(hkdf->prk),
6879 hkdf->state = HKDF_STATE_KEYED;
6880 hkdf->block_number = 0;
6884 memcpy(hkdf->output_block, hkdf->prk, PSA_HASH_LENGTH(hash_alg));
6885 hkdf->offset_in_block = 0;
6891 hkdf->offset_in_block = PSA_HASH_LENGTH(hash_alg);
6903 hkdf->state == HKDF_STATE_INIT) {
6907 if (hkdf->state == HKDF_STATE_OUTPUT) {
6910 if (hkdf->info_set) {
6913 hkdf->info_length = data_length;
6915 hkdf->info = mbedtls_calloc(1, data_length);
6916 if (hkdf->info == NULL) {
6919 memcpy(hkdf->info, data, data_length);
6921 hkdf->info_set = 1;
7395 status = psa_hkdf_input(&operation->ctx.hkdf, kdf_alg,