Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Geyer <debfx@fobos.de>2011-07-08 16:40:42 +0400
committerFelix Geyer <debfx@fobos.de>2011-07-08 16:40:42 +0400
commit8335db4db5556e918d5e8a321944d3b16d32f638 (patch)
treed4f47d70d32a065a9476234867805f48871dba40 /src
parent4dbdc4d847709e7ad24565991e634db70c4f878f (diff)
Add Random::randomUInt() and Random::randomUIntRange().
Diffstat (limited to 'src')
-rw-r--r--src/crypto/Random.cpp19
-rw-r--r--src/crypto/Random.h11
2 files changed, 29 insertions, 1 deletions
diff --git a/src/crypto/Random.cpp b/src/crypto/Random.cpp
index 0d6d77168..d84106ec0 100644
--- a/src/crypto/Random.cpp
+++ b/src/crypto/Random.cpp
@@ -21,7 +21,7 @@
void Random::randomize(QByteArray& ba)
{
- gcry_randomize(ba.data(), ba.size(), GCRY_STRONG_RANDOM);
+ randomize(ba.data(), ba.size());
}
QByteArray Random::randomArray(int len)
@@ -34,6 +34,23 @@ QByteArray Random::randomArray(int len)
return ba;
}
+quint32 Random::randomUInt(quint32 limit)
+{
+ quint32 rand;
+ randomize(&rand, 4);
+ return (rand % limit);
+}
+
+quint32 Random::randomUIntRange(quint32 min, quint32 max)
+{
+ return min + randomUInt(max - min);
+}
+
+void Random::randomize(void* data, int len)
+{
+ gcry_randomize(data, len, GCRY_STRONG_RANDOM);
+}
+
Random::Random()
{
}
diff --git a/src/crypto/Random.h b/src/crypto/Random.h
index a93f5a3c7..987ba6fd7 100644
--- a/src/crypto/Random.h
+++ b/src/crypto/Random.h
@@ -26,7 +26,18 @@ public:
static void randomize(QByteArray& ba);
static QByteArray randomArray(int len);
+ /**
+ * Generate a random quint32 in the range [0, @p limit)
+ */
+ static quint32 randomUInt(quint32 limit);
+
+ /**
+ * Generate a random quint32 in the range [@p min, @p max)
+ */
+ static quint32 randomUIntRange(quint32 min, quint32 max);
+
private:
+ static void randomize(void* data, int len);
Random();
};