diff options
author | Kenny Root <kroot@google.com> | 2012-10-12 00:52:09 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2012-10-12 00:56:37 -0700 |
commit | 9912a9c85825650db59395651b30bc1b0279a3fd (patch) | |
tree | 0949f4b9eb77be6c8039e12ff84e51696b4b1448 /bcprov/src/main/java | |
parent | ad5d6d329e9f3fbf571a7e770d29d5fc63d148c5 (diff) | |
download | android_external_bouncycastle-9912a9c85825650db59395651b30bc1b0279a3fd.tar.gz android_external_bouncycastle-9912a9c85825650db59395651b30bc1b0279a3fd.tar.bz2 android_external_bouncycastle-9912a9c85825650db59395651b30bc1b0279a3fd.zip |
Fix non-BC EC private key usage
This is a port of the previous patch to BC 1.47
Change-Id: I67d95635e05379fdbd09560c5be622de08f6018f
Diffstat (limited to 'bcprov/src/main/java')
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java | 10 | ||||
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java | 21 |
2 files changed, 31 insertions, 0 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 80ff2af..2c44d2a 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 a92b7da..f5fbc3b 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(); |