summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2012-10-12 01:14:53 -0700
committerKenny Root <kroot@google.com>2012-10-12 01:14:53 -0700
commita3c0f0ad00cf632535c7a3c637995bfb8f94aa0f (patch)
treef2bcfd77e0cb390b6db47f75d8bcf040f13e81c6
parent62a9bf7570dd751d4f36ca8ca6bb0ded7b7a262f (diff)
parent9912a9c85825650db59395651b30bc1b0279a3fd (diff)
downloadbouncycastle-a3c0f0ad00cf632535c7a3c637995bfb8f94aa0f.tar.gz
resolved conflicts for merge of 9912a9c8 to master
Change-Id: I62758df6d292b5ed1c6e5c5aa6584acea2a7039d
-rw-r--r--bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java10
-rw-r--r--bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java21
-rw-r--r--patches/bcprov.patch67
3 files changed, 91 insertions, 7 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java
index 80ff2af6..2c44d2aa 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java
@@ -154,6 +154,16 @@ public class ECUtil
k.getD(),
new ECDomainParameters(s.getCurve(), s.getG(), s.getN(), s.getH(), s.getSeed()));
}
+// BEGIN android-added
+ else if (key instanceof java.security.interfaces.ECPrivateKey)
+ {
+ java.security.interfaces.ECPrivateKey privKey = (java.security.interfaces.ECPrivateKey)key;
+ ECParameterSpec s = EC5Util.convertSpec(privKey.getParams(), false);
+ return new ECPrivateKeyParameters(
+ privKey.getS(),
+ new ECDomainParameters(s.getCurve(), s.getG(), s.getN(), s.getH(), s.getSeed()));
+ }
+// END android-added
throw new InvalidKeyException("can't identify EC private key.");
}
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java
index a92b7da0..f5fbc3b7 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java
@@ -5,6 +5,9 @@ import java.math.BigInteger;
import java.security.InvalidKeyException;
import java.security.PrivateKey;
import java.security.PublicKey;
+// BEGIN android-added
+import java.security.interfaces.ECPrivateKey;
+// END android-added
import java.security.interfaces.ECPublicKey;
import org.bouncycastle.asn1.ASN1EncodableVector;
@@ -95,7 +98,25 @@ public class SignatureSpi
}
else
{
+// BEGIN android-added
+ try
+ {
+ if (privateKey instanceof ECPrivateKey)
+ {
+ param = ECUtil.generatePrivateKeyParameter(privateKey);
+ }
+ else
+ {
+ throw new InvalidKeyException("can't recognise key type in ECDSA based signer");
+ }
+ }
+ catch (Exception e)
+ {
+// END android-added
throw new InvalidKeyException("can't recognise key type in ECDSA based signer");
+// BEGIN android-added
+ }
+// END android-added
}
digest.reset();
diff --git a/patches/bcprov.patch b/patches/bcprov.patch
index c9e11897..b4f2f8e9 100644
--- a/patches/bcprov.patch
+++ b/patches/bcprov.patch
@@ -2045,7 +2045,24 @@ diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/e
import org.bouncycastle.asn1.x9.X962NamedCurves;
import org.bouncycastle.asn1.x9.X9ECParameters;
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
-@@ -166,14 +170,16 @@
+@@ -150,6 +154,16 @@
+ k.getD(),
+ new ECDomainParameters(s.getCurve(), s.getG(), s.getN(), s.getH(), s.getSeed()));
+ }
++// BEGIN android-added
++ else if (key instanceof java.security.interfaces.ECPrivateKey)
++ {
++ java.security.interfaces.ECPrivateKey privKey = (java.security.interfaces.ECPrivateKey)key;
++ ECParameterSpec s = EC5Util.convertSpec(privKey.getParams(), false);
++ return new ECPrivateKeyParameters(
++ privKey.getS(),
++ new ECDomainParameters(s.getCurve(), s.getG(), s.getN(), s.getH(), s.getSeed()));
++ }
++// END android-added
+
+ throw new InvalidKeyException("can't identify EC private key.");
+ }
+@@ -166,14 +180,16 @@
{
oid = NISTNamedCurves.getOID(name);
}
@@ -2589,7 +2606,17 @@ diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/e
diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java
--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java 2012-03-22 15:11:48.000000000 +0000
+++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java 2012-09-28 17:07:55.000000000 +0000
-@@ -18,15 +18,22 @@
+@@ -5,6 +5,9 @@
+ import java.security.InvalidKeyException;
+ import java.security.PrivateKey;
+ import java.security.PublicKey;
++// BEGIN android-added
++import java.security.interfaces.ECPrivateKey;
++// END android-added
+ import java.security.interfaces.ECPublicKey;
+
+ import org.bouncycastle.asn1.ASN1EncodableVector;
+@@ -18,15 +21,22 @@
import org.bouncycastle.crypto.DSA;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.NullDigest;
@@ -2619,7 +2646,33 @@ diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/e
import org.bouncycastle.jcajce.provider.asymmetric.util.DSABase;
import org.bouncycastle.jcajce.provider.asymmetric.util.DSAEncoder;
import org.bouncycastle.jce.interfaces.ECKey;
-@@ -108,7 +115,9 @@
+@@ -88,7 +98,25 @@
+ }
+ else
+ {
++// BEGIN android-added
++ try
++ {
++ if (privateKey instanceof ECPrivateKey)
++ {
++ param = ECUtil.generatePrivateKeyParameter(privateKey);
++ }
++ else
++ {
++ throw new InvalidKeyException("can't recognise key type in ECDSA based signer");
++ }
++ }
++ catch (Exception e)
++ {
++// END android-added
+ throw new InvalidKeyException("can't recognise key type in ECDSA based signer");
++// BEGIN android-added
++ }
++// END android-added
+ }
+
+ digest.reset();
+@@ -108,7 +136,9 @@
{
public ecDSA()
{
@@ -2630,7 +2683,7 @@ diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/e
}
}
-@@ -121,21 +130,25 @@
+@@ -121,21 +151,25 @@
}
}
@@ -2665,7 +2718,7 @@ diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/e
}
}
-@@ -144,7 +157,9 @@
+@@ -144,7 +178,9 @@
{
public ecDSA384()
{
@@ -2676,7 +2729,7 @@ diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/e
}
}
-@@ -153,90 +168,94 @@
+@@ -153,90 +189,94 @@
{
public ecDSA512()
{
@@ -2855,7 +2908,7 @@ diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/e
private static class StdDSAEncoder
implements DSAEncoder
-@@ -330,4 +349,4 @@
+@@ -330,4 +370,4 @@
return sig;
}
}