LCOV - code coverage report
Current view: top level - test - test-random-util.c (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 33 35 94.3 %
Date: 2019-08-22 15:41:25 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: LGPL-2.1+ */
       2             : 
       3             : #include "hexdecoct.h"
       4             : #include "random-util.h"
       5             : #include "log.h"
       6             : #include "tests.h"
       7             : 
       8           4 : static void test_genuine_random_bytes(RandomFlags flags) {
       9           4 :         uint8_t buf[16] = {};
      10             :         unsigned i;
      11             : 
      12           4 :         log_info("/* %s */", __func__);
      13             : 
      14          64 :         for (i = 1; i < sizeof buf; i++) {
      15          60 :                 assert_se(genuine_random_bytes(buf, i, flags) == 0);
      16          60 :                 if (i + 1 < sizeof buf)
      17          56 :                         assert_se(buf[i] == 0);
      18             : 
      19          60 :                 hexdump(stdout, buf, i);
      20             :         }
      21           4 : }
      22             : 
      23           1 : static void test_pseudo_random_bytes(void) {
      24           1 :         uint8_t buf[16] = {};
      25             :         unsigned i;
      26             : 
      27           1 :         log_info("/* %s */", __func__);
      28             : 
      29          16 :         for (i = 1; i < sizeof buf; i++) {
      30          15 :                 pseudo_random_bytes(buf, i);
      31          15 :                 if (i + 1 < sizeof buf)
      32          14 :                         assert_se(buf[i] == 0);
      33             : 
      34          15 :                 hexdump(stdout, buf, i);
      35             :         }
      36           1 : }
      37             : 
      38           1 : static void test_rdrand(void) {
      39             :         int r, i;
      40             : 
      41          11 :         for (i = 0; i < 10; i++) {
      42          10 :                 unsigned long x = 0;
      43             : 
      44          10 :                 r = rdrand(&x);
      45          10 :                 if (r < 0) {
      46           0 :                         log_error_errno(r, "RDRAND failed: %m");
      47           0 :                         return;
      48             :                 }
      49             : 
      50          10 :                 printf("%lx\n", x);
      51             :         }
      52             : }
      53             : 
      54           1 : int main(int argc, char **argv) {
      55           1 :         test_setup_logging(LOG_DEBUG);
      56             : 
      57           1 :         test_genuine_random_bytes(RANDOM_EXTEND_WITH_PSEUDO);
      58           1 :         test_genuine_random_bytes(0);
      59           1 :         test_genuine_random_bytes(RANDOM_BLOCK);
      60           1 :         test_genuine_random_bytes(RANDOM_ALLOW_RDRAND);
      61             : 
      62           1 :         test_pseudo_random_bytes();
      63             : 
      64           1 :         test_rdrand();
      65             : 
      66           1 :         return 0;
      67             : }

Generated by: LCOV version 1.14