mirror of
https://github.com/status-im/react-native-randombytes.git
synced 2026-08-27 09:01:18 +00:00
Added randomBytes() function
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user