Added randomBytes() function

This commit is contained in:
Volodymyr Kozieiev
2017-12-23 15:51:31 +02:00
parent 028cc2d48e
commit c9d9cfe5b7
2 changed files with 32 additions and 8 deletions
+27 -5
View File
@@ -16,13 +16,13 @@
#include "rnrandombytesdesktop.h"
#include <QCryptographicHash>
#include <QDateTime>
#include <QDebug>
#include <QMap>
#include <QNetworkDiskCache>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QQuickImageProvider>
namespace {
struct RegisterQMLMetaType {
RegisterQMLMetaType() {
@@ -35,18 +35,35 @@ class RNRandomBytesPrivate {
public:
RNRandomBytesPrivate() {
qsrand(QDateTime::currentDateTime().currentMSecsSinceEpoch());
while (seed.size() < 4096) {
seed.append(QChar(qrand()));
}
seed = generateRandomBytes(4096);
}
QString generateRandomBytes(int size);
QString seed;
Bridge* bridge = nullptr;
};
RNRandomBytes::RNRandomBytes(QObject* parent) : QObject(parent), d_ptr(new RNRandomBytesPrivate) {}
RNRandomBytes::~RNRandomBytes() {}
QString RNRandomBytesPrivate::generateRandomBytes(int size) {
QString randomString;
qsrand(QDateTime::currentDateTime().currentMSecsSinceEpoch());
while (randomString.size() < size) {
randomString.append(QChar(qrand()));
}
return randomString;
}
void RNRandomBytes::randomBytes(int length, double funcId) {
Q_D(RNRandomBytes);
if (d->bridge) {
d->bridge->invokePromiseCallback(funcId, QVariantList{"", d->generateRandomBytes(length)});
}
}
QString RNRandomBytes::moduleName() {
return "RNRandomBytes";
}
@@ -58,3 +75,8 @@ QList<ModuleMethod*> RNRandomBytes::methodsToExport() {
QVariantMap RNRandomBytes::constantsToExport() {
return QVariantMap{{"seed", d_ptr->seed}};
}
void RNRandomBytes::setBridge(Bridge* bridge) {
Q_D(RNRandomBytes);
d->bridge = bridge;
}
+5 -3
View File
@@ -34,9 +34,11 @@ public:
Q_INVOKABLE RNRandomBytes(QObject* parent = 0);
~RNRandomBytes();
QString moduleName() override;
QList<ModuleMethod*> methodsToExport() override;
QVariantMap constantsToExport() override;
Q_INVOKABLE void randomBytes(int length, double funcId);
virtual QString moduleName() override;
virtual QList<ModuleMethod*> methodsToExport() override;
virtual QVariantMap constantsToExport() override;
virtual void setBridge(Bridge* bridge) override;
private:
QScopedPointer<RNRandomBytesPrivate> d_ptr;