X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_omac.c;h=97fb5c0b9d6308365555a7c766fd9e1102901da9;hb=refs%2Fheads%2Fgost_provider;hp=83f4acdcf16991ea5eba5fcf5334aaa8e3559c18;hpb=ebb91ec8c33ce9f259d455605a884ffbd72996db;p=openssl-gost%2Fengine.git diff --git a/gost_omac.c b/gost_omac.c index 83f4acd..97fb5c0 100644 --- a/gost_omac.c +++ b/gost_omac.c @@ -40,11 +40,11 @@ static int omac_init(EVP_MD_CTX *ctx, int cipher_nid) switch (cipher_nid) { case NID_magma_cbc: - c->dgst_size = 4; + c->dgst_size = 8; break; case NID_grasshopper_cbc: - c->dgst_size = 8; + c->dgst_size = 16; break; } @@ -132,6 +132,7 @@ static int omac_key(OMAC_CTX * c, const EVP_CIPHER *cipher, { int ret = 0; + CMAC_CTX_free(c->cmac_ctx); c->cmac_ctx = CMAC_CTX_new(); if (c->cmac_ctx == NULL) { GOSTerr(GOST_F_OMAC_KEY, ERR_R_MALLOC_FAILURE); @@ -201,7 +202,7 @@ int omac_imit_ctrl(EVP_MD_CTX *ctx, int type, int arg, void *ptr) GOSTerr(GOST_F_OMAC_IMIT_CTRL, GOST_R_INVALID_MAC_KEY_SIZE); return 0; } - case EVP_MD_CTRL_MAC_LEN: + case EVP_MD_CTRL_XOF_LEN: /* Supported in OpenSSL */ { OMAC_CTX *c = EVP_MD_CTX_md_data(ctx); switch (c->cipher_nid) { @@ -228,7 +229,6 @@ int omac_imit_ctrl(EVP_MD_CTX *ctx, int type, int arg, void *ptr) case EVP_MD_CTRL_TLSTREE: { OMAC_CTX *c = EVP_MD_CTX_md_data(ctx); - if (c->key_set) { unsigned char diversed_key[32]; return gost_tlstree(c->cipher_nid, c->key, diversed_key, @@ -254,10 +254,10 @@ EVP_MD *magma_omac(void) EVP_MD *md; if ((md = EVP_MD_meth_new(NID_magma_mac, NID_undef)) == NULL - || !EVP_MD_meth_set_result_size(md, 4) + || !EVP_MD_meth_set_result_size(md, 8) || !EVP_MD_meth_set_input_blocksize(md, 8) || !EVP_MD_meth_set_app_datasize(md, sizeof(OMAC_CTX)) - || !EVP_MD_meth_set_flags(md, 0) + || !EVP_MD_meth_set_flags(md, EVP_MD_FLAG_XOF) || !EVP_MD_meth_set_init(md, magma_imit_init) || !EVP_MD_meth_set_update(md, omac_imit_update) || !EVP_MD_meth_set_final(md, omac_imit_final) @@ -286,10 +286,10 @@ EVP_MD *grasshopper_omac(void) EVP_MD *md; if ((md = EVP_MD_meth_new(NID_grasshopper_mac, NID_undef)) == NULL - || !EVP_MD_meth_set_result_size(md, 8) + || !EVP_MD_meth_set_result_size(md, 16) || !EVP_MD_meth_set_input_blocksize(md, 8) || !EVP_MD_meth_set_app_datasize(md, sizeof(OMAC_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_imit_init) || !EVP_MD_meth_set_update(md, omac_imit_update) || !EVP_MD_meth_set_final(md, omac_imit_final)