Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'prov/src/test/java/org/bouncycastle/pqc/jcajce/provider')
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AllTests.java35
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AsymmetricBlockCipherTest.java82
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AsymmetricHybridCipherTest.java91
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/FlexiTest.java68
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/KeyPairGeneratorTest.java47
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceCCA2PrimitivesTest.java71
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceFujisakiCipherTest.java44
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceKobaraImaiCipherTest.java43
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McEliecePKCSCipherTest.java47
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McEliecePointchevalCipherTest.java43
-rw-r--r--prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/RainbowSignatureTest.java450
11 files changed, 0 insertions, 1021 deletions
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AllTests.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AllTests.java
deleted file mode 100644
index 92332de4..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AllTests.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.security.Security;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider;
-
-public class AllTests
- extends TestCase
-{
- public static void main (String[] args)
- {
- junit.textui.TestRunner.run(suite());
- }
-
- public static Test suite()
- {
- TestSuite suite = new TestSuite("PQC JCE Tests");
-
- if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null)
- {
- Security.addProvider(new BouncyCastlePQCProvider());
- }
-
- suite.addTestSuite(RainbowSignatureTest.class);
- suite.addTestSuite(McElieceFujisakiCipherTest.class);
- suite.addTestSuite(McElieceKobaraImaiCipherTest.class);
- suite.addTestSuite(McEliecePointchevalCipherTest.class);
- suite.addTestSuite(McEliecePKCSCipherTest.class);
-
- return suite;
- }
-}
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AsymmetricBlockCipherTest.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AsymmetricBlockCipherTest.java
deleted file mode 100644
index c67d438e..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AsymmetricBlockCipherTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.security.spec.AlgorithmParameterSpec;
-
-import javax.crypto.Cipher;
-
-import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
-
-
-public abstract class AsymmetricBlockCipherTest
- extends FlexiTest
-{
-
- protected Cipher cipher;
-
- protected KeyPair keyPair;
-
- protected PublicKey pubKey;
-
- protected PrivateKey privKey;
-
- protected KeyPairGenerator kpg;
-
- private byte[] mBytes;
-
- private byte[] cBytes;
-
- private byte[] dBytes;
-
- protected final void performEnDecryptionTest(int numPassesKPG,
- int numPassesEncDec, AlgorithmParameterSpec params)
- {
-
- try
- {
- for (int j = 0; j < numPassesKPG; j++)
- {
- keyPair = kpg.genKeyPair();
- pubKey = keyPair.getPublic();
- privKey = keyPair.getPrivate();
-
- for (int k = 1; k <= numPassesEncDec; k++)
- {
- // initialize for encryption
- cipher.init(Cipher.ENCRYPT_MODE, pubKey, params, sr);
-
- // generate random message
- final int plainTextSize = cipher.getBlockSize();
- int mLength = rand.nextInt(plainTextSize) + 1;
- mBytes = new byte[mLength];
- rand.nextBytes(mBytes);
-
- // encrypt
- cBytes = cipher.doFinal(mBytes);
-
- // initialize for decryption
- cipher.init(Cipher.DECRYPT_MODE, privKey, params);
-
- // decrypt
- dBytes = cipher.doFinal(cBytes);
-
- // compare
- assertEquals("Encryption and Decryption test failed:\n"
- + " actual decrypted text: "
- + ByteUtils.toHexString(dBytes)
- + "\n expected plain text: "
- + ByteUtils.toHexString(mBytes), mBytes, dBytes);
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e);
- }
- }
-
-}
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AsymmetricHybridCipherTest.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AsymmetricHybridCipherTest.java
deleted file mode 100644
index f66dc6bf..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/AsymmetricHybridCipherTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.security.spec.AlgorithmParameterSpec;
-
-import javax.crypto.Cipher;
-
-import org.bouncycastle.pqc.jcajce.provider.util.AsymmetricHybridCipher;
-import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
-
-/**
- * Base class for unit tests of {@link AsymmetricHybridCipher}s.
- */
-public abstract class AsymmetricHybridCipherTest
- extends FlexiTest
-{
-
- /**
- * the {@link KeyPairGenerator} to use for the test
- */
- protected KeyPairGenerator kpg;
-
- /**
- * the {@link AsymmetricHybridCipher} to use for the test
- */
- protected Cipher cipher;
-
- private KeyPair keyPair;
-
- private PublicKey pubKey;
-
- private PrivateKey privKey;
-
- private byte[] mBytes, cBytes, dBytes;
-
- protected final void performEnDecryptionTest(int numPassesKPG,
- int numPassesEncDec, int plainTextSize,
- AlgorithmParameterSpec params)
- {
-
- try
- {
- for (int j = 0; j < numPassesKPG; j++)
- {
- // generate key pair
- //kpg.initialize(params);
- keyPair = kpg.genKeyPair();
- pubKey = keyPair.getPublic();
- privKey = keyPair.getPrivate();
-
- for (int k = 1; k <= numPassesEncDec; k++)
- {
- // initialize for encryption
- cipher.init(Cipher.ENCRYPT_MODE, pubKey, params, sr);
-
- // generate random message
- int mLength = rand.nextInt(plainTextSize) + 1;
- mBytes = new byte[mLength];
- rand.nextBytes(mBytes);
-
- // encrypt
- cBytes = cipher.doFinal(mBytes);
-
-
- // initialize for decryption
- cipher.init(Cipher.DECRYPT_MODE, privKey, params);
- // decrypt
- dBytes = cipher.doFinal(cBytes);
- // compare
- assertEquals(
- "Encryption/decryption test failed for message \""
- + ByteUtils.toHexString(mBytes)
- + "\":\n actual decrypted text: "
- + ByteUtils.toHexString(dBytes)
- + "\n expected plain text: "
- + ByteUtils.toHexString(mBytes), mBytes,
- dBytes);
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e);
- }
- }
-
-}
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/FlexiTest.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/FlexiTest.java
deleted file mode 100644
index 7d8ddd95..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/FlexiTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.security.SecureRandom;
-import java.security.Security;
-import java.util.Arrays;
-import java.util.Random;
-
-import junit.framework.TestCase;
-import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider;
-
-public abstract class FlexiTest
- extends TestCase
-{
-
- /**
- * Source of randomness
- */
- protected Random rand;
-
- /**
- * Secure source of randomness
- */
- protected SecureRandom sr;
-
- protected void setUp()
- {
- Security.addProvider(new BouncyCastlePQCProvider());
- // initialize sources of randomness
- rand = new Random();
- sr = new SecureRandom();
- // TODO need it?
- sr.setSeed(sr.generateSeed(20));
- }
-
- protected static final void assertEquals(byte[] expected, byte[] actual)
- {
- assertTrue(Arrays.equals(expected, actual));
- }
-
- protected static final void assertEquals(String message, byte[] expected,
- byte[] actual)
- {
- assertTrue(message, Arrays.equals(expected, actual));
- }
-
- protected static final void assertEquals(int[] expected, int[] actual)
- {
- assertTrue(Arrays.equals(expected, actual));
- }
-
- protected static final void assertEquals(String message, int[] expected,
- int[] actual)
- {
- assertTrue(message, Arrays.equals(expected, actual));
- }
-
- /**
- * Method used to report test failure when in exception is thrown.
- *
- * @param e the exception
- */
- protected static final void fail(Exception e)
- {
- fail("Exception thrown: " + e.getClass().getName() + ":\n"
- + e.getMessage());
- }
-
-}
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/KeyPairGeneratorTest.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/KeyPairGeneratorTest.java
deleted file mode 100644
index f1da055c..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/KeyPairGeneratorTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.security.KeyFactory;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.security.spec.PKCS8EncodedKeySpec;
-import java.security.spec.X509EncodedKeySpec;
-
-public abstract class KeyPairGeneratorTest
- extends FlexiTest
-{
-
- protected KeyPairGenerator kpg;
-
- protected KeyFactory kf;
-
- protected final void performKeyPairEncodingTest()
- {
- try
- {
- KeyPair keyPair = kpg.genKeyPair();
- PublicKey pubKey = keyPair.getPublic();
- PrivateKey privKey = keyPair.getPrivate();
-
- byte[] encPubKey = pubKey.getEncoded();
- byte[] encPrivKey = privKey.getEncoded();
-
- X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encPubKey);
- PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(
- encPrivKey);
-
- PublicKey decPubKey = kf.generatePublic(pubKeySpec);
- PrivateKey decPrivKey = kf.generatePrivate(privKeySpec);
-
- assertEquals(pubKey, decPubKey);
- assertEquals(privKey, decPrivKey);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e);
- }
- }
-
-}
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceCCA2PrimitivesTest.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceCCA2PrimitivesTest.java
deleted file mode 100644
index 39e16ad2..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceCCA2PrimitivesTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.NoSuchAlgorithmException;
-
-import org.bouncycastle.pqc.jcajce.provider.mceliece.BCMcElieceCCA2PrivateKey;
-import org.bouncycastle.pqc.jcajce.provider.mceliece.BCMcElieceCCA2PublicKey;
-import org.bouncycastle.pqc.jcajce.provider.mceliece.McElieceCCA2Primitives;
-import org.bouncycastle.pqc.jcajce.spec.ECCKeyGenParameterSpec;
-import org.bouncycastle.pqc.math.linearalgebra.GF2Vector;
-
-
-public class McElieceCCA2PrimitivesTest
- extends FlexiTest
-{
-
- KeyPairGenerator kpg;
-
- protected void setUp()
- {
- super.setUp();
- try
- {
- kpg = KeyPairGenerator.getInstance("McElieceKobaraImai");
- }
- catch (NoSuchAlgorithmException e)
- {
- e.printStackTrace();
- }
- }
-
- public void testPrimitives()
- throws Exception
- {
- int m = 11;
- int t = 50;
- initKPG(m, t);
- int n = 1 << m;
-
- KeyPair pair = kpg.genKeyPair();
- BCMcElieceCCA2PublicKey pubKey = (BCMcElieceCCA2PublicKey)pair.getPublic();
- BCMcElieceCCA2PrivateKey privKey = (BCMcElieceCCA2PrivateKey)pair
- .getPrivate();
-
- GF2Vector plaintext = new GF2Vector(pubKey.getK(), sr);
- GF2Vector errors = new GF2Vector(n, t, sr);
-
- GF2Vector ciphertext = McElieceCCA2Primitives.encryptionPrimitive(
- pubKey, plaintext, errors);
-
- GF2Vector[] dec = McElieceCCA2Primitives.decryptionPrimitive(privKey,
- ciphertext);
- GF2Vector plaintextAgain = dec[0];
- GF2Vector errorsAgain = dec[1];
-
- assertEquals(plaintext, plaintextAgain);
- assertEquals(errors, errorsAgain);
- }
-
- /**
- * Initialize the key pair generator with the given parameters.
- */
- private void initKPG(int m, int t)
- throws Exception
- {
- ECCKeyGenParameterSpec params = new ECCKeyGenParameterSpec(m, t);
- kpg.initialize(params);
- }
-
-}
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceFujisakiCipherTest.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceFujisakiCipherTest.java
deleted file mode 100644
index 2f793a64..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceFujisakiCipherTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.security.KeyPairGenerator;
-
-import javax.crypto.Cipher;
-
-import org.bouncycastle.pqc.jcajce.spec.ECCKeyGenParameterSpec;
-
-
-public class McElieceFujisakiCipherTest
- extends AsymmetricHybridCipherTest
-{
-
- protected void setUp()
- {
- super.setUp();
- try
- {
- kpg = KeyPairGenerator.getInstance("McElieceFujisaki");
- cipher = Cipher.getInstance("McElieceFujisakiWithSHA256");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
-
- }
-
- /**
- * Test encryption and decryption performance for SHA256 message digest and parameters
- * m=11, t=50.
- */
- public void testEnDecryption_SHA256_11_50()
- throws Exception
- {
- // initialize key pair generator
- ECCKeyGenParameterSpec kpgParams = new ECCKeyGenParameterSpec(11, 50);
- kpg.initialize(kpgParams);
-
- // perform test
- performEnDecryptionTest(1, 10, 32, null);
- }
-
-}
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceKobaraImaiCipherTest.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceKobaraImaiCipherTest.java
deleted file mode 100644
index c396a87e..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McElieceKobaraImaiCipherTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.security.KeyPairGenerator;
-import java.security.spec.AlgorithmParameterSpec;
-
-import javax.crypto.Cipher;
-
-import org.bouncycastle.pqc.jcajce.spec.ECCKeyGenParameterSpec;
-
-
-public class McElieceKobaraImaiCipherTest
- extends AsymmetricHybridCipherTest
-{
-
- protected void setUp()
- {
- super.setUp();
- try
- {
- kpg = KeyPairGenerator.getInstance("McElieceKobaraImai");
- cipher = Cipher.getInstance("McElieceKobaraImaiWithSHA256");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * Test encryption and decryption performance for SHA256 message digest and parameters
- * m=11, t=50.
- */
- public void testEnDecryption_SHA256_11_50()
- throws Exception
- {
- // initialize key pair generator
- AlgorithmParameterSpec kpgParams = new ECCKeyGenParameterSpec(11, 50);
- kpg.initialize(kpgParams);
-
- performEnDecryptionTest(1, 10, 32, null);
- }
-
-}
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McEliecePKCSCipherTest.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McEliecePKCSCipherTest.java
deleted file mode 100644
index 74ab66b7..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McEliecePKCSCipherTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.security.KeyPairGenerator;
-
-import javax.crypto.Cipher;
-
-import org.bouncycastle.pqc.jcajce.spec.ECCKeyGenParameterSpec;
-
-public class McEliecePKCSCipherTest
- extends AsymmetricBlockCipherTest
-{
-
- protected void setUp()
- {
- super.setUp();
-
- try
- {
- kpg = KeyPairGenerator.getInstance("McEliecePKCS");
- cipher = Cipher.getInstance("McEliecePKCSwithSHA256");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
-
-
- }
-
- public void testEnDecryption_9_33()
- throws Exception
- {
- ECCKeyGenParameterSpec params = new ECCKeyGenParameterSpec(9, 33);
- kpg.initialize(params);
- performEnDecryptionTest(2, 10, params);
- }
-
- public void testEnDecryption_11_50()
- throws Exception
- {
- ECCKeyGenParameterSpec params = new ECCKeyGenParameterSpec(11, 50);
- kpg.initialize(params);
- performEnDecryptionTest(2, 10, params);
- }
-
-
-}
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McEliecePointchevalCipherTest.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McEliecePointchevalCipherTest.java
deleted file mode 100644
index 791baa1d..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/McEliecePointchevalCipherTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.security.KeyPairGenerator;
-import java.security.spec.AlgorithmParameterSpec;
-
-import javax.crypto.Cipher;
-
-import org.bouncycastle.pqc.jcajce.spec.ECCKeyGenParameterSpec;
-
-public class McEliecePointchevalCipherTest
- extends AsymmetricHybridCipherTest
-{
-
- protected void setUp()
- {
- super.setUp();
- try
- {
- kpg = KeyPairGenerator.getInstance("McEliecePointcheval");
- cipher = Cipher.getInstance("McEliecePointchevalWithSHA256");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * Test encryption and decryption performance for SHA256 message digest and parameters
- * m=11, t=50.
- */
- public void testEnDecryption_SHA256_11_50()
- throws Exception
- {
- // initialize key pair generator
- AlgorithmParameterSpec kpgParams = new ECCKeyGenParameterSpec(11, 50);
- kpg.initialize(kpgParams);
-
- // perform test
- performEnDecryptionTest(1, 10, 32, null);
- }
-
-}
diff --git a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/RainbowSignatureTest.java b/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/RainbowSignatureTest.java
deleted file mode 100644
index 69f69b62..00000000
--- a/prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/RainbowSignatureTest.java
+++ /dev/null
@@ -1,450 +0,0 @@
-package org.bouncycastle.pqc.jcajce.provider.test;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.InvalidAlgorithmParameterException;
-import java.security.InvalidKeyException;
-import java.security.Key;
-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.SignatureException;
-import java.security.spec.AlgorithmParameterSpec;
-import java.security.spec.PKCS8EncodedKeySpec;
-import java.security.spec.X509EncodedKeySpec;
-import java.util.Random;
-
-import junit.framework.TestCase;
-import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider;
-import org.bouncycastle.pqc.jcajce.spec.RainbowParameterSpec;
-import org.bouncycastle.util.encoders.Hex;
-
-public class RainbowSignatureTest
- extends TestCase
-{
-
- protected KeyPairGenerator kpg;
-
- protected Signature sig;
-
- private Signature sigVerify;
-
- private KeyPair keyPair;
-
- private PublicKey pubKey;
-
- private PrivateKey privKey;
-
- private byte[] mBytes;
-
- private byte[] sigBytes;
-
- private boolean valid;
-
- Random rand = new Random();
-
- private KeyFactory kf;
-
-
- public void setUp()
- {
- if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null)
- {
- Security.addProvider(new BouncyCastlePQCProvider());
- }
- }
-
- /**
- * Test signature generation and verification
- *
- * @param numPassesKPG the number of key pair generation passes
- * @param numPassesSigVer the number of sign/verify passes
- * @param kpgParams the parameters for the key pair generator
- */
- protected final void performSignVerifyTest(int numPassesKPG,
- int numPassesSigVer, AlgorithmParameterSpec kpgParams)
- throws Exception
- {
- this.performSignVerifyTest(numPassesKPG, numPassesSigVer,
- kpgParams, 100);
- }
-
- /**
- * Test signature generation and verification
- *
- * @param numPassesKPG the number of key pair generation passes
- * @param numPassesSigVer the number of sign/verify passes
- * @param kpgParams the parameters for the key pair generator
- * @param messageSize length of the messages which are signed in bytes
- */
- protected final void performSignVerifyTest(int numPassesKPG,
- int numPassesSigVer, AlgorithmParameterSpec kpgParams,
- int messageSize)
- throws Exception
- {
- // generate new signature instance for verification
- // sigVerify = (Signature) sig.getClass().newInstance();
- sigVerify = Signature.getInstance("SHA384WITHRainbow");
-
- for (int j = 0; j < numPassesKPG; j++)
- {
- // generate key pair
- if (kpgParams != null)
- {
- kpg.initialize(kpgParams);
- }
- keyPair = kpg.genKeyPair();
- pubKey = keyPair.getPublic();
- privKey = keyPair.getPrivate();
-
- // initialize signature instances
- sig.initSign(privKey);
- sigVerify.initVerify(pubKey);
-
- for (int k = 1; k <= numPassesSigVer; k++)
- {
- // generate random message
- mBytes = new byte[messageSize];
- rand.nextBytes(mBytes);
-
- // sign
- sig.update(mBytes);
- sigBytes = sig.sign();
-
- // verify
- sigVerify.update(mBytes);
- valid = sigVerify.verify(sigBytes);
-
- // compare
- assertTrue(
- "Signature generation and verification test failed.\n"
- + "Message: \""
- + new String(Hex.encode(mBytes)) + "\"\n"
- + privKey + "\n" + pubKey, valid);
- }
- }
- }
-
- /**
- * Test signature generation and verification
- *
- * @param numPassesKPG the number of key pair generation passes
- * @param numPassesSigVer the number of sign/verify passes
- * @param keySize the key size for the key pair generator
- */
- protected final void performSignVerifyTest(int numPassesKPG,
- int numPassesSigVer, int keySize)
- throws Exception
- {
-
- System.out.println("=== TEST ===");
- System.out.println(numPassesKPG + " Tests");
- System.out.println("KeySize: " + keySize + "");
- for (int j = 0; j < numPassesKPG; j++)
- {
- // generate key pair
-
- kpg.initialize(keySize);
- keyPair = kpg.genKeyPair();
- pubKey = keyPair.getPublic();
- //writeKey("RainbowPubKey", pubKey);
- privKey = keyPair.getPrivate();
- // it causes errors! cause RainbowParameters will be null
- //pubKey = getPublicKey("RainbowPubKey");
-
- // initialize signature instances
- sig.initSign(privKey, new SecureRandom());
- sigVerify.initVerify(pubKey);
-
- for (int k = 1; k <= numPassesSigVer; k++)
- {
- // generate random message
- final int messageSize = 100;
- mBytes = new byte[messageSize];
- rand.nextBytes(mBytes);
-
- sig.update(mBytes, 0, mBytes.length);
- sigBytes = sig.sign();
-
- // verify
- sigVerify.update(mBytes, 0, mBytes.length);
- valid = sigVerify.verify(sigBytes);
-
- // compare
- assertTrue(
- "Signature generation and verification test failed.\n"
- + "Message: \""
- + new String(Hex.encode(mBytes)) + "\"\n"
- + privKey + "\n" + pubKey, valid);
- }
- }
-
- }
-
- protected final void performSignVerifyTest(int numPassesSigVer, PublicKey pubKey, PrivateKey privKey)
- throws Exception
- {
- // initialize signature instances
- sig.initSign(privKey);
- sigVerify.initVerify(pubKey);
-
- for (int k = 1; k <= numPassesSigVer; k++)
- {
- // generate random message
- final int messageSize = 100;
- mBytes = new byte[messageSize];
- rand.nextBytes(mBytes);
-
- // sign
- sig.update(mBytes);
- sigBytes = sig.sign();
-
- // verify
- sigVerify.update(mBytes);
- valid = sigVerify.verify(sigBytes);
-
-
- // compare
- assertTrue(
- "Signature generation and verification test failed.\n"
- + "Message: \""
- + new String(Hex.encode(mBytes)) + "\"\n"
- + privKey + "\n" + pubKey, valid);
- }
- }
-
- protected final void performVerifyTest(PublicKey pk, byte[] signature, byte[] message)
- {
- try
- {
- sig.initVerify(pk);
- sig.update(message);
- valid = sig.verify(signature);
- assertTrue("Signature generation and verification test failed.\n" + "Message: \"" + new String(Hex.encode(mBytes)) + "\"\n" + privKey + "\n" + pubKey, valid);
- }
- catch (InvalidKeyException e)
- {
- e.printStackTrace();
- }
- catch (SignatureException e)
- {
- e.printStackTrace();
- }
- }
-
-
- /**
- * Using ParameterSpecs to initialize the key pair generator without initialization.
- */
-
- public void testRainbowWithSHA224()
- throws Exception
- {
- kpg = KeyPairGenerator.getInstance("Rainbow", BouncyCastlePQCProvider.PROVIDER_NAME);
- sig = Signature.getInstance("SHA224WITHRainbow", BouncyCastlePQCProvider.PROVIDER_NAME);
- sigVerify = Signature.getInstance("SHA224WITHRainbow", BouncyCastlePQCProvider.PROVIDER_NAME);
- performSignVerifyTest(1, 1, 28);
- }
-
- public void testRainbowithSHA256()
- throws Exception
- {
- kpg = KeyPairGenerator.getInstance("Rainbow");
- sig = Signature.getInstance("SHA256WITHRainbow");
- sigVerify = Signature.getInstance("SHA256WITHRainbow");
- performSignVerifyTest(1, 1, 32);
- }
-
- public void testRainbowWithSHA384()
- throws Exception
- {
- kpg = KeyPairGenerator.getInstance("Rainbow");
- sig = Signature.getInstance("SHA384WITHRainbow");
- sigVerify = Signature.getInstance("SHA384WITHRainbow");
- performSignVerifyTest(1, 1, 48);
- }
-
- public void testRainbowWithSHA512()
- throws Exception
- {
- kpg = KeyPairGenerator.getInstance("Rainbow");
- sig = Signature.getInstance("SHA512WITHRainbow");
- sigVerify = Signature.getInstance("SHA512WITHRainbow");
- performSignVerifyTest(1, 1, 64);
- }
-
- public void test_KeyFactory()
- throws Exception
- {
- kpg = KeyPairGenerator.getInstance("Rainbow");
-
- KeyFactory kf = KeyFactory.getInstance("Rainbow");
-
- AlgorithmParameterSpec specs = new RainbowParameterSpec();
- try
- {
- kpg.initialize(specs);
- }
- catch (InvalidAlgorithmParameterException e)
- {
- e.printStackTrace();
- }
- // XXX
- kpg.initialize(5);
- keyPair = kpg.genKeyPair();
- pubKey = keyPair.getPublic();
- privKey = keyPair.getPrivate();
-
- byte[] pubKeyBytes = pubKey.getEncoded();
- X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(pubKeyBytes);
- PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(privKey.getEncoded());
-
- PublicKey publicKeyKF = kf.generatePublic(pubKeySpec);
-
- assertEquals(pubKey, publicKeyKF);
- assertEquals(pubKey.hashCode(), publicKeyKF.hashCode());
-
- PrivateKey privKeyKF = kf.generatePrivate(privKeySpec);
-
- assertEquals(privKey, privKeyKF);
- assertEquals(privKey.hashCode(), privKeyKF.hashCode());
- }
-
- public PrivateKey getPrivateKey(String file)
- throws Exception
- {
- byte[] privKeyBytes = getBytesFromFile(new File(file));
- PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(privKeyBytes);
- return kf.generatePrivate(privKeySpec);
- }
-
- public void writeToFile(String filename, String data)
- throws IOException
- {
- FileOutputStream fos = new FileOutputStream(filename);
- fos.write(data.getBytes());
- fos.close();
- }
-
- public void testSignVerifyWithRandomParams()
- throws Exception
- {
- kpg = KeyPairGenerator.getInstance("Rainbow");
- sig = Signature.getInstance("SHA384WITHRainbow");
- int[] vi;
-
- for (int kgen = 1; kgen <= 10; kgen++)
- {
- vi = chooseRandomParams();
- RainbowParameterSpec rbParams = new RainbowParameterSpec(vi);
- performSignVerifyTest(1, 100, rbParams);
- }
- }
-
-
- /**
- * build up the set of vinegars per layer (vi)
- *
- * @return parameters vi
- */
- private int[] chooseRandomParams()
- {
- int n = rand.nextInt(10) + 2;
- int[] vi = new int[n];
-
- vi[0] = rand.nextInt(10) + 2;
- for (int i = 1; i < n; i++)
- {
- vi[i] = vi[i - 1];
- vi[i] += rand.nextInt(10) + 1;
- }
- return vi;
- }
-
- /*
- public void testSignVerifyWithSpecialParams() throws Exception {
- kpg = KeyPairGenerator.getInstance("RainbowWithSHA384");
- sig = Signature.getInstance("SHA384WITHRainbow");
- int[] vi = { 3, 20, 25, 30, 40, 60, 80, 100 };
- performSignVerifyTest(10, 200, new RainbowParameterSpec(vi));
- }
- */
-
- public void testSignVerifyWithDefaultParams()
- throws Exception
- {
- kpg = KeyPairGenerator.getInstance("Rainbow");
- sig = Signature.getInstance("SHA384WITHRainbow");
- performSignVerifyTest(15, 100, new RainbowParameterSpec());
- }
-
-
- public void writeKey(String file, Key key)
- throws IOException
- {
- byte[] privKeyBytes = key.getEncoded();
- FileOutputStream fos = new FileOutputStream(file);
- fos.write(privKeyBytes);
- fos.close();
- }
-
- public PublicKey getPublicKey(String file)
- throws Exception
- {
- kf = KeyFactory.getInstance("Rainbow");
- byte[] pubKeyBytes = getBytesFromFile(new File(file));
- X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(pubKeyBytes);
- return kf.generatePublic(pubKeySpec);
- }
-
-
- public byte[] getBytesFromFile(File file)
- throws IOException
- {
- InputStream is = new FileInputStream(file);
-
- // Get the size of the file
- long length = file.length();
-
- // You cannot create an array using a long type.
- // It needs to be an int type.
- // Before converting to an int type, check
- // to ensure that file is not larger than Integer.MAX_VALUE.
- if (length > Integer.MAX_VALUE)
- {
- // File is too large
- }
-
- // Create the byte array to hold the data
- byte[] bytes = new byte[(int)length];
-
- // Read in the bytes
- int offset = 0;
- int numRead = 0;
- while (offset < bytes.length
- && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0)
- {
- offset += numRead;
- }
-
- // Ensure all the bytes have been read in
- if (offset < bytes.length)
- {
- throw new IOException("Could not completely read file " + file.getName());
- }
-
- // Close the input stream and return bytes
- is.close();
- return bytes;
- }
-
-}
-