/src/systemd/src/basic/random-util.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* SPDX-License-Identifier: LGPL-2.1+ */ |
2 | | #pragma once |
3 | | |
4 | | #include <stdbool.h> |
5 | | #include <stddef.h> |
6 | | #include <stdint.h> |
7 | | |
8 | | typedef enum RandomFlags { |
9 | | RANDOM_EXTEND_WITH_PSEUDO = 1 << 0, /* If we can't get enough genuine randomness, but some, fill up the rest with pseudo-randomness */ |
10 | | RANDOM_BLOCK = 1 << 1, /* Rather block than return crap randomness (only if the kernel supports that) */ |
11 | | RANDOM_MAY_FAIL = 1 << 2, /* If we can't get any randomness at all, return early with -ENODATA */ |
12 | | RANDOM_ALLOW_RDRAND = 1 << 3, /* Allow usage of the CPU RNG */ |
13 | | } RandomFlags; |
14 | | |
15 | | int genuine_random_bytes(void *p, size_t n, RandomFlags flags); /* returns "genuine" randomness, optionally filled up with pseudo random, if not enough is available */ |
16 | | void pseudo_random_bytes(void *p, size_t n); /* returns only pseudo-randommess (but possibly seeded from something better) */ |
17 | | void random_bytes(void *p, size_t n); /* returns genuine randomness if cheaply available, and pseudo randomness if not. */ |
18 | | |
19 | | void initialize_srand(void); |
20 | | |
21 | 0 | static inline uint64_t random_u64(void) { |
22 | 0 | uint64_t u; |
23 | 0 | random_bytes(&u, sizeof(u)); |
24 | 0 | return u; |
25 | 0 | } Unexecuted instantiation: networkd-lldp-tx.c:random_u64 Unexecuted instantiation: sd-dhcp-client.c:random_u64 Unexecuted instantiation: sd-ipv4ll.c:random_u64 Unexecuted instantiation: sd-ipv4acd.c:random_u64 Unexecuted instantiation: sd-ndisc.c:random_u64 Unexecuted instantiation: sd-radv.c:random_u64 Unexecuted instantiation: sd-dhcp6-client.c:random_u64 Unexecuted instantiation: journald-rate-limit.c:random_u64 Unexecuted instantiation: timer.c:random_u64 Unexecuted instantiation: dynamic-user.c:random_u64 Unexecuted instantiation: link-config.c:random_u64 Unexecuted instantiation: ask-password-api.c:random_u64 Unexecuted instantiation: hashmap.c:random_u64 Unexecuted instantiation: in-addr-util.c:random_u64 Unexecuted instantiation: random-util.c:random_u64 Unexecuted instantiation: tmpfile-util.c:random_u64 Unexecuted instantiation: user-util.c:random_u64 Unexecuted instantiation: sd-id128.c:random_u64 Unexecuted instantiation: journal-file.c:random_u64 |
26 | | |
27 | 4.46k | static inline uint32_t random_u32(void) { |
28 | 4.46k | uint32_t u; |
29 | 4.46k | random_bytes(&u, sizeof(u)); |
30 | 4.46k | return u; |
31 | 4.46k | } Unexecuted instantiation: networkd-lldp-tx.c:random_u32 Unexecuted instantiation: sd-dhcp-client.c:random_u32 Unexecuted instantiation: sd-ipv4ll.c:random_u32 Unexecuted instantiation: sd-ipv4acd.c:random_u32 Unexecuted instantiation: sd-ndisc.c:random_u32 Unexecuted instantiation: sd-radv.c:random_u32 sd-dhcp6-client.c:random_u32 Line | Count | Source | 27 | 4.46k | static inline uint32_t random_u32(void) { | 28 | 4.46k | uint32_t u; | 29 | 4.46k | random_bytes(&u, sizeof(u)); | 30 | 4.46k | return u; | 31 | 4.46k | } |
Unexecuted instantiation: journald-rate-limit.c:random_u32 Unexecuted instantiation: timer.c:random_u32 Unexecuted instantiation: dynamic-user.c:random_u32 Unexecuted instantiation: link-config.c:random_u32 Unexecuted instantiation: ask-password-api.c:random_u32 Unexecuted instantiation: hashmap.c:random_u32 Unexecuted instantiation: in-addr-util.c:random_u32 Unexecuted instantiation: random-util.c:random_u32 Unexecuted instantiation: tmpfile-util.c:random_u32 Unexecuted instantiation: user-util.c:random_u32 Unexecuted instantiation: sd-id128.c:random_u32 Unexecuted instantiation: journal-file.c:random_u32 |
32 | | |
33 | | int rdrand(unsigned long *ret); |