1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
4 #include "random-util.h"
8 static void test_genuine_random_bytes(RandomFlags flags
) {
12 log_info("/* %s */", __func__
);
14 for (i
= 1; i
< sizeof buf
; i
++) {
15 assert_se(genuine_random_bytes(buf
, i
, flags
) == 0);
16 if (i
+ 1 < sizeof buf
)
17 assert_se(buf
[i
] == 0);
19 hexdump(stdout
, buf
, i
);
23 static void test_pseudo_random_bytes(void) {
27 log_info("/* %s */", __func__
);
29 for (i
= 1; i
< sizeof buf
; i
++) {
30 pseudo_random_bytes(buf
, i
);
31 if (i
+ 1 < sizeof buf
)
32 assert_se(buf
[i
] == 0);
34 hexdump(stdout
, buf
, i
);
38 static void test_rdrand(void) {
41 for (i
= 0; i
< 10; i
++) {
46 log_error_errno(r
, "RDRAND failed: %m");
54 int main(int argc
, char **argv
) {
55 test_setup_logging(LOG_DEBUG
);
57 test_genuine_random_bytes(RANDOM_EXTEND_WITH_PSEUDO
);
58 test_genuine_random_bytes(0);
59 test_genuine_random_bytes(RANDOM_BLOCK
);
60 test_genuine_random_bytes(RANDOM_ALLOW_RDRAND
);
61 test_genuine_random_bytes(RANDOM_ALLOW_INSECURE
);
63 test_pseudo_random_bytes();