X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_md2012.c;h=5462dea84c6cf0dc869c155fb47ef0abc08178b6;hb=refs%2Fheads%2Fvt-alt-openssl_1_0_2_alt;hp=52522ee4a8eff48b0fe4d380e9abd573fb488e72;hpb=a170809d792816448cb4c95f3473531a1a917e69;p=openssl-gost%2Fengine.git diff --git a/gost_md2012.c b/gost_md2012.c index 52522ee..5462dea 100644 --- a/gost_md2012.c +++ b/gost_md2012.c @@ -9,6 +9,7 @@ * * **********************************************************************/ +#include "compat.h" #include #include "gosthash2012.h" @@ -35,7 +36,11 @@ EVP_MD *digest_gost2012_256(void) if (_hidden_GostR3411_2012_256_md == NULL) { EVP_MD *md; - if ((md = EVP_MD_meth_new(NID_id_GostR3411_2012_256, NID_undef)) == NULL + if ((md = + EVP_MD_meth_new(NID_id_GostR3411_2012_256, NID_undef)) == NULL +#if (OPENSSL_VERSION_NUMBER <= 0x10002100L) + || !EVP_MD_meth_set_flags(md, EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) +#endif || !EVP_MD_meth_set_result_size(md, 32) || !EVP_MD_meth_set_input_blocksize(md, 64) || !EVP_MD_meth_set_app_datasize(md, sizeof(gost2012_hash_ctx)) @@ -64,7 +69,11 @@ EVP_MD *digest_gost2012_512(void) if (_hidden_GostR3411_2012_512_md == NULL) { EVP_MD *md; - if ((md = EVP_MD_meth_new(NID_id_GostR3411_2012_512, NID_undef)) == NULL + if ((md = + EVP_MD_meth_new(NID_id_GostR3411_2012_512, NID_undef)) == NULL +#if (OPENSSL_VERSION_NUMBER <= 0x10002100L) + || !EVP_MD_meth_set_flags(md, EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) +#endif || !EVP_MD_meth_set_result_size(md, 64) || !EVP_MD_meth_set_input_blocksize(md, 64) || !EVP_MD_meth_set_app_datasize(md, sizeof(gost2012_hash_ctx)) @@ -90,19 +99,22 @@ void digest_gost2012_512_destroy(void) static int gost_digest_init512(EVP_MD_CTX *ctx) { - init_gost2012_hash_ctx((gost2012_hash_ctx *) EVP_MD_CTX_md_data(ctx), 512); + init_gost2012_hash_ctx((gost2012_hash_ctx *) EVP_MD_CTX_md_data(ctx), + 512); return 1; } static int gost_digest_init256(EVP_MD_CTX *ctx) { - init_gost2012_hash_ctx((gost2012_hash_ctx *) EVP_MD_CTX_md_data(ctx), 256); + init_gost2012_hash_ctx((gost2012_hash_ctx *) EVP_MD_CTX_md_data(ctx), + 256); return 1; } static int gost_digest_update(EVP_MD_CTX *ctx, const void *data, size_t count) { - gost2012_hash_block((gost2012_hash_ctx *) EVP_MD_CTX_md_data(ctx), data, count); + gost2012_hash_block((gost2012_hash_ctx *) EVP_MD_CTX_md_data(ctx), data, + count); return 1; } @@ -115,7 +127,8 @@ static int gost_digest_final(EVP_MD_CTX *ctx, unsigned char *md) static int gost_digest_copy(EVP_MD_CTX *to, const EVP_MD_CTX *from) { if (EVP_MD_CTX_md_data(to) && EVP_MD_CTX_md_data(from)) - memcpy(EVP_MD_CTX_md_data(to), EVP_MD_CTX_md_data(from), sizeof(gost2012_hash_ctx)); + memcpy(EVP_MD_CTX_md_data(to), EVP_MD_CTX_md_data(from), + sizeof(gost2012_hash_ctx)); return 1; } @@ -155,9 +168,7 @@ static int gost_digest_ctrl_512(EVP_MD_CTX *ctx, int type, int arg, void *ptr) strcpy(*((char **)ptr), micalg_512); return 1; } - return 0; } - return 1; default: return 0; }