if (c->cipher_nid == NID_undef) {
switch (EVP_MD_nid(md)) {
case NID_grasshopper_mac:
+ case NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac:
c->cipher_nid = NID_grasshopper_cbc;
break;
}
}
return 1;
}
- case EVP_MD_CTRL_MAC_LEN:
+ case EVP_MD_CTRL_XOF_LEN: /* Supported in OpenSSL */
{
OMAC_ACPKM_CTX *c = EVP_MD_CTX_md_data(ctx);
switch (c->cipher_nid) {
}
c->dgst_size = arg;
break;
+ case NID_magma_cbc:
+ if (arg < 1 || arg > 8) {
+ GOSTerr(GOST_F_OMAC_ACPKM_IMIT_CTRL, GOST_R_INVALID_MAC_SIZE);
+ return 0;
+ }
+ c->dgst_size = arg;
+ break;
default:
return 0;
}
|| !EVP_MD_meth_set_result_size(md, MAX_GOST_OMAC_ACPKM_SIZE)
|| !EVP_MD_meth_set_input_blocksize(md, GRASSHOPPER_BLOCK_SIZE)
|| !EVP_MD_meth_set_app_datasize(md, sizeof(OMAC_ACPKM_CTX))
- || !EVP_MD_meth_set_flags(md, 0)
+ || !EVP_MD_meth_set_flags(md, EVP_MD_FLAG_XOF)
|| !EVP_MD_meth_set_init(md, grasshopper_omac_acpkm_init)
|| !EVP_MD_meth_set_update(md, omac_acpkm_imit_update)
|| !EVP_MD_meth_set_final(md, omac_acpkm_imit_final)