aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/NamedCurveTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/NamedCurveTest.java')
-rw-r--r--libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/NamedCurveTest.java341
1 files changed, 0 insertions, 341 deletions
diff --git a/libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/NamedCurveTest.java b/libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/NamedCurveTest.java
deleted file mode 100644
index f55d40eb5..000000000
--- a/libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/NamedCurveTest.java
+++ /dev/null
@@ -1,341 +0,0 @@
-package org.spongycastle.jce.provider.test;
-
-import org.spongycastle.asn1.nist.NISTNamedCurves;
-import org.spongycastle.asn1.sec.SECNamedCurves;
-import org.spongycastle.asn1.teletrust.TeleTrusTNamedCurves;
-import org.spongycastle.asn1.x9.X962NamedCurves;
-import org.spongycastle.asn1.cryptopro.ECGOST3410NamedCurves;
-import org.spongycastle.jce.provider.BouncyCastleProvider;
-import org.spongycastle.jce.spec.ECNamedCurveSpec;
-import org.spongycastle.util.test.SimpleTest;
-
-import javax.crypto.KeyAgreement;
-import java.math.BigInteger;
-import java.security.KeyFactory;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.security.SecureRandom;
-import java.security.Security;
-import java.security.Signature;
-import java.security.interfaces.ECPrivateKey;
-import java.security.interfaces.ECPublicKey;
-import java.security.spec.ECGenParameterSpec;
-import java.security.spec.PKCS8EncodedKeySpec;
-import java.security.spec.X509EncodedKeySpec;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Set;
-import java.util.HashSet;
-
-public class NamedCurveTest
- extends SimpleTest
-{
- private static Hashtable CURVE_NAMES = new Hashtable();
- private static Hashtable CURVE_ALIASES = new Hashtable();
-
- static
- {
- CURVE_NAMES.put("prime192v1", "prime192v1"); // X9.62
- CURVE_NAMES.put("sect571r1", "sect571r1"); // sec
- CURVE_NAMES.put("secp224r1", "secp224r1");
- CURVE_NAMES.put("B-409", SECNamedCurves.getName(NISTNamedCurves.getOID("B-409"))); // nist
- CURVE_NAMES.put("P-521", SECNamedCurves.getName(NISTNamedCurves.getOID("P-521")));
- CURVE_NAMES.put("brainpoolp160r1", "brainpoolp160r1"); // TeleTrusT
-
- CURVE_ALIASES.put("secp192r1", "prime192v1");
- CURVE_ALIASES.put("secp256r1", "prime256v1");
- }
-
- public void testCurve(
- String name)
- throws Exception
- {
- ECGenParameterSpec ecSpec = new ECGenParameterSpec(name);
-
- KeyPairGenerator g = KeyPairGenerator.getInstance("ECDH", "SC");
-
- g.initialize(ecSpec, new SecureRandom());
-
- //
- // a side
- //
- KeyPair aKeyPair = g.generateKeyPair();
-
- KeyAgreement aKeyAgree = KeyAgreement.getInstance("ECDHC", "SC");
-
- aKeyAgree.init(aKeyPair.getPrivate());
-
- //
- // b side
- //
- KeyPair bKeyPair = g.generateKeyPair();
-
- KeyAgreement bKeyAgree = KeyAgreement.getInstance("ECDHC", "SC");
-
- bKeyAgree.init(bKeyPair.getPrivate());
-
- //
- // agreement
- //
- aKeyAgree.doPhase(bKeyPair.getPublic(), true);
- bKeyAgree.doPhase(aKeyPair.getPublic(), true);
-
- BigInteger k1 = new BigInteger(aKeyAgree.generateSecret());
- BigInteger k2 = new BigInteger(bKeyAgree.generateSecret());
-
- if (!k1.equals(k2))
- {
- fail("2-way test failed");
- }
-
- //
- // public key encoding test
- //
- byte[] pubEnc = aKeyPair.getPublic().getEncoded();
- KeyFactory keyFac = KeyFactory.getInstance("ECDH", "SC");
- X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc);
- ECPublicKey pubKey = (ECPublicKey)keyFac.generatePublic(pubX509);
-
- if (!pubKey.getW().equals(((ECPublicKey)aKeyPair.getPublic()).getW()))
- {
- fail("public key encoding (Q test) failed");
- }
-
- if (!(pubKey.getParams() instanceof ECNamedCurveSpec))
- {
- fail("public key encoding not named curve");
- }
-
- //
- // private key encoding test
- //
- byte[] privEnc = aKeyPair.getPrivate().getEncoded();
- PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc);
- ECPrivateKey privKey = (ECPrivateKey)keyFac.generatePrivate(privPKCS8);
-
- if (!privKey.getS().equals(((ECPrivateKey)aKeyPair.getPrivate()).getS()))
- {
- fail("private key encoding (S test) failed");
- }
-
- if (!(privKey.getParams() instanceof ECNamedCurveSpec))
- {
- fail("private key encoding not named curve");
- }
-
- ECNamedCurveSpec privSpec = (ECNamedCurveSpec)privKey.getParams();
- if (!(privSpec.getName().equals(name) || privSpec.getName().equals(CURVE_NAMES.get(name))))
- {
- fail("private key encoding wrong named curve. Expected: " + CURVE_NAMES.get(name) + " got " + privSpec.getName());
- }
- }
-
- public void testECDSA(
- String name)
- throws Exception
- {
- ECGenParameterSpec ecSpec = new ECGenParameterSpec(name);
-
- KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "SC");
-
- g.initialize(ecSpec, new SecureRandom());
-
- Signature sgr = Signature.getInstance("ECDSA", "SC");
- KeyPair pair = g.generateKeyPair();
- PrivateKey sKey = pair.getPrivate();
- PublicKey vKey = pair.getPublic();
-
- sgr.initSign(sKey);
-
- byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' };
-
- sgr.update(message);
-
- byte[] sigBytes = sgr.sign();
-
- sgr.initVerify(vKey);
-
- sgr.update(message);
-
- if (!sgr.verify(sigBytes))
- {
- fail(name + " verification failed");
- }
-
- //
- // public key encoding test
- //
- byte[] pubEnc = vKey.getEncoded();
- KeyFactory keyFac = KeyFactory.getInstance("ECDH", "SC");
- X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc);
- ECPublicKey pubKey = (ECPublicKey)keyFac.generatePublic(pubX509);
-
- if (!pubKey.getW().equals(((ECPublicKey)vKey).getW()))
- {
- fail("public key encoding (Q test) failed");
- }
-
- if (!(pubKey.getParams() instanceof ECNamedCurveSpec))
- {
- fail("public key encoding not named curve");
- }
-
- //
- // private key encoding test
- //
- byte[] privEnc = sKey.getEncoded();
- PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc);
- ECPrivateKey privKey = (ECPrivateKey)keyFac.generatePrivate(privPKCS8);
-
- if (!privKey.getS().equals(((ECPrivateKey)sKey).getS()))
- {
- fail("private key encoding (S test) failed");
- }
-
- if (!(privKey.getParams() instanceof ECNamedCurveSpec))
- {
- fail("private key encoding not named curve");
- }
-
- ECNamedCurveSpec privSpec = (ECNamedCurveSpec)privKey.getParams();
- if (!privSpec.getName().equalsIgnoreCase(name)
- && !privSpec.getName().equalsIgnoreCase((String)CURVE_ALIASES.get(name)))
- {
- fail("private key encoding wrong named curve. Expected: " + name + " got " + privSpec.getName());
- }
- }
-
- public void testECGOST(
- String name)
- throws Exception
- {
- ECGenParameterSpec ecSpec = new ECGenParameterSpec(name);
-
- KeyPairGenerator g = KeyPairGenerator.getInstance("ECGOST3410", "SC");
-
- g.initialize(ecSpec, new SecureRandom());
-
- Signature sgr = Signature.getInstance("ECGOST3410", "SC");
- KeyPair pair = g.generateKeyPair();
- PrivateKey sKey = pair.getPrivate();
- PublicKey vKey = pair.getPublic();
-
- sgr.initSign(sKey);
-
- byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' };
-
- sgr.update(message);
-
- byte[] sigBytes = sgr.sign();
-
- sgr.initVerify(vKey);
-
- sgr.update(message);
-
- if (!sgr.verify(sigBytes))
- {
- fail(name + " verification failed");
- }
-
- //
- // public key encoding test
- //
- byte[] pubEnc = vKey.getEncoded();
- KeyFactory keyFac = KeyFactory.getInstance("ECGOST3410", "SC");
- X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc);
- ECPublicKey pubKey = (ECPublicKey)keyFac.generatePublic(pubX509);
-
- if (!pubKey.getW().equals(((ECPublicKey)vKey).getW()))
- {
- fail("public key encoding (Q test) failed");
- }
-
- if (!(pubKey.getParams() instanceof ECNamedCurveSpec))
- {
- fail("public key encoding not named curve");
- }
-
- //
- // private key encoding test
- //
- byte[] privEnc = sKey.getEncoded();
- PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc);
- ECPrivateKey privKey = (ECPrivateKey)keyFac.generatePrivate(privPKCS8);
-
- if (!privKey.getS().equals(((ECPrivateKey)sKey).getS()))
- {
- fail("GOST private key encoding (S test) failed");
- }
-
- if (!(privKey.getParams() instanceof ECNamedCurveSpec))
- {
- fail("GOST private key encoding not named curve");
- }
-
- ECNamedCurveSpec privSpec = (ECNamedCurveSpec)privKey.getParams();
- if (!privSpec.getName().equalsIgnoreCase(name)
- && !privSpec.getName().equalsIgnoreCase((String)CURVE_ALIASES.get(name)))
- {
- fail("GOST private key encoding wrong named curve. Expected: " + name + " got " + privSpec.getName());
- }
- }
-
- public String getName()
- {
- return "NamedCurve";
- }
-
- public void performTest()
- throws Exception
- {
- testCurve("prime192v1"); // X9.62
- testCurve("sect571r1"); // sec
- testCurve("secp224r1");
- testCurve("B-409"); // nist
- testCurve("P-521");
- testCurve("brainpoolp160r1"); // TeleTrusT
-
- for (Enumeration en = X962NamedCurves.getNames(); en.hasMoreElements();)
- {
- testECDSA((String)en.nextElement());
- }
-
- // these curves can't be used under JDK 1.5
- Set problemCurves = new HashSet();
-
- problemCurves.add("secp256k1");
- problemCurves.add("secp160k1");
- problemCurves.add("secp224k1");
- problemCurves.add("secp192k1");
-
- for (Enumeration en = SECNamedCurves.getNames(); en.hasMoreElements();)
- {
- String curveName = (String)en.nextElement();
-
- if (!problemCurves.contains(curveName))
- {
- testECDSA(curveName);
- }
- }
-
- for (Enumeration en = TeleTrusTNamedCurves.getNames(); en.hasMoreElements();)
- {
- testECDSA((String)en.nextElement());
- }
-
- for (Enumeration en = ECGOST3410NamedCurves.getNames(); en.hasMoreElements();)
- {
- testECGOST((String)en.nextElement());
- }
- }
-
- public static void main(
- String[] args)
- {
- Security.addProvider(new BouncyCastleProvider());
-
- runTest(new NamedCurveTest());
- }
-}