Passwordfile library 5.0.11
C++ library to read/write passwords from/to encrypted files
Loading...
Searching...
No Matches
opensslrandomdevice.cpp
Go to the documentation of this file.
2
4
5#include <c++utilities/conversion/binaryconversion.h>
6
7#include <openssl/err.h>
8#include <openssl/rand.h>
9
10#include <string>
11
12using namespace std;
13using namespace CppUtilities;
14
15namespace Util {
16
28
33{
34 unsigned char buf[4];
35 if (RAND_bytes(buf, sizeof(buf))) {
36 return LE::toUInt32(reinterpret_cast<char *>(buf));
37 }
38
39 // handle error case
40 string errorMsg;
41 while (unsigned long errorCode = ERR_get_error()) {
42 if (!errorMsg.empty()) {
43 errorMsg += '\n';
44 }
45 errorMsg += ERR_error_string(errorCode, nullptr);
46 errorCode = ERR_get_error();
47 }
48 throw Io::CryptoException(std::move(errorMsg));
49}
50
55{
56 return RAND_status();
57}
58} // namespace Util
The exception that is thrown when an encryption/decryption error occurs.
result_type operator()() const
Generates a new random number.
bool status() const
Returns the status.
OpenSslRandomDevice()
Constructs a new random device.
Contains utility classes and functions.
Definition openssl.h:9