From: Loup Vaillant Date: Mon, 27 Feb 2023 13:24:05 +0000 (+0100) Subject: Move relevant parts of tests/utils.c to tests/gen X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=c4e6f1931d32882f1da0f0c764eef47808397d80;p=Monocypher.git Move relevant parts of tests/utils.c to tests/gen The main point is to remove dead code from tests/utils.c, and have the tarball be as clean as possible. Incidentally this also cleans up the dependencies for test vector generation as well. --- diff --git a/tests/gen/makefile b/tests/gen/makefile index 486045a..800c6c0 100644 --- a/tests/gen/makefile +++ b/tests/gen/makefile @@ -79,7 +79,7 @@ sha512_hkdf.vec: sha512_hkdf.py %.vec: %.out ./$< > $@ -utils.o: ../utils.c ../utils.h +utils.o: utils.c utils.h $(CC) $(CFLAGS) -c $< -o $@ %.o: %.c ../utils.h ../externals/ed25519-donna/ed25519.h diff --git a/tests/gen/utils.c b/tests/gen/utils.c new file mode 100644 index 0000000..0ef5482 --- /dev/null +++ b/tests/gen/utils.c @@ -0,0 +1,100 @@ +// This file is dual-licensed. Choose whichever licence you want from +// the two licences listed below. +// +// The first licence is a regular 2-clause BSD licence. The second licence +// is the CC-0 from Creative Commons. It is intended to release Monocypher +// to the public domain. The BSD licence serves as a fallback option. +// +// SPDX-License-Identifier: BSD-2-Clause OR CC0-1.0 +// +// ------------------------------------------------------------------------ +// +// Copyright (c) 2017-2019, 2023 Loup Vaillant +// All rights reserved. +// +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// ------------------------------------------------------------------------ +// +// Written in 2017-2019, 2023 by Loup Vaillant +// +// To the extent possible under law, the author(s) have dedicated all copyright +// and related neighboring rights to this software to the public domain +// worldwide. This software is distributed without any warranty. +// +// You should have received a copy of the CC0 Public Domain Dedication along +// with this software. If not, see +// + +#include "utils.h" +#include + +static void store64_le(u8 out[8], u64 in) +{ + out[0] = in & 0xff; + out[1] = (in >> 8) & 0xff; + out[2] = (in >> 16) & 0xff; + out[3] = (in >> 24) & 0xff; + out[4] = (in >> 32) & 0xff; + out[5] = (in >> 40) & 0xff; + out[6] = (in >> 48) & 0xff; + out[7] = (in >> 56) & 0xff; +} + +// Must be seeded with a nonzero value. +// Accessible from the outside so we can modify it +u64 random_state = 12345; + +// Pseudo-random 64 bit number, based on xorshift* +u64 rand64(void) +{ + random_state ^= random_state >> 12; + random_state ^= random_state << 25; + random_state ^= random_state >> 27; + return random_state * 0x2545F4914F6CDD1D; // magic constant +} + +void p_random(u8 *stream, size_t size) +{ + FOR (i, 0, size) { + stream[i] = (u8)rand64(); + } +} + +void print_vector(const u8 *buf, size_t size) +{ + FOR (i, 0, size) { + printf("%x%x", buf[i] >> 4, buf[i] & 0x0f); + } + printf(":\n"); +} + +void print_number(u64 n) +{ + u8 buf[8]; + store64_le(buf, n); + print_vector(buf, 8); +} diff --git a/tests/gen/utils.h b/tests/gen/utils.h new file mode 100644 index 0000000..5704f66 --- /dev/null +++ b/tests/gen/utils.h @@ -0,0 +1,78 @@ +// This file is dual-licensed. Choose whichever licence you want from +// the two licences listed below. +// +// The first licence is a regular 2-clause BSD licence. The second licence +// is the CC-0 from Creative Commons. It is intended to release Monocypher +// to the public domain. The BSD licence serves as a fallback option. +// +// SPDX-License-Identifier: BSD-2-Clause OR CC0-1.0 +// +// ------------------------------------------------------------------------ +// +// Copyright (c) 2017-2019, 2023 Loup Vaillant +// All rights reserved. +// +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// ------------------------------------------------------------------------ +// +// Written in 2017-2019, 2023 by Loup Vaillant +// +// To the extent possible under law, the author(s) have dedicated all copyright +// and related neighboring rights to this software to the public domain +// worldwide. This software is distributed without any warranty. +// +// You should have received a copy of the CC0 Public Domain Dedication along +// with this software. If not, see +// + +#ifndef UTILS_H +#define UTILS_H + +#include +#include + +typedef uint8_t u8; +typedef uint32_t u32; +typedef uint64_t u64; + +#define FOR(i, start, end) for (size_t i = (start); i < (end); i++) +#define SODIUM_INIT ASSERT(sodium_init() != -1) +#define RANDOM_INPUT(name, size) u8 name[size]; p_random(name, size) +#define ASSERT(condition) do { \ + if (!(condition)) { \ + fprintf(stderr, "Assert failure(%s, %d): %s\n", \ + __FILE__, __LINE__, #condition); \ + exit(1); \ + } \ + } while (0) + +u64 rand64(void); // Pseudo-random 64 bit number, based on xorshift* +void p_random(u8 *stream, size_t size); +void print_vector(const u8 *buf, size_t size); +void print_number(u64 n); + +#endif // UTILS_H diff --git a/tests/utils.c b/tests/utils.c index e33ca99..16c1d55 100644 --- a/tests/utils.c +++ b/tests/utils.c @@ -9,7 +9,7 @@ // // ------------------------------------------------------------------------ // -// Copyright (c) 2017-2019, Loup Vaillant +// Copyright (c) 2017-2019, 2023 Loup Vaillant // All rights reserved. // // @@ -39,7 +39,7 @@ // // ------------------------------------------------------------------------ // -// Written in 2017-2019 by Loup Vaillant +// Written in 2017-2019, 2023 by Loup Vaillant // // To the extent possible under law, the author(s) have dedicated all copyright // and related neighboring rights to this software to the public domain @@ -55,18 +55,6 @@ #include #include -void store64_le(u8 out[8], u64 in) -{ - out[0] = in & 0xff; - out[1] = (in >> 8) & 0xff; - out[2] = (in >> 16) & 0xff; - out[3] = (in >> 24) & 0xff; - out[4] = (in >> 32) & 0xff; - out[5] = (in >> 40) & 0xff; - out[6] = (in >> 48) & 0xff; - out[7] = (in >> 56) & 0xff; -} - u32 load32_le(const u8 s[4]) { return @@ -101,21 +89,6 @@ void p_random(u8 *stream, size_t size) } } -void print_vector(const u8 *buf, size_t size) -{ - FOR (i, 0, size) { - printf("%x%x", buf[i] >> 4, buf[i] & 0x0f); - } - printf(":\n"); -} - -void print_number(u64 n) -{ - u8 buf[8]; - store64_le(buf, n); - print_vector(buf, 8); -} - void* alloc(size_t size) { if (size == 0) { diff --git a/tests/utils.h b/tests/utils.h index 78d55fd..4588256 100644 --- a/tests/utils.h +++ b/tests/utils.h @@ -9,7 +9,7 @@ // // ------------------------------------------------------------------------ // -// Copyright (c) 2017-2019, Loup Vaillant +// Copyright (c) 2017-2019, 2023 Loup Vaillant // All rights reserved. // // @@ -39,7 +39,7 @@ // // ------------------------------------------------------------------------ // -// Written in 2017-2019 by Loup Vaillant +// Written in 2017-2019, 2023 by Loup Vaillant // // To the extent possible under law, the author(s) have dedicated all copyright // and related neighboring rights to this software to the public domain @@ -93,13 +93,10 @@ typedef struct { vector out; } vector_reader; -void store64_le(u8 out[8], u64 in); u64 load64_le(const u8 s[8]); u32 load32_le(const u8 s[4]); u64 rand64(void); // Pseudo-random 64 bit number, based on xorshift* void p_random(u8 *stream, size_t size); -void print_vector(const u8 *buf, size_t size); -void print_number(u64 n); void* alloc(size_t size); vector next_input (vector_reader *vectors);