AusweisApp2
Lade ...
Suche ...
Keine Treffer
Randomizer.h
gehe zur Dokumentation dieser Datei
1
7#pragma once
8
9#include <QList>
10#include <QUuid>
11
12#include <random>
13
14class test_Randomizer;
15
16namespace governikus
17{
18
20{
21 Q_DISABLE_COPY(Randomizer)
22 friend class ::test_Randomizer;
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
70 [[nodiscard]] QUuid createUuid();
71
72};
73
74} // namespace governikus
Definition: Randomizer.h:20
friend class ::test_Randomizer
Definition: Randomizer.h:22
Randomizer()
Definition: Randomizer.cpp:141
QUuid createUuid()
Definition: Randomizer.cpp:170
bool isSecureRandom() const
Definition: Randomizer.cpp:164
std::mt19937_64 & getGenerator()
Definition: Randomizer.cpp:158
static Randomizer & getInstance()
#define T(v)
Definition: http_parser.cpp:237
A simple template renderer.
Definition: ActivationContext.h:15