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
path: root/core
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2014-07-02 12:30:17 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2014-07-02 12:30:17 +0400
commit34ee5d8d107fc4bf69698218b1ae8309964d56be (patch)
tree90d323e66aae5a0d7cc9f7fc2d4e08821a90bcc8 /core
parent91b4a54d98d910639163931d24b0a7e41e4f9e78 (diff)
Use higher precision approximations for g1/g2 (GLV Type B)
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java24
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/ec/CustomNamedCurves.java18
-rw-r--r--core/src/main/java/org/bouncycastle/math/ec/tools/DiscoverEndomorphisms.java2
3 files changed, 22 insertions, 22 deletions
diff --git a/core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java b/core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java
index 450fd703..ed7a8d82 100644
--- a/core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java
+++ b/core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java
@@ -161,9 +161,9 @@ public class SECNamedCurves
new BigInteger[]{
new BigInteger("127971af8721782ecffa3", 16),
new BigInteger("9162fbe73984472a0a9e", 16) },
- new BigInteger("48b17df39cc22395054e8", 16),
- new BigInteger("4b1a0f889c499de17a820", 16),
- 163);
+ new BigInteger("9162fbe73984472a0a9d0590", 16),
+ new BigInteger("96341f1138933bc2f503fd44", 16),
+ 176);
ECCurve curve = configureCurveGLV(new ECCurve.Fp(p, a, b, n, h), glv);
// ECPoint G = curve.decodePoint(Hex.decode("02"
@@ -252,9 +252,9 @@ public class SECNamedCurves
new BigInteger[]{
new BigInteger("12511cfe811d0f4e6bc688b4d", 16),
new BigInteger("71169be7330b3038edb025f1", 16) },
- new BigInteger("1c45a6f9ccc2cc0e3b6c097c7", 16),
- new BigInteger("2cfecd0037b1712b73ae19575", 16),
- 194);
+ new BigInteger("71169be7330b3038edb025f1d0f9", 16),
+ new BigInteger("b3fb3400dec5c4adceb8655d4c94", 16),
+ 208);
ECCurve curve = configureCurveGLV(new ECCurve.Fp(p, a, b, n, h), glv);
//ECPoint G = curve.decodePoint(Hex.decode("03"
@@ -317,9 +317,9 @@ public class SECNamedCurves
new BigInteger[]{
new BigInteger("1243ae1b4d71613bc9f780a03690e", 16),
new BigInteger("6b8cf07d4ca75c88957d9d670591", 16) },
- new BigInteger("35c6783ea653ae444abeceb382c82", 16),
- new BigInteger("5c56f89bc5375b9a04fd364e31bdd", 16),
- 227);
+ new BigInteger("6b8cf07d4ca75c88957d9d67059037a4", 16),
+ new BigInteger("b8adf1378a6eb73409fa6c9c637ba7f5", 16),
+ 240);
ECCurve curve = configureCurveGLV(new ECCurve.Fp(p, a, b, n, h), glv);
//ECPoint G = curve.decodePoint(Hex.decode("03"
@@ -382,9 +382,9 @@ public class SECNamedCurves
new BigInteger[]{
new BigInteger("114ca50f7a8e2f3f657c1108d9d44cfd8", 16),
new BigInteger("3086d221a7d46bcde86c90e49284eb15", 16) },
- new BigInteger("c21b48869f51af37a1b243924a13ac55", 16),
- new BigInteger("3910dfb58043a20a1bd51fea42aff9311", 16),
- 258);
+ new BigInteger("3086d221a7d46bcde86c90e49284eb153dab", 16),
+ new BigInteger("e4437ed6010e88286f547fa90abfe4c42212", 16),
+ 272);
ECCurve curve = configureCurveGLV(new ECCurve.Fp(p, a, b, n, h), glv);
//ECPoint G = curve.decodePoint(Hex.decode("02"
diff --git a/core/src/main/java/org/bouncycastle/crypto/ec/CustomNamedCurves.java b/core/src/main/java/org/bouncycastle/crypto/ec/CustomNamedCurves.java
index 5bfe96d7..c3d4f5bb 100644
--- a/core/src/main/java/org/bouncycastle/crypto/ec/CustomNamedCurves.java
+++ b/core/src/main/java/org/bouncycastle/crypto/ec/CustomNamedCurves.java
@@ -80,9 +80,9 @@ public class CustomNamedCurves
new BigInteger[]{
new BigInteger("12511cfe811d0f4e6bc688b4d", 16),
new BigInteger("71169be7330b3038edb025f1", 16) },
- new BigInteger("1c45a6f9ccc2cc0e3b6c097c7", 16),
- new BigInteger("2cfecd0037b1712b73ae19575", 16),
- 194);
+ new BigInteger("71169be7330b3038edb025f1d0f9", 16),
+ new BigInteger("b3fb3400dec5c4adceb8655d4c94", 16),
+ 208);
ECCurve curve = configureCurveGLV(new SecP192K1Curve(), glv);
ECPoint G = curve.decodePoint(Hex.decode("04"
+ "DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D"
@@ -124,9 +124,9 @@ public class CustomNamedCurves
new BigInteger[]{
new BigInteger("1243ae1b4d71613bc9f780a03690e", 16),
new BigInteger("6b8cf07d4ca75c88957d9d670591", 16) },
- new BigInteger("35c6783ea653ae444abeceb382c82", 16),
- new BigInteger("5c56f89bc5375b9a04fd364e31bdd", 16),
- 227);
+ new BigInteger("6b8cf07d4ca75c88957d9d67059037a4", 16),
+ new BigInteger("b8adf1378a6eb73409fa6c9c637ba7f5", 16),
+ 240);
ECCurve curve = configureCurveGLV(new SecP224K1Curve(), glv);
ECPoint G = curve.decodePoint(Hex.decode("04"
+ "A1455B334DF099DF30FC28A169A467E9E47075A90F7E650EB6B7A45C"
@@ -168,9 +168,9 @@ public class CustomNamedCurves
new BigInteger[]{
new BigInteger("114ca50f7a8e2f3f657c1108d9d44cfd8", 16),
new BigInteger("3086d221a7d46bcde86c90e49284eb15", 16) },
- new BigInteger("c21b48869f51af37a1b243924a13ac55", 16),
- new BigInteger("3910dfb58043a20a1bd51fea42aff9311", 16),
- 258);
+ new BigInteger("3086d221a7d46bcde86c90e49284eb153dab", 16),
+ new BigInteger("e4437ed6010e88286f547fa90abfe4c42212", 16),
+ 272);
ECCurve curve = configureCurveGLV(new SecP256K1Curve(), glv);
ECPoint G = curve.decodePoint(Hex.decode("04"
+ "79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798"
diff --git a/core/src/main/java/org/bouncycastle/math/ec/tools/DiscoverEndomorphisms.java b/core/src/main/java/org/bouncycastle/math/ec/tools/DiscoverEndomorphisms.java
index bf2bca23..4292da31 100644
--- a/core/src/main/java/org/bouncycastle/math/ec/tools/DiscoverEndomorphisms.java
+++ b/core/src/main/java/org/bouncycastle/math/ec/tools/DiscoverEndomorphisms.java
@@ -163,7 +163,7 @@ public class DiscoverEndomorphisms
*/
BigInteger d = (v1[0].multiply(v2[1])).subtract(v1[1].multiply(v2[0]));
- int bits = n.bitLength() + 2;
+ int bits = n.bitLength() + 16 - (n.bitLength() & 7);
BigInteger g1 = roundQuotient(v2[1].shiftLeft(bits), d);
BigInteger g2 = roundQuotient(v1[1].shiftLeft(bits), d).negate();