]> www.wagner.pp.ru Git - openssl-gost/engine.git/blobdiff - gost_md2012.c
Make it possible to re-define OPENSSL_ENGINES_INSTALL_DIR
[openssl-gost/engine.git] / gost_md2012.c
index 52522ee4a8eff48b0fe4d380e9abd573fb488e72..5462dea84c6cf0dc869c155fb47ef0abc08178b6 100644 (file)
@@ -9,6 +9,7 @@
  *                                                                    *
  **********************************************************************/
 
+#include "compat.h"
 #include <openssl/evp.h>
 #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;
     }