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/spongycastle/pqc/jcajce/provider/test/AsymmetricBlockCipherTest.java')
-rw-r--r--prov/src/test/java/org/spongycastle/pqc/jcajce/provider/test/AsymmetricBlockCipherTest.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/prov/src/test/java/org/spongycastle/pqc/jcajce/provider/test/AsymmetricBlockCipherTest.java b/prov/src/test/java/org/spongycastle/pqc/jcajce/provider/test/AsymmetricBlockCipherTest.java
new file mode 100644
index 00000000..9507c8a7
--- /dev/null
+++ b/prov/src/test/java/org/spongycastle/pqc/jcajce/provider/test/AsymmetricBlockCipherTest.java
@@ -0,0 +1,82 @@
+package org.spongycastle.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.spongycastle.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);
+ }
+ }
+
+}