diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2007-05-17 17:44:09 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2007-05-17 17:44:09 +0000 |
commit | a4346646f12f83f8058abd9d013824fb90abfe73 (patch) | |
tree | a7795bc03e67973ac7828b4618864bcbf091fcc4 /engines/ccgost/gost_eng.c | |
parent | a70c09e2a24ae9143736070eac4e51b1945bb7f8 (diff) |
Initial GOST MAC support. Not fully working yet...
Diffstat (limited to 'engines/ccgost/gost_eng.c')
-rw-r--r-- | engines/ccgost/gost_eng.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/engines/ccgost/gost_eng.c b/engines/ccgost/gost_eng.c index 1c5a493df6..fd474dc1a5 100644 --- a/engines/ccgost/gost_eng.c +++ b/engines/ccgost/gost_eng.c @@ -38,13 +38,15 @@ static int gost_digest_nids[] = static int gost_pkey_meth_nids[] = {NID_id_GostR3410_94_cc, NID_id_GostR3410_94, NID_id_GostR3410_2001_cc, - NID_id_GostR3410_2001, 0}; + NID_id_GostR3410_2001, NID_id_Gost28147_89_MAC, 0}; static EVP_PKEY_METHOD *pmeth_GostR3410_94_cc = NULL, *pmeth_GostR3410_94 = NULL, - *pmeth_GostR3410_2001_cc = NULL, *pmeth_GostR3410_2001 = NULL; + *pmeth_GostR3410_2001_cc = NULL, *pmeth_GostR3410_2001 = NULL, + *pmeth_Gost28147_MAC = NULL; static EVP_PKEY_ASN1_METHOD *ameth_GostR3410_94_cc = NULL, *ameth_GostR3410_94 = NULL, - *ameth_GostR3410_2001_cc = NULL, *ameth_GostR3410_2001 = NULL; + *ameth_GostR3410_2001_cc = NULL, *ameth_GostR3410_2001 = NULL, + *ameth_Gost28147_MAC = NULL; static int gost_engine_init(ENGINE *e) @@ -119,11 +121,15 @@ static int bind_gost (ENGINE *e,const char *id) if (!register_ameth_gost(NID_id_GostR3410_94, &ameth_GostR3410_94, "GOST94", "GOST R 34.10-94")) goto end; if (!register_ameth_gost(NID_id_GostR3410_2001_cc, &ameth_GostR3410_2001_cc, "GOST2001CC", "GOST R 34.10-2001, Cryptocom LTD implementation")) goto end; if (!register_ameth_gost(NID_id_GostR3410_2001, &ameth_GostR3410_2001, "GOST2001", "GOST R 34.10-2001")) goto end; + if (!register_ameth_gost(NID_id_Gost28147_89_MAC, &ameth_Gost28147_MAC, + "GOST-MAC", "GOST 28147-89 MAC")) goto end; if (!register_pmeth_gost(NID_id_GostR3410_94_cc, &pmeth_GostR3410_94_cc, 0)) goto end; if (!register_pmeth_gost(NID_id_GostR3410_94, &pmeth_GostR3410_94, 0)) goto end; if (!register_pmeth_gost(NID_id_GostR3410_2001_cc, &pmeth_GostR3410_2001_cc, 0)) goto end; if (!register_pmeth_gost(NID_id_GostR3410_2001, &pmeth_GostR3410_2001, 0)) goto end; + if (!register_pmeth_gost(NID_id_Gost28147_89_MAC, &pmeth_Gost28147_MAC, 0)) + goto end; if ( ! ENGINE_register_ciphers(e) || ! ENGINE_register_digests(e) || ! ENGINE_register_pkey_meths(e) @@ -201,7 +207,7 @@ static int gost_pkey_meths (ENGINE *e, EVP_PKEY_METHOD **pmeth, if (!pmeth) { *nids = gost_pkey_meth_nids; - return 4; + return 5; } switch (nid) @@ -210,6 +216,7 @@ static int gost_pkey_meths (ENGINE *e, EVP_PKEY_METHOD **pmeth, case NID_id_GostR3410_94: *pmeth = pmeth_GostR3410_94; return 1; case NID_id_GostR3410_2001_cc: *pmeth = pmeth_GostR3410_2001_cc; return 1; case NID_id_GostR3410_2001: *pmeth = pmeth_GostR3410_2001; return 1; + case NID_id_Gost28147_89_MAC: *pmeth = pmeth_Gost28147_MAC; return 1; default:; } @@ -223,7 +230,7 @@ static int gost_pkey_asn1_meths (ENGINE *e, EVP_PKEY_ASN1_METHOD **ameth, if (!ameth) { *nids = gost_pkey_meth_nids; - return 4; + return 5; } switch (nid) { @@ -231,6 +238,8 @@ static int gost_pkey_asn1_meths (ENGINE *e, EVP_PKEY_ASN1_METHOD **ameth, case NID_id_GostR3410_94: *ameth = ameth_GostR3410_94; return 1; case NID_id_GostR3410_2001_cc: *ameth = ameth_GostR3410_2001_cc; return 1; case NID_id_GostR3410_2001: *ameth = ameth_GostR3410_2001; return 1; + case NID_id_Gost28147_89_MAC: *ameth = ameth_Gost28147_MAC; return 1; + default:; } |