Complete SecureRandom refactoring
2 files changed, 6 insertions, 5 deletions
diff --git a/crypto/src/security/JksStore.cs b/crypto/src/security/JksStore.cs
index c679270a3..69ade11af 100644
--- a/crypto/src/security/JksStore.cs
+++ b/crypto/src/security/JksStore.cs
@@ -154,7 +154,7 @@ namespace Org.BouncyCastle.Security
byte[] pkcs8Key = PrivateKeyInfoFactory.CreatePrivateKeyInfo(key).GetEncoded();
byte[] protectedKey = new byte[pkcs8Key.Length + 40];
- SecureRandom rnd = new SecureRandom();
+ SecureRandom rnd = CryptoServicesRegistrar.GetSecureRandom();
rnd.NextBytes(protectedKey, 0, 20);
IDigest digest = DigestUtilities.GetDigest("SHA-1");
diff --git a/crypto/src/security/SecureRandom.cs b/crypto/src/security/SecureRandom.cs
index 53e5be069..521e7db0e 100644
--- a/crypto/src/security/SecureRandom.cs
+++ b/crypto/src/security/SecureRandom.cs
@@ -17,7 +17,8 @@ namespace Org.BouncyCastle.Security
return Interlocked.Increment(ref counter);
}
- private static readonly SecureRandom Master = new SecureRandom(new CryptoApiRandomGenerator());
+ private static readonly SecureRandom MasterRandom = new SecureRandom(new CryptoApiRandomGenerator());
+ internal static readonly SecureRandom ArbitraryRandom = new SecureRandom(new VmpcRandomGenerator(), 16);
private static DigestRandomGenerator CreatePrng(string digestName, bool autoSeed)
{
@@ -102,13 +103,13 @@ namespace Org.BouncyCastle.Security
public virtual byte[] GenerateSeed(int length)
{
- return GetNextBytes(Master, length);
+ return GetNextBytes(MasterRandom, length);
}
#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER
public virtual void GenerateSeed(Span<byte> seed)
{
- Master.NextBytes(seed);
+ MasterRandom.NextBytes(seed);
}
#endif
@@ -255,7 +256,7 @@ namespace Org.BouncyCastle.Security
#else
byte[] seed = new byte[seedLength];
#endif
- Master.NextBytes(seed);
+ MasterRandom.NextBytes(seed);
generator.AddSeedMaterial(seed);
}
}
|