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

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2014-04-16 13:06:08 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2014-04-16 13:06:08 +0400
commitce63e95d06907d1cf4c5e78d512be54f0f6a2f01 (patch)
treeb84d7752948d703f980827d01a2ed0b9ac590d9d /core/src/main/java/org/bouncycastle/crypto/signers
parent069d224378f3a782276aee4da4d2aa2b48a403a7 (diff)
A SecureRandom should not be created or stored if not needed
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/signers')
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/signers/DSASigner.java14
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/signers/ECDSASigner.java14
2 files changed, 22 insertions, 6 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/signers/DSASigner.java b/core/src/main/java/org/bouncycastle/crypto/signers/DSASigner.java
index 292c4087..f3614f39 100644
--- a/core/src/main/java/org/bouncycastle/crypto/signers/DSASigner.java
+++ b/core/src/main/java/org/bouncycastle/crypto/signers/DSASigner.java
@@ -45,18 +45,19 @@ public class DSASigner
boolean forSigning,
CipherParameters param)
{
+ SecureRandom providedRandom = null;
+
if (forSigning)
{
if (param instanceof ParametersWithRandom)
{
- ParametersWithRandom rParam = (ParametersWithRandom)param;
+ ParametersWithRandom rParam = (ParametersWithRandom)param;
- this.random = rParam.getRandom();
this.key = (DSAPrivateKeyParameters)rParam.getParameters();
+ providedRandom = rParam.getRandom();
}
else
{
- this.random = new SecureRandom();
this.key = (DSAPrivateKeyParameters)param;
}
}
@@ -64,6 +65,8 @@ public class DSASigner
{
this.key = (DSAPublicKeyParameters)param;
}
+
+ this.random = initSecureRandom(forSigning && !kCalculator.isDeterministic(), providedRandom);
}
/**
@@ -157,4 +160,9 @@ public class DSASigner
return new BigInteger(1, trunc);
}
}
+
+ protected SecureRandom initSecureRandom(boolean needed, SecureRandom provided)
+ {
+ return !needed ? null : (provided != null) ? provided : new SecureRandom();
+ }
}
diff --git a/core/src/main/java/org/bouncycastle/crypto/signers/ECDSASigner.java b/core/src/main/java/org/bouncycastle/crypto/signers/ECDSASigner.java
index 8ea2a5b9..5fce1121 100644
--- a/core/src/main/java/org/bouncycastle/crypto/signers/ECDSASigner.java
+++ b/core/src/main/java/org/bouncycastle/crypto/signers/ECDSASigner.java
@@ -49,18 +49,19 @@ public class ECDSASigner
boolean forSigning,
CipherParameters param)
{
+ SecureRandom providedRandom = null;
+
if (forSigning)
{
if (param instanceof ParametersWithRandom)
{
- ParametersWithRandom rParam = (ParametersWithRandom)param;
+ ParametersWithRandom rParam = (ParametersWithRandom)param;
- this.random = rParam.getRandom();
this.key = (ECPrivateKeyParameters)rParam.getParameters();
+ providedRandom = rParam.getRandom();
}
else
{
- this.random = new SecureRandom();
this.key = (ECPrivateKeyParameters)param;
}
}
@@ -68,6 +69,8 @@ public class ECDSASigner
{
this.key = (ECPublicKeyParameters)param;
}
+
+ this.random = initSecureRandom(forSigning && !kCalculator.isDeterministic(), providedRandom);
}
// 5.3 pg 28
@@ -186,4 +189,9 @@ public class ECDSASigner
{
return new FixedPointCombMultiplier();
}
+
+ protected SecureRandom initSecureRandom(boolean needed, SecureRandom provided)
+ {
+ return !needed ? null : (provided != null) ? provided : new SecureRandom();
+ }
}