EVP_PKEY *pkey;
uint8_t digest[SHA256_DIGEST_LENGTH];
- size_t digest_len = 0;
+ size_t digest_len = sizeof(digest);
uint8_t const *mac;
uint8_t *p = eap_packet->type.data, *end = p + eap_packet->type.length;
static int ck_ik_prime_derive(fr_aka_sim_keys_t *keys)
{
uint8_t digest[sizeof(keys->ik_prime) + sizeof(keys->ck_prime)];
- size_t len;
+ size_t digest_len = sizeof(digest);
uint8_t sqn_ak_buff[MILENAGE_SQN_SIZE];
uint16_t l0, l1;
}
if (EVP_DigestSignUpdate(md_ctx, s, s_len) != 1) goto error;
- if (EVP_DigestSignFinal(md_ctx, digest, &len) != 1) goto error;
+ if (EVP_DigestSignFinal(md_ctx, digest, &digest_len) != 1) goto error;
memcpy(keys->ik_prime, digest, sizeof(keys->ik_prime));
memcpy(keys->ck_prime, digest + sizeof(keys->ik_prime), sizeof(keys->ck_prime));
}
while (p < end) {
- size_t len;
+ size_t digest_len = sizeof(digest);
size_t copy;
c++;
if ((p != out) && EVP_DigestSignUpdate(md_ctx, digest, sizeof(digest)) != 1) goto error;/* Ingest last round */
if (EVP_DigestSignUpdate(md_ctx, in, in_len) != 1) goto error; /* Ingest s */
if (EVP_DigestSignUpdate(md_ctx, &c, sizeof(c)) != 1) goto error; /* Ingest round number */
- if (EVP_DigestSignFinal(md_ctx, digest, &len) != 1) goto error; /* Output T(i) */
+ if (EVP_DigestSignFinal(md_ctx, digest, &digest_len) != 1) goto error; /* Output T(i) */
copy = end - p;
- if (copy > SHA256_DIGEST_LENGTH) copy = SHA256_DIGEST_LENGTH;
+ if (copy > digest_len) copy = digest_len;
memcpy(p, digest, copy);
p += copy;
/*
* OpenSSL <= 1.1.1 requires a non-null pointer for len
*/
- EVP_DigestSignFinal(ctx_a, a, &(size_t){ 0 });
+ EVP_DigestSignFinal(ctx_a, a, &(size_t){ sizeof(a) });
while (1) {
/* Calculate next part of output */
/* Check if last part */
if (out_len < size) {
- EVP_DigestSignFinal(ctx_out, a, &(size_t){ 0 });
+ EVP_DigestSignFinal(ctx_out, a, &(size_t){ sizeof(a) });
memcpy(out, a, out_len);
break;
}
/* Place digest in output buffer */
- EVP_DigestSignFinal(ctx_out, out, &(size_t){ 0 });
+ EVP_DigestSignFinal(ctx_out, out, &(size_t){ EVP_MAX_MD_SIZE });
EVP_MD_CTX_reset(ctx_out);
EVP_DigestSignInit(ctx_out, NULL, evp_md, NULL, pkey);
EVP_MD_CTX_reset(ctx_a);
EVP_DigestSignInit(ctx_a, NULL, evp_md, NULL, pkey);
EVP_DigestSignUpdate(ctx_a, a, size);
- EVP_DigestSignFinal(ctx_a, a, &(size_t){ 0 });
+ EVP_DigestSignFinal(ctx_a, a, &(size_t){ EVP_MAX_MD_SIZE });
}
EVP_PKEY_free(pkey);
fr_pair_t *mn_nai, *ip, *fa_rk;
EVP_MD_CTX *hmac_ctx;
EVP_PKEY *hmac_pkey;
- size_t rk1_len, rk2_len, rk_len;
uint32_t mip_spi;
uint8_t usage_data[24];
uint8_t mip_rk_1[EVP_MAX_MD_SIZE], mip_rk_2[EVP_MAX_MD_SIZE];
uint8_t mip_rk[2 * EVP_MAX_MD_SIZE];
+ size_t rk1_len = sizeof(mip_rk_1), rk2_len = sizeof(mip_rk_2), rk_len = sizeof(mip_rk);
msk = fr_pair_find_by_da_idx(&request->reply_pairs, attr_eap_msk, 0);
emsk = fr_pair_find_by_da_idx(&request->reply_pairs, attr_eap_emsk, 0);