aboutsummaryrefslogtreecommitdiff
path: root/gost_pmeth.c
diff options
context:
space:
mode:
authorDmitry Belyavskiy <beldmit@gmail.com>2018-06-14 18:14:55 +0300
committerDmitry Belyavskiy <beldmit@gmail.com>2018-06-14 18:14:55 +0300
commit14e654cab19089027b00733594480eb03d8c6da5 (patch)
tree7c52ab5c0ba83def7e2e66d3605a03b196c1a3d6 /gost_pmeth.c
parentdebbfa1ae38f18ea06750514dd950775ad9889d8 (diff)
downloadgost-engine-14e654cab19089027b00733594480eb03d8c6da5.zip
gost-engine-14e654cab19089027b00733594480eb03d8c6da5.tar.gz
gost-engine-14e654cab19089027b00733594480eb03d8c6da5.tar.bz2
OMACs implementation. Unfinished.
Diffstat (limited to 'gost_pmeth.c')
-rw-r--r--gost_pmeth.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/gost_pmeth.c b/gost_pmeth.c
index 787b480..a29e5f0 100644
--- a/gost_pmeth.c
+++ b/gost_pmeth.c
@@ -523,7 +523,8 @@ static int pkey_gost_mac_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
case EVP_PKEY_CTRL_MD:
{
int nid = EVP_MD_type((const EVP_MD *)p2);
- if (nid != NID_id_Gost28147_89_MAC && nid != NID_gost_mac_12) {
+ if (nid != NID_id_Gost28147_89_MAC && nid != NID_gost_mac_12
+ && nid != NID_magma_mac && nid != NID_grasshopper_mac) {
GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL,
GOST_R_INVALID_DIGEST_TYPE);
return 0;
@@ -802,6 +803,28 @@ int register_pmeth_gost(int id, EVP_PKEY_METHOD **pmeth, int flags)
EVP_PKEY_meth_set_cleanup(*pmeth, pkey_gost_mac_cleanup);
EVP_PKEY_meth_set_copy(*pmeth, pkey_gost_mac_copy);
return 1;
+/* TODO
+ case NID_magma_mac:
+ EVP_PKEY_meth_set_ctrl(*pmeth, pkey_gost_mac_ctrl,
+ pkey_gost_mac_ctrl_str);
+ EVP_PKEY_meth_set_signctx(*pmeth, pkey_gost_mac_signctx_init,
+ pkey_gost_mac_signctx);
+ EVP_PKEY_meth_set_keygen(*pmeth, NULL, pkey_gost_mac_keygen_12);
+ EVP_PKEY_meth_set_init(*pmeth, pkey_gost_mac_init);
+ EVP_PKEY_meth_set_cleanup(*pmeth, pkey_gost_mac_cleanup);
+ EVP_PKEY_meth_set_copy(*pmeth, pkey_gost_mac_copy);
+ return 1;
+ case NID_grasshopper_mac:
+ EVP_PKEY_meth_set_ctrl(*pmeth, pkey_gost_mac_ctrl,
+ pkey_gost_mac_ctrl_str);
+ EVP_PKEY_meth_set_signctx(*pmeth, pkey_gost_mac_signctx_init,
+ pkey_gost_mac_signctx);
+ EVP_PKEY_meth_set_keygen(*pmeth, NULL, pkey_gost_mac_keygen_12);
+ EVP_PKEY_meth_set_init(*pmeth, pkey_gost_mac_init);
+ EVP_PKEY_meth_set_cleanup(*pmeth, pkey_gost_mac_cleanup);
+ EVP_PKEY_meth_set_copy(*pmeth, pkey_gost_mac_copy);
+ return 1;
+*/
default: /* Unsupported method */
return 0;
}