summaryrefslogtreecommitdiff
path: root/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java
diff options
context:
space:
mode:
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java')
-rw-r--r--bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java642
1 files changed, 327 insertions, 315 deletions
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 46aeec7e..93f9d162 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
@@ -16,19 +16,18 @@ import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.DSA;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.NullDigest;
-// BEGIN android-added
-import org.bouncycastle.crypto.digests.AndroidDigestFactory;
-// END android-added
-// BEGIN android-removed
+// BEGIN Android-removed: Unsupported algorithms
// import org.bouncycastle.crypto.digests.RIPEMD160Digest;
-// END android-removed
+// END Android-removed: Unsupported algorithms
import org.bouncycastle.crypto.params.ParametersWithRandom;
import org.bouncycastle.crypto.signers.ECDSASigner;
-// BEGIN android-removed
+// BEGIN Android-removed: Unsupported algorithms
// import org.bouncycastle.crypto.signers.ECNRSigner;
// import org.bouncycastle.crypto.signers.HMacDSAKCalculator;
+// END Android-removed: Unsupported algorithms
+// BEGIN Android-changed: Use Android digests
// import org.bouncycastle.crypto.util.DigestFactory;
-// END android-removed
+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
import org.bouncycastle.jcajce.provider.asymmetric.util.DSABase;
import org.bouncycastle.jcajce.provider.asymmetric.util.DSAEncoder;
import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil;
@@ -74,22 +73,24 @@ public class SignatureSpi
{
public ecDSA()
{
- // BEGIN android-changed
+ // Android-changed: Use Android digests
+ // super(DigestFactory.createSHA1(), new ECDSASigner(), new StdDSAEncoder());
super(AndroidDigestFactory.getSHA1(), new ECDSASigner(), new StdDSAEncoder());
- // END android-changed
}
}
- // BEGIN android-removed
- // static public class ecDetDSA
- // extends SignatureSpi
- // {
- // public ecDetDSA()
- // {
- // super(DigestFactory.createSHA1(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA1())), new StdDSAEncoder());
- // }
- // }
- // END android-removed
+ // BEGIN Android-removed: Unsupported algorithm
+ /*
+ static public class ecDetDSA
+ extends SignatureSpi
+ {
+ public ecDetDSA()
+ {
+ super(DigestFactory.createSHA1(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA1())), new StdDSAEncoder());
+ }
+ }
+ */
+ // END Android-removed: Unsupported algorithm
static public class ecDSAnone
extends SignatureSpi
@@ -105,267 +106,276 @@ public class SignatureSpi
{
public ecDSA224()
{
- // BEGIN android-changed
+ // Android-changed: Use Android digests
+ // super(DigestFactory.createSHA224(), new ECDSASigner(), new StdDSAEncoder());
super(AndroidDigestFactory.getSHA224(), new ECDSASigner(), new StdDSAEncoder());
- // END android-changed
}
}
- // BEGIN android-removed
- // static public class ecDetDSA224
- // extends SignatureSpi
- // {
- // public ecDetDSA224()
- // {
- // super(DigestFactory.createSHA224(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA224())), new StdDSAEncoder());
- // }
- // }
- // END android-removed
+ // BEGIN Android-removed: Unsupported algorithm
+ /*
+ static public class ecDetDSA224
+ extends SignatureSpi
+ {
+ public ecDetDSA224()
+ {
+ super(DigestFactory.createSHA224(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA224())), new StdDSAEncoder());
+ }
+ }
+ */
+ // END Android-removed: Unsupported algorithm
static public class ecDSA256
extends SignatureSpi
{
public ecDSA256()
{
- // BEGIN android-changed
+ // Android-changed: Use Android digests
+ // super(DigestFactory.createSHA256(), new ECDSASigner(), new StdDSAEncoder());
super(AndroidDigestFactory.getSHA256(), new ECDSASigner(), new StdDSAEncoder());
- // END android-changed
}
}
- // BEGIN android-removed
- // static public class ecDetDSA256
- // extends SignatureSpi
- // {
- // public ecDetDSA256()
- // {
- // super(DigestFactory.createSHA256(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA256())), new StdDSAEncoder());
- // }
- // }
- // END android-removed
+ // BEGIN Android-removed: Unsupported algorithm
+ /*
+ static public class ecDetDSA256
+ extends SignatureSpi
+ {
+ public ecDetDSA256()
+ {
+ super(DigestFactory.createSHA256(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA256())), new StdDSAEncoder());
+ }
+ }
+ */
+ // END Android-removed: Unsupported algorithm
static public class ecDSA384
extends SignatureSpi
{
public ecDSA384()
{
- // BEGIN android-changed
+ // Android-changed: Use Android digests
+ // super(DigestFactory.createSHA384(), new ECDSASigner(), new StdDSAEncoder());
super(AndroidDigestFactory.getSHA384(), new ECDSASigner(), new StdDSAEncoder());
- // END android-changed
}
}
- // BEGIN android-removed
- // static public class ecDetDSA384
- // extends SignatureSpi
- // {
- // public ecDetDSA384()
- // {
- // super(DigestFactory.createSHA384(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA384())), new StdDSAEncoder());
- // }
- // }
- // END android-removed
+ // BEGIN Android-removed: Unsupported algorithm
+ /*
+ static public class ecDetDSA384
+ extends SignatureSpi
+ {
+ public ecDetDSA384()
+ {
+ super(DigestFactory.createSHA384(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA384())), new StdDSAEncoder());
+ }
+ }
+ */
+ // END Android-removed: Unsupported algorithms
+
static public class ecDSA512
extends SignatureSpi
{
public ecDSA512()
{
- // BEGIN android-changed
+ // Android-changed: Use Android digests
+ // super(DigestFactory.createSHA512(), new ECDSASigner(), new StdDSAEncoder());
super(AndroidDigestFactory.getSHA512(), new ECDSASigner(), new StdDSAEncoder());
- // END android-changed
- }
- }
-
- // BEGIN android-removed
- // static public class ecDetDSA512
- // extends SignatureSpi
- // {
- // public ecDetDSA512()
- // {
- // super(DigestFactory.createSHA512(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA512())), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecDSASha3_224
- // extends SignatureSpi
- // {
- // public ecDSASha3_224()
- // {
- // super(DigestFactory.createSHA3_224(), new ECDSASigner(), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecDetDSASha3_224
- // extends SignatureSpi
- // {
- // public ecDetDSASha3_224()
- // {
- // super(DigestFactory.createSHA3_224(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_224())), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecDSASha3_256
- // extends SignatureSpi
- // {
- // public ecDSASha3_256()
- // {
- // super(DigestFactory.createSHA3_256(), new ECDSASigner(), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecDetDSASha3_256
- // extends SignatureSpi
- // {
- // public ecDetDSASha3_256()
- // {
- // super(DigestFactory.createSHA3_256(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_256())), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecDSASha3_384
- // extends SignatureSpi
- // {
- // public ecDSASha3_384()
- // {
- // super(DigestFactory.createSHA3_384(), new ECDSASigner(), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecDetDSASha3_384
- // extends SignatureSpi
- // {
- // public ecDetDSASha3_384()
- // {
- // super(DigestFactory.createSHA3_384(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_384())), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecDSASha3_512
- // extends SignatureSpi
- // {
- // public ecDSASha3_512()
- // {
- // super(DigestFactory.createSHA3_512(), new ECDSASigner(), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecDetDSASha3_512
- // extends SignatureSpi
- // {
- // public ecDetDSASha3_512()
- // {
- // super(DigestFactory.createSHA3_512(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_512())), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecDSARipeMD160
- // extends SignatureSpi
- // {
- // public ecDSARipeMD160()
- // {
- // super(new RIPEMD160Digest(), new ECDSASigner(), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecNR
- // extends SignatureSpi
- // {
- // public ecNR()
- // {
- // super(DigestFactory.createSHA1(), new ECNRSigner(), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecNR224
- // extends SignatureSpi
- // {
- // public ecNR224()
- // {
- // super(DigestFactory.createSHA224(), new ECNRSigner(), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecNR256
- // extends SignatureSpi
- // {
- // public ecNR256()
- // {
- // super(DigestFactory.createSHA256(), new ECNRSigner(), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecNR384
- // extends SignatureSpi
- // {
- // public ecNR384()
- // {
- // super(DigestFactory.createSHA384(), new ECNRSigner(), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecNR512
- // extends SignatureSpi
- // {
- // public ecNR512()
- // {
- // super(DigestFactory.createSHA512(), new ECNRSigner(), new StdDSAEncoder());
- // }
- // }
-
- // static public class ecCVCDSA
- // extends SignatureSpi
- // {
- // public ecCVCDSA()
- // {
- // super(DigestFactory.createSHA1(), new ECDSASigner(), new PlainDSAEncoder());
- // }
- // }
-
- // static public class ecCVCDSA224
- // extends SignatureSpi
- // {
- // public ecCVCDSA224()
- // {
- // super(DigestFactory.createSHA224(), new ECDSASigner(), new PlainDSAEncoder());
- // }
- // }
-
- // static public class ecCVCDSA256
- // extends SignatureSpi
- // {
- // public ecCVCDSA256()
- // {
- // super(DigestFactory.createSHA256(), new ECDSASigner(), new PlainDSAEncoder());
- // }
- // }
-
- // static public class ecCVCDSA384
- // extends SignatureSpi
- // {
- // public ecCVCDSA384()
- // {
- // super(DigestFactory.createSHA384(), new ECDSASigner(), new PlainDSAEncoder());
- // }
- // }
-
- // static public class ecCVCDSA512
- // extends SignatureSpi
- // {
- // public ecCVCDSA512()
- // {
- // super(DigestFactory.createSHA512(), new ECDSASigner(), new PlainDSAEncoder());
- // }
- // }
-
- // static public class ecPlainDSARP160
- // extends SignatureSpi
- // {
- // public ecPlainDSARP160()
- // {
- // super(new RIPEMD160Digest(), new ECDSASigner(), new PlainDSAEncoder());
- // }
- // }
- // END android-removed
+ }
+ }
+
+ // BEGIN Android-removed: Unsupported algorithms
+ /*
+ static public class ecDetDSA512
+ extends SignatureSpi
+ {
+ public ecDetDSA512()
+ {
+ super(DigestFactory.createSHA512(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA512())), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecDSASha3_224
+ extends SignatureSpi
+ {
+ public ecDSASha3_224()
+ {
+ super(DigestFactory.createSHA3_224(), new ECDSASigner(), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecDetDSASha3_224
+ extends SignatureSpi
+ {
+ public ecDetDSASha3_224()
+ {
+ super(DigestFactory.createSHA3_224(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_224())), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecDSASha3_256
+ extends SignatureSpi
+ {
+ public ecDSASha3_256()
+ {
+ super(DigestFactory.createSHA3_256(), new ECDSASigner(), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecDetDSASha3_256
+ extends SignatureSpi
+ {
+ public ecDetDSASha3_256()
+ {
+ super(DigestFactory.createSHA3_256(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_256())), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecDSASha3_384
+ extends SignatureSpi
+ {
+ public ecDSASha3_384()
+ {
+ super(DigestFactory.createSHA3_384(), new ECDSASigner(), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecDetDSASha3_384
+ extends SignatureSpi
+ {
+ public ecDetDSASha3_384()
+ {
+ super(DigestFactory.createSHA3_384(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_384())), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecDSASha3_512
+ extends SignatureSpi
+ {
+ public ecDSASha3_512()
+ {
+ super(DigestFactory.createSHA3_512(), new ECDSASigner(), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecDetDSASha3_512
+ extends SignatureSpi
+ {
+ public ecDetDSASha3_512()
+ {
+ super(DigestFactory.createSHA3_512(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_512())), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecDSARipeMD160
+ extends SignatureSpi
+ {
+ public ecDSARipeMD160()
+ {
+ super(new RIPEMD160Digest(), new ECDSASigner(), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecNR
+ extends SignatureSpi
+ {
+ public ecNR()
+ {
+ super(DigestFactory.createSHA1(), new ECNRSigner(), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecNR224
+ extends SignatureSpi
+ {
+ public ecNR224()
+ {
+ super(DigestFactory.createSHA224(), new ECNRSigner(), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecNR256
+ extends SignatureSpi
+ {
+ public ecNR256()
+ {
+ super(DigestFactory.createSHA256(), new ECNRSigner(), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecNR384
+ extends SignatureSpi
+ {
+ public ecNR384()
+ {
+ super(DigestFactory.createSHA384(), new ECNRSigner(), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecNR512
+ extends SignatureSpi
+ {
+ public ecNR512()
+ {
+ super(DigestFactory.createSHA512(), new ECNRSigner(), new StdDSAEncoder());
+ }
+ }
+
+ static public class ecCVCDSA
+ extends SignatureSpi
+ {
+ public ecCVCDSA()
+ {
+ super(DigestFactory.createSHA1(), new ECDSASigner(), new PlainDSAEncoder());
+ }
+ }
+
+ static public class ecCVCDSA224
+ extends SignatureSpi
+ {
+ public ecCVCDSA224()
+ {
+ super(DigestFactory.createSHA224(), new ECDSASigner(), new PlainDSAEncoder());
+ }
+ }
+
+ static public class ecCVCDSA256
+ extends SignatureSpi
+ {
+ public ecCVCDSA256()
+ {
+ super(DigestFactory.createSHA256(), new ECDSASigner(), new PlainDSAEncoder());
+ }
+ }
+
+ static public class ecCVCDSA384
+ extends SignatureSpi
+ {
+ public ecCVCDSA384()
+ {
+ super(DigestFactory.createSHA384(), new ECDSASigner(), new PlainDSAEncoder());
+ }
+ }
+
+ static public class ecCVCDSA512
+ extends SignatureSpi
+ {
+ public ecCVCDSA512()
+ {
+ super(DigestFactory.createSHA512(), new ECDSASigner(), new PlainDSAEncoder());
+ }
+ }
+
+ static public class ecPlainDSARP160
+ extends SignatureSpi
+ {
+ public ecPlainDSARP160()
+ {
+ super(new RIPEMD160Digest(), new ECDSASigner(), new PlainDSAEncoder());
+ }
+ }
+ */
+ // END Android-removed: Unsupported algorithms
private static class StdDSAEncoder
implements DSAEncoder
@@ -406,68 +416,70 @@ public class SignatureSpi
}
}
- // BEGIN android-removed
- // private static class PlainDSAEncoder
- // implements DSAEncoder
- // {
- // public byte[] encode(
- // BigInteger r,
- // BigInteger s)
- // throws IOException
- // {
- // byte[] first = makeUnsigned(r);
- // byte[] second = makeUnsigned(s);
- // byte[] res;
- //
- // if (first.length > second.length)
- // {
- // res = new byte[first.length * 2];
- // }
- // else
- // {
- // res = new byte[second.length * 2];
- // }
- //
- // System.arraycopy(first, 0, res, res.length / 2 - first.length, first.length);
- // System.arraycopy(second, 0, res, res.length - second.length, second.length);
- //
- // return res;
- // }
- //
- //
- // private byte[] makeUnsigned(BigInteger val)
- // {
- // byte[] res = val.toByteArray();
- //
- // if (res[0] == 0)
- // {
- // byte[] tmp = new byte[res.length - 1];
- //
- // System.arraycopy(res, 1, tmp, 0, tmp.length);
- //
- // return tmp;
- // }
- //
- // return res;
- // }
- //
- // public BigInteger[] decode(
- // byte[] encoding)
- // throws IOException
- // {
- // BigInteger[] sig = new BigInteger[2];
- //
- // byte[] first = new byte[encoding.length / 2];
- // byte[] second = new byte[encoding.length / 2];
- //
- // System.arraycopy(encoding, 0, first, 0, first.length);
- // System.arraycopy(encoding, first.length, second, 0, second.length);
- //
- // sig[0] = new BigInteger(1, first);
- // sig[1] = new BigInteger(1, second);
- //
- // return sig;
- // }
- // }
- // END android-removed
-}
+ // BEGIN Android-removed: Unsupported algorithms
+ /*
+ private static class PlainDSAEncoder
+ implements DSAEncoder
+ {
+ public byte[] encode(
+ BigInteger r,
+ BigInteger s)
+ throws IOException
+ {
+ byte[] first = makeUnsigned(r);
+ byte[] second = makeUnsigned(s);
+ byte[] res;
+
+ if (first.length > second.length)
+ {
+ res = new byte[first.length * 2];
+ }
+ else
+ {
+ res = new byte[second.length * 2];
+ }
+
+ System.arraycopy(first, 0, res, res.length / 2 - first.length, first.length);
+ System.arraycopy(second, 0, res, res.length - second.length, second.length);
+
+ return res;
+ }
+
+
+ private byte[] makeUnsigned(BigInteger val)
+ {
+ byte[] res = val.toByteArray();
+
+ if (res[0] == 0)
+ {
+ byte[] tmp = new byte[res.length - 1];
+
+ System.arraycopy(res, 1, tmp, 0, tmp.length);
+
+ return tmp;
+ }
+
+ return res;
+ }
+
+ public BigInteger[] decode(
+ byte[] encoding)
+ throws IOException
+ {
+ BigInteger[] sig = new BigInteger[2];
+
+ byte[] first = new byte[encoding.length / 2];
+ byte[] second = new byte[encoding.length / 2];
+
+ System.arraycopy(encoding, 0, first, 0, first.length);
+ System.arraycopy(encoding, first.length, second, 0, second.length);
+
+ sig[0] = new BigInteger(1, first);
+ sig[1] = new BigInteger(1, second);
+
+ return sig;
+ }
+ }
+ */
+ // END Android-removed: Unsupported algorithms
+} \ No newline at end of file