diff options
Diffstat (limited to 'libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/IESTest.java')
-rw-r--r-- | libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/IESTest.java | 244 |
1 files changed, 0 insertions, 244 deletions
diff --git a/libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/IESTest.java b/libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/IESTest.java deleted file mode 100644 index 199f859ba..000000000 --- a/libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/IESTest.java +++ /dev/null @@ -1,244 +0,0 @@ -package org.spongycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.AlgorithmParameters; -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 javax.crypto.Cipher; -import javax.crypto.spec.DHParameterSpec; - -import org.spongycastle.jce.provider.BouncyCastleProvider; -import org.spongycastle.jce.spec.ECParameterSpec; -import org.spongycastle.jce.spec.IEKeySpec; -import org.spongycastle.jce.spec.IESParameterSpec; -import org.spongycastle.math.ec.ECCurve; -import org.spongycastle.util.encoders.Hex; -import org.spongycastle.util.test.SimpleTest; - -/** - * test for ECIES - Elliptic Curve Integrated Encryption Scheme - */ -public class IESTest - extends SimpleTest -{ - private BigInteger g512 = new BigInteger("153d5d6172adb43045b68ae8e1de1070b6137005686d29d3d73a7749199681ee5b212c9b96bfdcfa5b20cd5e3fd2044895d609cf9b410b7a0f12ca1cb9a428cc", 16); - private BigInteger p512 = new BigInteger("9494fec095f3b85ee286542b3836fc81a5dd0a0349b4c239dd38744d488cf8e31db8bcb7d33b41abb9e5a33cca9144b1cef332c94bf0573bf047a3aca98cdf3b", 16); - - IESTest() - { - } - - public String getName() - { - return "IES"; - } - - public void performTest() - throws Exception - { - KeyPairGenerator g = KeyPairGenerator.getInstance("ECIES", "SC"); - - ECCurve curve = new ECCurve.Fp( - new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec ecSpec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n - - g.initialize(ecSpec, new SecureRandom()); - - Cipher c1 = Cipher.getInstance("ECIES", "SC"); - Cipher c2 = Cipher.getInstance("ECIES", "SC"); - - doTest(g, c1, c2); - - g = KeyPairGenerator.getInstance("ECIES", "SC"); - - g.initialize(192, new SecureRandom()); - - doTest(g, c1, c2); - - g = KeyPairGenerator.getInstance("ECIES", "SC"); - - g.initialize(239, new SecureRandom()); - - doTest(g, c1, c2); - - g = KeyPairGenerator.getInstance("ECIES", "SC"); - - g.initialize(256, new SecureRandom()); - - doTest(g, c1, c2); - - doDefTest(g, c1, c2); - - DHParameterSpec dhParams = new DHParameterSpec(p512, g512); - - c1 = Cipher.getInstance("IES", "SC"); - c2 = Cipher.getInstance("IES", "SC"); - - g = KeyPairGenerator.getInstance("DH", "SC"); - - g.initialize(dhParams); - - doTest(g, c1, c2); - - doDefTest(g, c1, c2); - } - - public void doTest( - KeyPairGenerator g, - Cipher c1, - Cipher c2) - throws Exception - { - // - // a side - // - KeyPair aKeyPair = g.generateKeyPair(); - PublicKey aPub = aKeyPair.getPublic(); - PrivateKey aPriv = aKeyPair.getPrivate(); - - // - // b side - // - KeyPair bKeyPair = g.generateKeyPair(); - PublicKey bPub = bKeyPair.getPublic(); - PrivateKey bPriv = bKeyPair.getPrivate(); - - // - // stream test - // - - IEKeySpec c1Key = new IEKeySpec(aPriv, bPub); - IEKeySpec c2Key = new IEKeySpec(bPriv, aPub); - - byte[] d = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; - byte[] e = new byte[] { 8, 7, 6, 5, 4, 3, 2, 1 }; - - IESParameterSpec param = new IESParameterSpec(d, e, 128); - - c1.init(Cipher.ENCRYPT_MODE, c1Key, param); - - c2.init(Cipher.DECRYPT_MODE, c2Key, param); - - byte[] message = Hex.decode("1234567890abcdef"); - - byte[] out1 = c1.doFinal(message, 0, message.length); - - byte[] out2 = c2.doFinal(out1, 0, out1.length); - - if (!areEqual(out2, message)) - { - fail("stream cipher test failed"); - } - } - - public void doDefTest( - KeyPairGenerator g, - Cipher c1, - Cipher c2) - throws Exception - { - // - // a side - // - KeyPair aKeyPair = g.generateKeyPair(); - PublicKey aPub = aKeyPair.getPublic(); - PrivateKey aPriv = aKeyPair.getPrivate(); - - // - // b side - // - KeyPair bKeyPair = g.generateKeyPair(); - PublicKey bPub = bKeyPair.getPublic(); - PrivateKey bPriv = bKeyPair.getPrivate(); - - // - // stream test - // - IEKeySpec c1Key = new IEKeySpec(aPriv, bPub); - IEKeySpec c2Key = new IEKeySpec(bPriv, aPub); - - c1.init(Cipher.ENCRYPT_MODE, c1Key); - - AlgorithmParameters param = c1.getParameters(); - - c2.init(Cipher.DECRYPT_MODE, c2Key, param); - - byte[] message = Hex.decode("1234567890abcdef"); - - byte[] out1 = c1.doFinal(message, 0, message.length); - - byte[] out2 = c2.doFinal(out1, 0, out1.length); - - if (!areEqual(out2, message)) - { - fail("stream cipher test failed"); - } - - // - // int doFinal - // - int len1 = c1.doFinal(message, 0, message.length, out1, 0); - - if (len1 != out1.length) - { - fail("encryption length wrong"); - } - - int len2 = c2.doFinal(out1, 0, out1.length, out2, 0); - - if (len2 != out2.length) - { - fail("decryption length wrong"); - } - - if (!areEqual(out2, message)) - { - fail("stream cipher test failed"); - } - - // - // int doFinal with update - // - len1 = c1.update(message, 0, 2, out1, 0); - - len1 += c1.doFinal(message, 2, message.length - 2, out1, len1); - - if (len1 != out1.length) - { - fail("update encryption length wrong"); - } - - len2 = c2.update(out1, 0, 2, out2, 0); - - len2 += c2.doFinal(out1, 2, out1.length - 2, out2, len2); - - if (len2 != out2.length) - { - fail("update decryption length wrong"); - } - - if (!areEqual(out2, message)) - { - fail("update stream cipher test failed"); - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new IESTest()); - } -} |