]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
gost: import _nettle_write_le32 to stop using Nettle's internal symbol
authorDmitry Baryshkov <dbaryshkov@gmail.com>
Mon, 13 Apr 2020 14:54:28 +0000 (17:54 +0300)
committerDmitry Baryshkov <dbaryshkov@gmail.com>
Tue, 14 Apr 2020 15:24:09 +0000 (18:24 +0300)
Remove another dependency on nettle internal symbol by vendoring in
_nettle_write_le32 code

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
lib/nettle/Makefile.am
lib/nettle/gost/nettle-write.h
lib/nettle/gost/write-le32.c [new file with mode: 0644]

index dcca3caaecc7f1a8a6ec0d91953ce67904dc451d..b54568846bc150fa0acf4a7ee820759484932e0a 100644 (file)
@@ -73,7 +73,7 @@ endif
 
 if ENABLE_GOST
 libcrypto_la_SOURCES += \
-       gost/nettle-write.h \
+       gost/nettle-write.h gost/write-le32.c \
        gost/gost28147.c gost/gost28147.h gost/gost-wrap.c \
        gost/gosthash94.c gost/gosthash94.h gost/gosthash94-meta.c \
        gost/streebog.c gost/streebog.h gost/streebog-meta.c \
index f3d2b7411225741b3491934ec5d8df65e4ecdbe2..ca0c0843eb4400e9dfa66eb6245e2ef1e102d9ec 100644 (file)
 
 /* FIXME: Use a macro shortcut to memcpy for native endianness. */
 void
+#define _nettle_write_be32 _gnutls_nettle_ecc_write_be32
 _nettle_write_be32(size_t length, uint8_t *dst,
                   const uint32_t *src);
 void
+#define _nettle_write_le32 _gnutls_nettle_ecc_write_le32
 _nettle_write_le32(size_t length, uint8_t *dst,
                   const uint32_t *src);
 
 void
+#define _nettle_write_le64 _gnutls_nettle_ecc_write_le64
 _nettle_write_le64(size_t length, uint8_t *dst,
                   const uint64_t *src);
 
diff --git a/lib/nettle/gost/write-le32.c b/lib/nettle/gost/write-le32.c
new file mode 100644 (file)
index 0000000..d9d0482
--- /dev/null
@@ -0,0 +1,69 @@
+/* write-le32.c
+
+   Copyright (C) 2001, 2011 Niels Möller
+
+   This file is part of GNU Nettle.
+
+   GNU Nettle is free software: you can redistribute it and/or
+   modify it under the terms of either:
+
+     * the GNU Lesser General Public License as published by the Free
+       Software Foundation; either version 3 of the License, or (at your
+       option) any later version.
+
+   or
+
+     * the GNU General Public License as published by the Free
+       Software Foundation; either version 2 of the License, or (at your
+       option) any later version.
+
+   or both in parallel, as here.
+
+   GNU Nettle is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received copies of the GNU General Public License and
+   the GNU Lesser General Public License along with this program.  If
+   not, see http://www.gnu.org/licenses/.
+*/
+
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+
+#include "nettle-write.h"
+
+#include <nettle/macros.h>
+
+void
+_nettle_write_le32(size_t length, uint8_t *dst,
+                  const uint32_t *src)
+{
+  size_t i;
+  size_t words;
+  unsigned leftover;
+  
+  words = length / 4;
+  leftover = length % 4;
+
+  for (i = 0; i < words; i++, dst += 4)
+    LE_WRITE_UINT32(dst, src[i]);
+
+  if (leftover)
+    {
+      uint32_t word;
+      
+      word = src[i];
+
+      do
+       {
+         *dst++ = word & 0xff;
+         word >>= 8;
+       }
+      while (--leftover);
+    }
+}