LCOV - code coverage report
Current view: top level - zephyr/random - random.h Coverage Total Hit
Test: new.info Lines: 100.0 % 7 7
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            1 : /*
       2              :  * Copyright (c) 2013-2014 Wind River Systems, Inc.
       3              :  * Copyright (c) 2023 Intel Corporation
       4              :  *
       5              :  * SPDX-License-Identifier: Apache-2.0
       6              :  */
       7              : 
       8              : /**
       9              :  * @file
      10              :  * @brief Random number generator header file
      11              :  *
      12              :  * This header file declares prototypes for the kernel's random number
      13              :  * generator APIs.
      14              :  *
      15              :  * Typically, a platform enables the appropriate source for the random
      16              :  * number generation based on the hardware platform's capabilities or
      17              :  * (for testing purposes only) enables the TEST_RANDOM_GENERATOR
      18              :  * configuration option.
      19              :  */
      20              : 
      21              : #ifndef ZEPHYR_INCLUDE_RANDOM_RANDOM_H_
      22              : #define ZEPHYR_INCLUDE_RANDOM_RANDOM_H_
      23              : 
      24              : #include <zephyr/types.h>
      25              : #include <stddef.h>
      26              : #include <zephyr/kernel.h>
      27              : 
      28              : /**
      29              :  * @brief Random Function APIs
      30              :  * @defgroup random_api Random Function APIs
      31              :  * @since 1.0
      32              :  * @version 1.0.0
      33              :  * @ingroup crypto
      34              :  * @{
      35              :  */
      36              : 
      37              : #ifdef __cplusplus
      38              : extern "C" {
      39              : #endif
      40              : 
      41              : 
      42              : /**
      43              :  * @brief Fill the destination buffer with random data values that should
      44              :  * pass general randomness tests.
      45              :  *
      46              :  * @note The random values returned are not considered cryptographically
      47              :  * secure random number values.
      48              :  *
      49              :  * @param [out] dst destination buffer to fill with random data.
      50              :  * @param len size of the destination buffer.
      51              :  *
      52              :  */
      53            1 : __syscall void sys_rand_get(void *dst, size_t len);
      54              : 
      55              : /**
      56              :  * @brief Fill the destination buffer with cryptographically secure
      57              :  * random data values.
      58              :  *
      59              :  * @note If the random values requested do not need to be cryptographically
      60              :  * secure then use sys_rand_get() instead.
      61              :  *
      62              :  * @param [out] dst destination buffer to fill.
      63              :  * @param len size of the destination buffer.
      64              :  *
      65              :  * @return 0 if success, -EIO if entropy reseed error
      66              :  *
      67              :  */
      68            1 : __syscall int sys_csrand_get(void *dst, size_t len);
      69              : 
      70              : /**
      71              :  * @brief Return a 8-bit random value that should pass general
      72              :  * randomness tests.
      73              :  *
      74              :  * @note The random value returned is not a cryptographically secure
      75              :  * random number value.
      76              :  *
      77              :  * @return 8-bit random value.
      78              :  */
      79            1 : static inline uint8_t sys_rand8_get(void)
      80              : {
      81              :         uint8_t ret;
      82              : 
      83              :         sys_rand_get(&ret, sizeof(ret));
      84              : 
      85              :         return ret;
      86              : }
      87              : 
      88              : /**
      89              :  * @brief Return a 16-bit random value that should pass general
      90              :  * randomness tests.
      91              :  *
      92              :  * @note The random value returned is not a cryptographically secure
      93              :  * random number value.
      94              :  *
      95              :  * @return 16-bit random value.
      96              :  */
      97            1 : static inline uint16_t sys_rand16_get(void)
      98              : {
      99              :         uint16_t ret;
     100              : 
     101              :         sys_rand_get(&ret, sizeof(ret));
     102              : 
     103              :         return ret;
     104              : }
     105              : 
     106              : /**
     107              :  * @brief Return a 32-bit random value that should pass general
     108              :  * randomness tests.
     109              :  *
     110              :  * @note The random value returned is not a cryptographically secure
     111              :  * random number value.
     112              :  *
     113              :  * @return 32-bit random value.
     114              :  */
     115            1 : static inline uint32_t sys_rand32_get(void)
     116              : {
     117              :         uint32_t ret;
     118              : 
     119              :         sys_rand_get(&ret, sizeof(ret));
     120              : 
     121              :         return ret;
     122              : }
     123              : 
     124              : /**
     125              :  * @brief Return a 64-bit random value that should pass general
     126              :  * randomness tests.
     127              :  *
     128              :  * @note The random value returned is not a cryptographically secure
     129              :  * random number value.
     130              :  *
     131              :  * @return 64-bit random value.
     132              :  */
     133            1 : static inline uint64_t sys_rand64_get(void)
     134              : {
     135              :         uint64_t ret;
     136              : 
     137              :         sys_rand_get(&ret, sizeof(ret));
     138              : 
     139              :         return ret;
     140              : }
     141              : 
     142              : #ifdef __cplusplus
     143              : }
     144              : #endif
     145              : 
     146              : /**
     147              :  * @}
     148              :  */
     149              : 
     150              : #include <zephyr/syscalls/random.h>
     151              : #endif /* ZEPHYR_INCLUDE_RANDOM_RANDOM_H_ */
        

Generated by: LCOV version 2.0-1