]>
Commit | Line | Data |
---|---|---|
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 | 8 | static 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 | 23 | static 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 | 38 | static 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 | 54 | int 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); |
2416f73b | 61 | |
3335dc2d | 62 | test_pseudo_random_bytes(); |
2416f73b | 63 | |
33dbab6f | 64 | test_rdrand(); |
97fa202a | 65 | |
2416f73b ZJS |
66 | return 0; |
67 | } |