]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-random-util.c
random-util: make use of GRND_INSECURE when it is defined
[thirdparty/systemd.git] / src / test / test-random-util.c
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
2416f73b
ZJS
2
3#include "hexdecoct.h"
4#include "random-util.h"
5#include "log.h"
6d7c4033 6#include "tests.h"
2416f73b 7
94d457e8 8static void test_genuine_random_bytes(RandomFlags flags) {
2416f73b
ZJS
9 uint8_t buf[16] = {};
10 unsigned i;
11
12 log_info("/* %s */", __func__);
13
14 for (i = 1; i < sizeof buf; i++) {
94d457e8 15 assert_se(genuine_random_bytes(buf, i, flags) == 0);
2416f73b
ZJS
16 if (i + 1 < sizeof buf)
17 assert_se(buf[i] == 0);
18
19 hexdump(stdout, buf, i);
20 }
21}
22
3335dc2d 23static void test_pseudo_random_bytes(void) {
2416f73b
ZJS
24 uint8_t buf[16] = {};
25 unsigned i;
26
27 log_info("/* %s */", __func__);
28
29 for (i = 1; i < sizeof buf; i++) {
3335dc2d 30 pseudo_random_bytes(buf, i);
2416f73b
ZJS
31 if (i + 1 < sizeof buf)
32 assert_se(buf[i] == 0);
33
34 hexdump(stdout, buf, i);
35 }
36}
37
33dbab6f 38static void test_rdrand(void) {
97fa202a
LP
39 int r, i;
40
41 for (i = 0; i < 10; i++) {
33dbab6f 42 unsigned long x = 0;
97fa202a 43
33dbab6f 44 r = rdrand(&x);
97fa202a
LP
45 if (r < 0) {
46 log_error_errno(r, "RDRAND failed: %m");
47 return;
48 }
49
33dbab6f 50 printf("%lx\n", x);
97fa202a
LP
51 }
52}
53
2416f73b 54int main(int argc, char **argv) {
6d7c4033 55 test_setup_logging(LOG_DEBUG);
2416f73b 56
94d457e8
LP
57 test_genuine_random_bytes(RANDOM_EXTEND_WITH_PSEUDO);
58 test_genuine_random_bytes(0);
68534345 59 test_genuine_random_bytes(RANDOM_BLOCK);
cc83d519 60 test_genuine_random_bytes(RANDOM_ALLOW_RDRAND);
0497c4c2 61 test_genuine_random_bytes(RANDOM_ALLOW_INSECURE);
2416f73b 62
3335dc2d 63 test_pseudo_random_bytes();
2416f73b 64
33dbab6f 65 test_rdrand();
97fa202a 66
2416f73b
ZJS
67 return 0;
68}