AusweisApp
Lade ...
Suche ...
Keine Treffer
Randomizer.h
gehe zur Dokumentation dieser Datei
1
5#pragma once
6
7#include <QList>
8#include <QUuid>
9
10#include <random>
11
12
13class test_Randomizer;
14
15
16namespace governikus
17{
18
20{
23
24 private:
25 template<typename T = std::mt19937_64::result_type, typename U = uchar> struct UniversalBuffer
26 {
27 U data[sizeof(T)] = {};
28
29 T get()
30 {
31#if __cpp_lib_bit_cast >= 201806
32 return std::bit_cast<T>(data);
33
34#else
35 T number;
36 memcpy(&number, &data, sizeof(T));
37 return number;
38
39#endif
40 }
41
42
43 void set(T pNumber)
44 {
45 memcpy(&data, &pNumber, sizeof(T));
46 }
47
48
49 static_assert(sizeof(T) == sizeof(data));
50 };
51
52 std::mt19937_64 mGenerator;
53 bool mSecureRandom;
54
55 template<typename T> static QList<T> getEntropy();
56 template<typename T> static QList<T> getEntropyWin();
57 template<typename T> static QList<T> getEntropyUnixoid();
58 template<typename T> static QList<T> getEntropyApple();
59
60 protected:
61 Randomizer();
62 ~Randomizer() = default;
63
64 public:
66
67 [[nodiscard]] std::mt19937_64& getGenerator();
68 [[nodiscard]] bool isSecureRandom() const;
69
72
73};
74
75} // namespace governikus
Definition Randomizer.h:20
friend class ::test_Randomizer
Definition Randomizer.h:22
Randomizer()
Definition Randomizer.cpp:142
QUuid createUuid()
Definition Randomizer.cpp:186
bool isSecureRandom() const
Definition Randomizer.cpp:165
std::mt19937_64 & getGenerator()
Definition Randomizer.cpp:159
static Randomizer & getInstance()
QByteArray createBytes(int pCount)
Definition Randomizer.cpp:171
#define T(v)
Definition http_parser.cpp:237
Defines the AccessRight and AccessRole enum.
Definition CommandApdu.h:17
QSharedPointer< T > decodeObject(const QByteArray &pData, bool pLogging=true)
Template function for decoding an OpenSSL type from DER encoded QByteArray.
Definition ASN1TemplateUtil.h:112