Coverage Report

Created: 2025-12-31 06:08

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/botan/src/lib/entropy/getentropy/getentropy.cpp
Line
Count
Source
1
/*
2
* System Call getentropy(2)
3
* (C) 2017 Alexander Bluhm (genua GmbH)
4
*
5
* Botan is released under the Simplified BSD License (see license.txt)
6
*/
7
8
#include <botan/internal/getentropy.h>
9
10
#include <botan/rng.h>
11
#include <unistd.h>
12
13
// macOS and Android include it in sys/random.h instead
14
#if __has_include(<sys/random.h>)
15
   #include <sys/random.h>
16
#endif
17
18
namespace Botan {
19
20
/**
21
* Gather 256 bytes entropy from getentropy(2).  Note that maximum
22
* buffer size is limited to 256 bytes.  On OpenBSD this does neither
23
* block nor fail.
24
*/
25
0
size_t Getentropy::poll(RandomNumberGenerator& rng) {
26
0
   secure_vector<uint8_t> buf(256);
27
28
0
   if(::getentropy(buf.data(), buf.size()) == 0) {
29
0
      rng.add_entropy(buf.data(), buf.size());
30
0
      return buf.size() * 8;
31
0
   }
32
33
0
   return 0;
34
0
}
35
36
}  // namespace Botan