]> git.ipfire.org Git - thirdparty/gnulib.git/commitdiff
crypto/sha256-buffer: Add some tests.
authorBruno Haible <bruno@clisp.org>
Sat, 17 May 2025 12:16:01 +0000 (14:16 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 17 May 2025 12:16:01 +0000 (14:16 +0200)
* tests/test-sha224-buffer.c: New file, based on
tests/test-sha1-buffer.c.
* tests/test-sha256-buffer.c: New file, based on
tests/test-sha1-buffer.c.
* modules/crypto/sha256-buffer-tests (Files): Add them.
(Makefile.am): Compile and test test-sha224-buffer, test-sha256-buffer.

ChangeLog
modules/crypto/sha256-buffer-tests
tests/test-sha224-buffer.c [new file with mode: 0644]
tests/test-sha256-buffer.c [new file with mode: 0644]

index a1937a67729a6a54a457bf6f3b5f036f7beb0f90..21ca1b4a63a3a9e22c925f9d6b04e7e78862405b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2025-05-17  Bruno Haible  <bruno@clisp.org>
+
+       crypto/sha256-buffer: Add some tests.
+       * tests/test-sha224-buffer.c: New file, based on
+       tests/test-sha1-buffer.c.
+       * tests/test-sha256-buffer.c: New file, based on
+       tests/test-sha1-buffer.c.
+       * modules/crypto/sha256-buffer-tests (Files): Add them.
+       (Makefile.am): Compile and test test-sha224-buffer, test-sha256-buffer.
+
 2025-05-17  Bruno Haible  <bruno@clisp.org>
 
        next-prime tests: Add more tests.
index cf93a8f5fef19bb1a43dae59fb312fd39538e8af..1fae2f412ec48cf6f478b8dab9d6a6b314ea94c7 100644 (file)
@@ -1,4 +1,6 @@
 Files:
+tests/test-sha224-buffer.c
+tests/test-sha256-buffer.c
 tests/bench-sha224.c
 tests/bench-sha256.c
 tests/bench-digest.h
@@ -12,7 +14,11 @@ gettimeofday
 configure.ac:
 
 Makefile.am:
+TESTS += test-sha224-buffer test-sha256-buffer
+check_PROGRAMS += test-sha224-buffer test-sha256-buffer
 noinst_PROGRAMS += bench-sha224 bench-sha256
+test_sha224_buffer_LDADD = $(LDADD) @LIB_CRYPTO@
+test_sha256_buffer_LDADD = $(LDADD) @LIB_CRYPTO@
 bench_sha224_CPPFLAGS = $(AM_CPPFLAGS) -DNDEBUG
 bench_sha224_LDADD = $(LDADD) @LIB_CRYPTO@
 bench_sha256_CPPFLAGS = $(AM_CPPFLAGS) -DNDEBUG
diff --git a/tests/test-sha224-buffer.c b/tests/test-sha224-buffer.c
new file mode 100644 (file)
index 0000000..97e888e
--- /dev/null
@@ -0,0 +1,51 @@
+/* Test of sha224_buffer() function.
+   Copyright (C) 2005-2025 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program 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 a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "sha256.h"
+
+#include <stdio.h>
+#include <string.h>
+
+int
+main (void)
+{
+  const char *in1 =
+    "Prejmer has 8647 inhabitants.\n"
+    "<https://en.wikipedia.org/wiki/Prejmer>\n";
+  const char *out1 =
+    "\x8a\x7d\x25\x22\x11\x13\x61\x35\x7a\x61\x6e\x4a\xf5\xbd\x0a\x17"
+    "\x5b\xdf\x7e\x27\xa1\xb7\x00\xf4\x62\x89\x41\x84";
+  char buf[SHA224_DIGEST_SIZE];
+
+  if (memcmp (sha224_buffer (in1, strlen (in1), buf),
+              out1, SHA224_DIGEST_SIZE) != 0)
+    {
+      size_t i;
+      printf ("expected:\n");
+      for (i = 0; i < SHA224_DIGEST_SIZE; i++)
+        printf ("%02x ", out1[i] & 0xFFu);
+      printf ("\ncomputed:\n");
+      for (i = 0; i < SHA224_DIGEST_SIZE; i++)
+        printf ("%02x ", buf[i] & 0xFFu);
+      printf ("\n");
+      return 1;
+    }
+
+  return 0;
+}
diff --git a/tests/test-sha256-buffer.c b/tests/test-sha256-buffer.c
new file mode 100644 (file)
index 0000000..08fb841
--- /dev/null
@@ -0,0 +1,51 @@
+/* Test of sha256_buffer() function.
+   Copyright (C) 2005-2025 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program 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 a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "sha256.h"
+
+#include <stdio.h>
+#include <string.h>
+
+int
+main (void)
+{
+  const char *in1 =
+    "Prejmer has 8647 inhabitants.\n"
+    "<https://en.wikipedia.org/wiki/Prejmer>\n";
+  const char *out1 =
+    "\xd1\x27\xec\x93\xdd\x7f\x60\xaa\x72\x51\x51\x40\xd0\xe2\x5e\xc7"
+    "\x89\xaf\xfa\x91\x9c\x8a\x85\xb7\x19\x8d\x8b\x15\xaf\xa3\x4b\x2c";
+  char buf[SHA256_DIGEST_SIZE];
+
+  if (memcmp (sha256_buffer (in1, strlen (in1), buf),
+              out1, SHA256_DIGEST_SIZE) != 0)
+    {
+      size_t i;
+      printf ("expected:\n");
+      for (i = 0; i < SHA256_DIGEST_SIZE; i++)
+        printf ("%02x ", out1[i] & 0xFFu);
+      printf ("\ncomputed:\n");
+      for (i = 0; i < SHA256_DIGEST_SIZE; i++)
+        printf ("%02x ", buf[i] & 0xFFu);
+      printf ("\n");
+      return 1;
+    }
+
+  return 0;
+}