aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Firestore/Example/Tests/Integration/FSTDatastoreTests.m1
-rw-r--r--Firestore/Source/Remote/FSTExponentialBackoff.mm (renamed from Firestore/Source/Remote/FSTExponentialBackoff.m)13
-rw-r--r--Firestore/Source/Util/FSTUtil.h3
-rw-r--r--Firestore/Source/Util/FSTUtil.m6
4 files changed, 10 insertions, 13 deletions
diff --git a/Firestore/Example/Tests/Integration/FSTDatastoreTests.m b/Firestore/Example/Tests/Integration/FSTDatastoreTests.m
index bf2c44b..047f059 100644
--- a/Firestore/Example/Tests/Integration/FSTDatastoreTests.m
+++ b/Firestore/Example/Tests/Integration/FSTDatastoreTests.m
@@ -40,7 +40,6 @@
#import "Firestore/Source/Remote/FSTRemoteStore.h"
#import "Firestore/Source/Util/FSTAssert.h"
#import "Firestore/Source/Util/FSTDispatchQueue.h"
-#import "Firestore/Source/Util/FSTUtil.h"
#import "Firestore/Example/Tests/Util/FSTIntegrationTestCase.h"
diff --git a/Firestore/Source/Remote/FSTExponentialBackoff.m b/Firestore/Source/Remote/FSTExponentialBackoff.mm
index 2e06238..ad27c25 100644
--- a/Firestore/Source/Remote/FSTExponentialBackoff.m
+++ b/Firestore/Source/Remote/FSTExponentialBackoff.mm
@@ -16,9 +16,12 @@
#import "Firestore/Source/Remote/FSTExponentialBackoff.h"
+#include <random>
+
+#include "Firestore/src/support/secure_random.h"
+
#import "Firestore/Source/Util/FSTDispatchQueue.h"
#import "Firestore/Source/Util/FSTLogger.h"
-#import "Firestore/Source/Util/FSTUtil.h"
@interface FSTExponentialBackoff ()
- (instancetype)initWithDispatchQueue:(FSTDispatchQueue *)dispatchQueue
@@ -33,7 +36,9 @@
@property(nonatomic) NSTimeInterval currentBase;
@end
-@implementation FSTExponentialBackoff
+@implementation FSTExponentialBackoff {
+ firestore::SecureRandom _secureRandom;
+}
- (instancetype)initWithDispatchQueue:(FSTDispatchQueue *)dispatchQueue
initialDelay:(NSTimeInterval)initialDelay
@@ -90,7 +95,9 @@
/** Returns a random value in the range [-currentBase/2, currentBase/2] */
- (NSTimeInterval)jitterDelay {
- return ([FSTUtil randomDouble] - 0.5) * _currentBase;
+ std::uniform_real_distribution<double> dist;
+ double random_double = dist(_secureRandom);
+ return (random_double - 0.5) * _currentBase;
}
@end
diff --git a/Firestore/Source/Util/FSTUtil.h b/Firestore/Source/Util/FSTUtil.h
index 3985d10..230c72a 100644
--- a/Firestore/Source/Util/FSTUtil.h
+++ b/Firestore/Source/Util/FSTUtil.h
@@ -20,9 +20,6 @@ NS_ASSUME_NONNULL_BEGIN
@interface FSTUtil : NSObject
-/** Generates a random double between 0 and 1. */
-+ (double)randomDouble;
-
/** Generates a random ID suitable for use as a document ID. */
+ (NSString *)autoID;
diff --git a/Firestore/Source/Util/FSTUtil.m b/Firestore/Source/Util/FSTUtil.m
index a25cd7e..47a8821 100644
--- a/Firestore/Source/Util/FSTUtil.m
+++ b/Firestore/Source/Util/FSTUtil.m
@@ -18,18 +18,12 @@
NS_ASSUME_NONNULL_BEGIN
-static const double kArc4RandomMax = 0x100000000;
-
static const int kAutoIDLength = 20;
static NSString *const kAutoIDAlphabet =
@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
@implementation FSTUtil
-+ (double)randomDouble {
- return ((double)arc4random() / kArc4RandomMax);
-}
-
+ (NSString *)autoID {
unichar autoID[kAutoIDLength];
for (int i = 0; i < kAutoIDLength; i++) {