X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_eng.c;h=88229e65403967f6fd7ac81d878d02514224eab0;hb=ea10e1ad824f299198dddea313417004d8d1efad;hp=f86169bb96e08ac604270c340c711f27aa1761ec;hpb=cba16944bff9d8c5dcf37be641822cd3de6d2ec1;p=openssl-gost%2Fengine.git diff --git a/gost_eng.c b/gost_eng.c index f86169b..88229e6 100644 --- a/gost_eng.c +++ b/gost_eng.c @@ -37,6 +37,7 @@ static int gost_cipher_nids[] = { NID_id_Gost28147_89, NID_gost89_cnt, NID_gost89_cnt_12, + NID_gost89_cbc, 0 }; @@ -50,7 +51,6 @@ static int gost_digest_nids[] = { }; static int gost_pkey_meth_nids[] = { - NID_id_GostR3410_94, NID_id_GostR3410_2001, NID_id_Gost28147_89_MAC, NID_id_GostR3410_2012_256, @@ -59,15 +59,13 @@ static int gost_pkey_meth_nids[] = { 0 }; -static EVP_PKEY_METHOD *pmeth_GostR3410_94 = NULL, - *pmeth_GostR3410_2001 = NULL, +static EVP_PKEY_METHOD *pmeth_GostR3410_2001 = NULL, *pmeth_GostR3410_2012_256 = NULL, *pmeth_GostR3410_2012_512 = NULL, *pmeth_Gost28147_MAC = NULL, *pmeth_Gost28147_MAC_12 = NULL; -static EVP_PKEY_ASN1_METHOD *ameth_GostR3410_94 = NULL, - *ameth_GostR3410_2001 = NULL, +static EVP_PKEY_ASN1_METHOD *ameth_GostR3410_2001 = NULL, *ameth_GostR3410_2012_256 = NULL, *ameth_GostR3410_2012_512 = NULL, *ameth_Gost28147_MAC = NULL, @@ -87,14 +85,12 @@ static int gost_engine_destroy(ENGINE *e) { gost_param_free(); - pmeth_GostR3410_94 = NULL; pmeth_GostR3410_2001 = NULL; pmeth_Gost28147_MAC = NULL; pmeth_GostR3410_2012_256 = NULL; pmeth_GostR3410_2012_512 = NULL; pmeth_Gost28147_MAC_12 = NULL; - ameth_GostR3410_94 = NULL; ameth_GostR3410_2001 = NULL; ameth_Gost28147_MAC = NULL; ameth_GostR3410_2012_256 = NULL; @@ -109,8 +105,7 @@ static int bind_gost(ENGINE *e, const char *id) int ret = 0; if (id && strcmp(id, engine_gost_id)) return 0; - - if (ameth_GostR3410_94) { + if (ameth_GostR3410_2001) { printf("GOST engine already loaded\n"); goto end; } @@ -153,10 +148,6 @@ static int bind_gost(ENGINE *e, const char *id) goto end; } - 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, &ameth_GostR3410_2001, "GOST2001", "GOST R 34.10-2001")) @@ -177,10 +168,9 @@ static int bind_gost(ENGINE *e, const char *id) "GOST 28147-89 MAC with 2012 params")) goto end; - if (!register_pmeth_gost(NID_id_GostR3410_94, &pmeth_GostR3410_94, 0)) - goto end; if (!register_pmeth_gost(NID_id_GostR3410_2001, &pmeth_GostR3410_2001, 0)) goto end; + if (!register_pmeth_gost (NID_id_GostR3410_2012_256, &pmeth_GostR3410_2012_256, 0)) goto end; @@ -197,6 +187,7 @@ static int bind_gost(ENGINE *e, const char *id) || !ENGINE_register_pkey_meths(e) /* These two actually should go in LIST_ADD command */ || !EVP_add_cipher(&cipher_gost) + || !EVP_add_cipher(&cipher_gost_cbc) || !EVP_add_cipher(&cipher_gost_cpacnt) || !EVP_add_cipher(&cipher_gost_cpcnt_12) || !EVP_add_digest(&digest_gost) @@ -224,7 +215,7 @@ static int gost_digests(ENGINE *e, const EVP_MD **digest, int ok = 1; if (!digest) { *nids = gost_digest_nids; - return 5; + return sizeof(gost_digest_nids)/sizeof(gost_digest_nids[0]) - 1; } if (nid == NID_id_GostR3411_94) { *digest = &digest_gost; @@ -249,7 +240,7 @@ static int gost_ciphers(ENGINE *e, const EVP_CIPHER **cipher, int ok = 1; if (!cipher) { *nids = gost_cipher_nids; - return 3; /* three ciphers are supported */ + return sizeof(gost_cipher_nids)/sizeof(gost_cipher_nids[0]) - 1; } if (nid == NID_id_Gost28147_89) { @@ -258,6 +249,8 @@ static int gost_ciphers(ENGINE *e, const EVP_CIPHER **cipher, *cipher = &cipher_gost_cpacnt; } else if (nid == NID_gost89_cnt_12) { *cipher = &cipher_gost_cpcnt_12; + } else if (nid == NID_gost89_cbc) { + *cipher = &cipher_gost_cbc; } else { ok = 0; *cipher = NULL; @@ -270,13 +263,10 @@ static int gost_pkey_meths(ENGINE *e, EVP_PKEY_METHOD **pmeth, { if (!pmeth) { *nids = gost_pkey_meth_nids; - return 6; + return sizeof(gost_pkey_meth_nids)/sizeof(gost_pkey_meth_nids[0]) - 1; } switch (nid) { - case NID_id_GostR3410_94: - *pmeth = pmeth_GostR3410_94; - return 1; case NID_id_GostR3410_2001: *pmeth = pmeth_GostR3410_2001; return 1; @@ -305,12 +295,9 @@ static int gost_pkey_asn1_meths(ENGINE *e, EVP_PKEY_ASN1_METHOD **ameth, { if (!ameth) { *nids = gost_pkey_meth_nids; - return 6; + return sizeof(gost_pkey_meth_nids)/sizeof(gost_pkey_meth_nids[0]) - 1; } switch (nid) { - case NID_id_GostR3410_94: - *ameth = ameth_GostR3410_94; - return 1; case NID_id_GostR3410_2001: *ameth = ameth_GostR3410_2001; return 1; @@ -350,7 +337,7 @@ static ENGINE *engine_gost(void) void ENGINE_load_gost(void) { ENGINE *toadd; - if (pmeth_GostR3410_94) + if (pmeth_GostR3410_2001) return; toadd = engine_gost(); if (!toadd)