]> wagner.pp.ru Git - openssl-gost/engine.git/blobdiff - gost_keyexpimp.c
CMakeLists.txt: Fix warning on gcc-9
[openssl-gost/engine.git] / gost_keyexpimp.c
index e8ee1ebedce5e9a129f7d1874a78109a6fc73234..b94531f0e23e1ea2abc07dcadc612475785ddbc1 100644 (file)
@@ -1,7 +1,12 @@
+#ifdef _WIN32
+#include <winsock.h>
+#else
 #include <arpa/inet.h>
+#endif
 #include <string.h>
 #include <openssl/evp.h>
 #include <openssl/hmac.h>
+#include <openssl/buffer.h>
 
 #include "gost_lcl.h"
 #include "e_gost_err.h"
@@ -172,7 +177,7 @@ int gost_kdftree2012_256(unsigned char *keyout, size_t keyout_len,
     int iters, i = 0;
     unsigned char zero = 0;
     unsigned char *ptr = keyout;
-    HMAC_CTX *ctx = NULL;
+    HMAC_CTX *ctx;
     unsigned char *len_ptr = NULL;
     uint32_t len_repr = htonl(keyout_len * 8);
     size_t len_repr_len = 4;
@@ -226,17 +231,10 @@ int gost_kdftree2012_256(unsigned char *keyout, size_t keyout_len,
 int gost_tlstree(int cipher_nid, const unsigned char *in, unsigned char *out,
                  const unsigned char *tlsseq)
 {
-#ifndef L_ENDIAN
-    uint64_t gh_c1 = 0xFFFFFFFF00000000, gh_c2 = 0xFFFFFFFFFFF80000,
-        gh_c3 = 0xFFFFFFFFFFFFFFC0;
-    uint64_t mg_c1 = 0xFFFFFFC000000000, mg_c2 = 0xFFFFFFFFFE000000,
-        mg_c3 = 0xFFFFFFFFFFFFF000;
-#else
     uint64_t gh_c1 = 0x00000000FFFFFFFF, gh_c2 = 0x0000F8FFFFFFFFFF,
         gh_c3 = 0xC0FFFFFFFFFFFFFF;
     uint64_t mg_c1 = 0x00000000C0FFFFFF, mg_c2 = 0x000000FEFFFFFFFF,
         mg_c3 = 0x00F0FFFFFFFFFFFF;
-#endif
     uint64_t c1, c2, c3;
     uint64_t seed1, seed2, seed3;
     uint64_t seq;
@@ -256,7 +254,11 @@ int gost_tlstree(int cipher_nid, const unsigned char *in, unsigned char *out,
     default:
         return 0;
     }
+#ifndef L_ENDIAN
+    BUF_reverse((unsigned char *)&seq, tlsseq, 8);
+#else
     memcpy(&seq, tlsseq, 8);
+#endif
     seed1 = seq & c1;
     seed2 = seq & c2;
     seed3 = seq & c3;