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-03-12 15:11:46 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2014-03-12 15:11:46 +0400
commit67de29f9e593a52552f838bf3542a85ae7d8278f (patch)
treeb928371abaad623aa31c8a06f95aeed06b4e89ed /core/src/main/java/org
parent0294f98205215e542647c2be0a4701e46aba1c3b (diff)
Allow subclasses to override the ECMultiplier used for base-point
multiplication
Diffstat (limited to 'core/src/main/java/org')
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/ec/ECElGamalEncryptor.java7
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/ec/ECFixedTransform.java7
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.java7
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/ec/ECNewRandomnessTransform.java7
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/generators/ECKeyPairGenerator.java8
-rwxr-xr-xcore/src/main/java/org/bouncycastle/crypto/kems/ECIESKeyEncapsulation.java7
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/signers/DSTU4145Signer.java7
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/signers/ECDSASigner.java9
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/signers/ECGOST3410Signer.java7
9 files changed, 56 insertions, 10 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/ec/ECElGamalEncryptor.java b/core/src/main/java/org/bouncycastle/crypto/ec/ECElGamalEncryptor.java
index a5296830..48fc0467 100644
--- a/core/src/main/java/org/bouncycastle/crypto/ec/ECElGamalEncryptor.java
+++ b/core/src/main/java/org/bouncycastle/crypto/ec/ECElGamalEncryptor.java
@@ -67,7 +67,7 @@ public class ECElGamalEncryptor
ECDomainParameters ec = key.getParameters();
BigInteger k = ECUtil.generateK(ec.getN(), random);
- ECMultiplier basePointMultiplier = new FixedPointCombMultiplier();
+ ECMultiplier basePointMultiplier = createBasePointMultiplier();
ECPoint[] gamma_phi = new ECPoint[]{
basePointMultiplier.multiply(ec.getG(), k),
@@ -78,4 +78,9 @@ public class ECElGamalEncryptor
return new ECPair(gamma_phi[0], gamma_phi[1]);
}
+
+ protected ECMultiplier createBasePointMultiplier()
+ {
+ return new FixedPointCombMultiplier();
+ }
}
diff --git a/core/src/main/java/org/bouncycastle/crypto/ec/ECFixedTransform.java b/core/src/main/java/org/bouncycastle/crypto/ec/ECFixedTransform.java
index 02f5ca37..2c6a920b 100644
--- a/core/src/main/java/org/bouncycastle/crypto/ec/ECFixedTransform.java
+++ b/core/src/main/java/org/bouncycastle/crypto/ec/ECFixedTransform.java
@@ -58,7 +58,7 @@ public class ECFixedTransform
ECDomainParameters ec = key.getParameters();
BigInteger n = ec.getN();
- ECMultiplier basePointMultiplier = new FixedPointCombMultiplier();
+ ECMultiplier basePointMultiplier = createBasePointMultiplier();
BigInteger k = this.k.mod(n);
ECPoint[] gamma_phi = new ECPoint[]{
@@ -80,4 +80,9 @@ public class ECFixedTransform
{
return k;
}
+
+ protected ECMultiplier createBasePointMultiplier()
+ {
+ return new FixedPointCombMultiplier();
+ }
}
diff --git a/core/src/main/java/org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.java b/core/src/main/java/org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.java
index 9f7a0bf1..112d20c1 100644
--- a/core/src/main/java/org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.java
+++ b/core/src/main/java/org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.java
@@ -68,7 +68,7 @@ public class ECNewPublicKeyTransform
ECDomainParameters ec = key.getParameters();
BigInteger n = ec.getN();
- ECMultiplier basePointMultiplier = new FixedPointCombMultiplier();
+ ECMultiplier basePointMultiplier = createBasePointMultiplier();
BigInteger k = ECUtil.generateK(n, random);
ECPoint[] gamma_phi = new ECPoint[]{
@@ -80,4 +80,9 @@ public class ECNewPublicKeyTransform
return new ECPair(gamma_phi[0], gamma_phi[1]);
}
+
+ protected ECMultiplier createBasePointMultiplier()
+ {
+ return new FixedPointCombMultiplier();
+ }
}
diff --git a/core/src/main/java/org/bouncycastle/crypto/ec/ECNewRandomnessTransform.java b/core/src/main/java/org/bouncycastle/crypto/ec/ECNewRandomnessTransform.java
index c146a0fb..7bfc0b30 100644
--- a/core/src/main/java/org/bouncycastle/crypto/ec/ECNewRandomnessTransform.java
+++ b/core/src/main/java/org/bouncycastle/crypto/ec/ECNewRandomnessTransform.java
@@ -73,7 +73,7 @@ public class ECNewRandomnessTransform
ECDomainParameters ec = key.getParameters();
BigInteger n = ec.getN();
- ECMultiplier basePointMultiplier = new FixedPointCombMultiplier();
+ ECMultiplier basePointMultiplier = createBasePointMultiplier();
BigInteger k = ECUtil.generateK(n, random);
ECPoint[] gamma_phi = new ECPoint[]{
@@ -97,4 +97,9 @@ public class ECNewRandomnessTransform
{
return lastK;
}
+
+ protected ECMultiplier createBasePointMultiplier()
+ {
+ return new FixedPointCombMultiplier();
+ }
}
diff --git a/core/src/main/java/org/bouncycastle/crypto/generators/ECKeyPairGenerator.java b/core/src/main/java/org/bouncycastle/crypto/generators/ECKeyPairGenerator.java
index 38807a4c..1bae4638 100644
--- a/core/src/main/java/org/bouncycastle/crypto/generators/ECKeyPairGenerator.java
+++ b/core/src/main/java/org/bouncycastle/crypto/generators/ECKeyPairGenerator.java
@@ -11,6 +11,7 @@ import org.bouncycastle.crypto.params.ECKeyGenerationParameters;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.bouncycastle.math.ec.ECConstants;
+import org.bouncycastle.math.ec.ECMultiplier;
import org.bouncycastle.math.ec.ECPoint;
import org.bouncycastle.math.ec.FixedPointCombMultiplier;
@@ -50,10 +51,15 @@ public class ECKeyPairGenerator
}
while (d.equals(ZERO) || (d.compareTo(n) >= 0));
- ECPoint Q = new FixedPointCombMultiplier().multiply(params.getG(), d);
+ ECPoint Q = createBasePointMultiplier().multiply(params.getG(), d);
return new AsymmetricCipherKeyPair(
new ECPublicKeyParameters(Q, params),
new ECPrivateKeyParameters(d, params));
}
+
+ protected ECMultiplier createBasePointMultiplier()
+ {
+ return new FixedPointCombMultiplier();
+ }
}
diff --git a/core/src/main/java/org/bouncycastle/crypto/kems/ECIESKeyEncapsulation.java b/core/src/main/java/org/bouncycastle/crypto/kems/ECIESKeyEncapsulation.java
index 746d26ca..517acfb1 100755
--- a/core/src/main/java/org/bouncycastle/crypto/kems/ECIESKeyEncapsulation.java
+++ b/core/src/main/java/org/bouncycastle/crypto/kems/ECIESKeyEncapsulation.java
@@ -123,7 +123,7 @@ public class ECIESKeyEncapsulation
// Compute the static-ephemeral key agreement
BigInteger rPrime = CofactorMode ? r.multiply(h).mod(n) : r;
- ECMultiplier basePointMultiplier = new FixedPointCombMultiplier();
+ ECMultiplier basePointMultiplier = createBasePointMultiplier();
ECPoint[] ghTilde = new ECPoint[]{
basePointMultiplier.multiply(ecParams.getG(), r),
@@ -236,4 +236,9 @@ public class ECIESKeyEncapsulation
{
return decrypt(in, 0, in.length, keyLen);
}
+
+ protected ECMultiplier createBasePointMultiplier()
+ {
+ return new FixedPointCombMultiplier();
+ }
}
diff --git a/core/src/main/java/org/bouncycastle/crypto/signers/DSTU4145Signer.java b/core/src/main/java/org/bouncycastle/crypto/signers/DSTU4145Signer.java
index 0a3ef37f..d0b893a6 100644
--- a/core/src/main/java/org/bouncycastle/crypto/signers/DSTU4145Signer.java
+++ b/core/src/main/java/org/bouncycastle/crypto/signers/DSTU4145Signer.java
@@ -75,7 +75,7 @@ public class DSTU4145Signer
BigInteger d = ((ECPrivateKeyParameters)key).getD();
- ECMultiplier basePointMultiplier = new FixedPointCombMultiplier();
+ ECMultiplier basePointMultiplier = createBasePointMultiplier();
do
{
@@ -135,6 +135,11 @@ public class DSTU4145Signer
return fieldElement2Integer(n, y).compareTo(r) == 0;
}
+ protected ECMultiplier createBasePointMultiplier()
+ {
+ return new FixedPointCombMultiplier();
+ }
+
/**
* Generates random integer such, than its bit length is less than that of n
*/
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 26fd588e..8ea2a5b9 100644
--- a/core/src/main/java/org/bouncycastle/crypto/signers/ECDSASigner.java
+++ b/core/src/main/java/org/bouncycastle/crypto/signers/ECDSASigner.java
@@ -97,7 +97,7 @@ public class ECDSASigner
BigInteger r, s;
- ECMultiplier basePointMultiplier = new FixedPointCombMultiplier();
+ ECMultiplier basePointMultiplier = createBasePointMultiplier();
// 5.3.2
do // generate s
@@ -169,7 +169,7 @@ public class ECDSASigner
return v.equals(r);
}
- private BigInteger calculateE(BigInteger n, byte[] message)
+ protected BigInteger calculateE(BigInteger n, byte[] message)
{
int log2n = n.bitLength();
int messageBitLength = message.length * 8;
@@ -181,4 +181,9 @@ public class ECDSASigner
}
return e;
}
+
+ protected ECMultiplier createBasePointMultiplier()
+ {
+ return new FixedPointCombMultiplier();
+ }
}
diff --git a/core/src/main/java/org/bouncycastle/crypto/signers/ECGOST3410Signer.java b/core/src/main/java/org/bouncycastle/crypto/signers/ECGOST3410Signer.java
index ed256fe8..0ef88762 100644
--- a/core/src/main/java/org/bouncycastle/crypto/signers/ECGOST3410Signer.java
+++ b/core/src/main/java/org/bouncycastle/crypto/signers/ECGOST3410Signer.java
@@ -75,7 +75,7 @@ public class ECGOST3410Signer
BigInteger r, s;
- ECMultiplier basePointMultiplier = new FixedPointCombMultiplier();
+ ECMultiplier basePointMultiplier = createBasePointMultiplier();
do // generate s
{
@@ -152,4 +152,9 @@ public class ECGOST3410Signer
return R.equals(r);
}
+
+ protected ECMultiplier createBasePointMultiplier()
+ {
+ return new FixedPointCombMultiplier();
+ }
}