summaryrefslogtreecommitdiff
path: root/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params
diff options
context:
space:
mode:
authorAdam Vartanian <flooey@google.com>2019-02-14 14:42:19 +0000
committerAdam Vartanian <flooey@google.com>2019-02-18 10:18:52 +0000
commit27254450f01adef5f4bb25a648d42eeacc14c438 (patch)
tree90eb8fa6c24a44780cc4c4be2d50555f955d29f4 /repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params
parentbdfb209e7c1139588c82722a809c46667775a314 (diff)
parent1b335c5efbcf241b55345622fe9978047c3fdf9e (diff)
downloadbouncycastle-27254450f01adef5f4bb25a648d42eeacc14c438.tar.gz
Update Bouncy Castle to 1.61
Test: cts -m CtsLibcoreTestCases Test: cts -m CtsLibcoreWycheproofBCTestCases Change-Id: Ifcd182a8537439b945aedf80741bd51cbce37e49
Diffstat (limited to 'repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params')
-rw-r--r--repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/AEADParameters.java9
-rw-r--r--repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DHParameters.java5
-rw-r--r--repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DHValidationParameters.java4
-rw-r--r--repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DSAValidationParameters.java4
-rw-r--r--repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECDomainParameters.java47
-rw-r--r--repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECNamedDomainParameters.java9
-rw-r--r--repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECPublicKeyParameters.java24
-rw-r--r--repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ParametersWithRandom.java7
8 files changed, 72 insertions, 37 deletions
diff --git a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/AEADParameters.java b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/AEADParameters.java
index 0a1c46cf..ad2a9d81 100644
--- a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/AEADParameters.java
+++ b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/AEADParameters.java
@@ -2,6 +2,7 @@
package com.android.org.bouncycastle.crypto.params;
import com.android.org.bouncycastle.crypto.CipherParameters;
+import com.android.org.bouncycastle.util.Arrays;
/**
* @hide This class is not part of the Android public SDK API
@@ -37,9 +38,9 @@ public class AEADParameters
public AEADParameters(KeyParameter key, int macSize, byte[] nonce, byte[] associatedText)
{
this.key = key;
- this.nonce = nonce;
+ this.nonce = Arrays.clone(nonce);
this.macSize = macSize;
- this.associatedText = associatedText;
+ this.associatedText = Arrays.clone(associatedText);
}
public KeyParameter getKey()
@@ -54,11 +55,11 @@ public class AEADParameters
public byte[] getAssociatedText()
{
- return associatedText;
+ return Arrays.clone(associatedText);
}
public byte[] getNonce()
{
- return nonce;
+ return Arrays.clone(nonce);
}
}
diff --git a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DHParameters.java b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DHParameters.java
index e7969190..749c6d83 100644
--- a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DHParameters.java
+++ b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DHParameters.java
@@ -98,6 +98,11 @@ public class DHParameters
}
}
+ if (m > p.bitLength())
+ {
+ throw new IllegalArgumentException("unsafe p value so small specific l required");
+ }
+
this.g = g;
this.p = p;
this.q = q;
diff --git a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DHValidationParameters.java b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DHValidationParameters.java
index bd273b22..3198e52c 100644
--- a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DHValidationParameters.java
+++ b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DHValidationParameters.java
@@ -15,7 +15,7 @@ public class DHValidationParameters
byte[] seed,
int counter)
{
- this.seed = seed;
+ this.seed = Arrays.clone(seed);
this.counter = counter;
}
@@ -26,7 +26,7 @@ public class DHValidationParameters
public byte[] getSeed()
{
- return seed;
+ return Arrays.clone(seed);
}
public boolean equals(
diff --git a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DSAValidationParameters.java b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DSAValidationParameters.java
index 942939a9..56344e56 100644
--- a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DSAValidationParameters.java
+++ b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/DSAValidationParameters.java
@@ -24,7 +24,7 @@ public class DSAValidationParameters
int counter,
int usageIndex)
{
- this.seed = seed;
+ this.seed = Arrays.clone(seed);
this.counter = counter;
this.usageIndex = usageIndex;
}
@@ -36,7 +36,7 @@ public class DSAValidationParameters
public byte[] getSeed()
{
- return seed;
+ return Arrays.clone(seed);
}
public int getUsageIndex()
diff --git a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECDomainParameters.java b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECDomainParameters.java
index 52e9b56b..a3c5498a 100644
--- a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECDomainParameters.java
+++ b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECDomainParameters.java
@@ -3,6 +3,7 @@ package com.android.org.bouncycastle.crypto.params;
import java.math.BigInteger;
+import com.android.org.bouncycastle.math.ec.ECAlgorithms;
import com.android.org.bouncycastle.math.ec.ECConstants;
import com.android.org.bouncycastle.math.ec.ECCurve;
import com.android.org.bouncycastle.math.ec.ECPoint;
@@ -19,6 +20,7 @@ public class ECDomainParameters
private ECPoint G;
private BigInteger n;
private BigInteger h;
+ private BigInteger hInv = null;
public ECDomainParameters(
ECCurve curve,
@@ -44,11 +46,21 @@ public class ECDomainParameters
BigInteger h,
byte[] seed)
{
+ if (curve == null)
+ {
+ throw new NullPointerException("curve");
+ }
+ if (n == null)
+ {
+ throw new NullPointerException("n");
+ }
+ // we can't check for h == null here as h is optional in X9.62 as it is not required for ECDSA
+
this.curve = curve;
- this.G = G.normalize();
+ this.G = validate(curve, G);
this.n = n;
this.h = h;
- this.seed = seed;
+ this.seed = Arrays.clone(seed);
}
public ECCurve getCurve()
@@ -71,6 +83,15 @@ public class ECDomainParameters
return h;
}
+ public synchronized BigInteger getHInv()
+ {
+ if (hInv == null)
+ {
+ hInv = h.modInverse(n);
+ }
+ return hInv;
+ }
+
public byte[] getSeed()
{
return Arrays.clone(seed);
@@ -105,4 +126,26 @@ public class ECDomainParameters
hc ^= h.hashCode();
return hc;
}
+
+ static ECPoint validate(ECCurve c, ECPoint q)
+ {
+ if (q == null)
+ {
+ throw new IllegalArgumentException("Point has null value");
+ }
+
+ q = ECAlgorithms.importPoint(c, q).normalize();
+
+ if (q.isInfinity())
+ {
+ throw new IllegalArgumentException("Point at infinity");
+ }
+
+ if (!q.isValid())
+ {
+ throw new IllegalArgumentException("Point not on curve");
+ }
+
+ return q;
+ }
}
diff --git a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECNamedDomainParameters.java b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECNamedDomainParameters.java
index a62344ea..c252c670 100644
--- a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECNamedDomainParameters.java
+++ b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECNamedDomainParameters.java
@@ -4,6 +4,7 @@ package com.android.org.bouncycastle.crypto.params;
import java.math.BigInteger;
import com.android.org.bouncycastle.asn1.ASN1ObjectIdentifier;
+import com.android.org.bouncycastle.math.ec.ECConstants;
import com.android.org.bouncycastle.math.ec.ECCurve;
import com.android.org.bouncycastle.math.ec.ECPoint;
@@ -17,7 +18,7 @@ public class ECNamedDomainParameters
public ECNamedDomainParameters(ASN1ObjectIdentifier name, ECCurve curve, ECPoint G, BigInteger n)
{
- this(name, curve, G, n, null, null);
+ this(name, curve, G, n, ECConstants.ONE, null);
}
public ECNamedDomainParameters(ASN1ObjectIdentifier name, ECCurve curve, ECPoint G, BigInteger n, BigInteger h)
@@ -32,6 +33,12 @@ public class ECNamedDomainParameters
this.name = name;
}
+ public ECNamedDomainParameters(ASN1ObjectIdentifier name, ECDomainParameters domainParameters)
+ {
+ super(domainParameters.getCurve(), domainParameters.getG(), domainParameters.getN(), domainParameters.getH(), domainParameters.getSeed());
+ this.name = name;
+ }
+
public ASN1ObjectIdentifier getName()
{
return name;
diff --git a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECPublicKeyParameters.java b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECPublicKeyParameters.java
index f9bbe9c4..8378f6dd 100644
--- a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECPublicKeyParameters.java
+++ b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ECPublicKeyParameters.java
@@ -17,29 +17,7 @@ public class ECPublicKeyParameters
{
super(false, params);
- this.Q = validate(Q);
- }
-
- private ECPoint validate(ECPoint q)
- {
- if (q == null)
- {
- throw new IllegalArgumentException("point has null value");
- }
-
- if (q.isInfinity())
- {
- throw new IllegalArgumentException("point at infinity");
- }
-
- q = q.normalize();
-
- if (!q.isValid())
- {
- throw new IllegalArgumentException("point not on curve");
- }
-
- return q;
+ this.Q = ECDomainParameters.validate(params.getCurve(), Q);
}
public ECPoint getQ()
diff --git a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ParametersWithRandom.java b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ParametersWithRandom.java
index 397c3be7..8e83e6f4 100644
--- a/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ParametersWithRandom.java
+++ b/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/crypto/params/ParametersWithRandom.java
@@ -1,10 +1,11 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
package com.android.org.bouncycastle.crypto.params;
-import com.android.org.bouncycastle.crypto.CipherParameters;
-
import java.security.SecureRandom;
+import com.android.org.bouncycastle.crypto.CipherParameters;
+import com.android.org.bouncycastle.crypto.CryptoServicesRegistrar;
+
/**
* @hide This class is not part of the Android public SDK API
*/
@@ -25,7 +26,7 @@ public class ParametersWithRandom
public ParametersWithRandom(
CipherParameters parameters)
{
- this(parameters, new SecureRandom());
+ this(parameters, CryptoServicesRegistrar.getSecureRandom());
}
public SecureRandom getRandom()