aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/core/src/test/java/org/spongycastle/pqc/crypto/test/EncryptionKeyTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/core/src/test/java/org/spongycastle/pqc/crypto/test/EncryptionKeyTest.java')
-rw-r--r--libraries/spongycastle/core/src/test/java/org/spongycastle/pqc/crypto/test/EncryptionKeyTest.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/libraries/spongycastle/core/src/test/java/org/spongycastle/pqc/crypto/test/EncryptionKeyTest.java b/libraries/spongycastle/core/src/test/java/org/spongycastle/pqc/crypto/test/EncryptionKeyTest.java
new file mode 100644
index 000000000..1b152bffd
--- /dev/null
+++ b/libraries/spongycastle/core/src/test/java/org/spongycastle/pqc/crypto/test/EncryptionKeyTest.java
@@ -0,0 +1,51 @@
+package org.spongycastle.pqc.crypto.test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+import org.spongycastle.crypto.AsymmetricCipherKeyPair;
+import org.spongycastle.pqc.crypto.ntru.NTRUEncryptionKeyPairGenerator;
+import org.spongycastle.pqc.crypto.ntru.NTRUEncryptionKeyGenerationParameters;
+import org.spongycastle.pqc.crypto.ntru.NTRUEncryptionPrivateKeyParameters;
+import org.spongycastle.pqc.crypto.ntru.NTRUEncryptionPublicKeyParameters;
+
+public class EncryptionKeyTest
+ extends TestCase
+{
+ public void testEncode()
+ throws IOException
+ {
+ for (NTRUEncryptionKeyGenerationParameters params : new NTRUEncryptionKeyGenerationParameters[]{NTRUEncryptionKeyGenerationParameters.APR2011_743, NTRUEncryptionKeyGenerationParameters.APR2011_743_FAST, NTRUEncryptionKeyGenerationParameters.EES1499EP1})
+ {
+ testEncode(params);
+ }
+ }
+
+ private void testEncode(NTRUEncryptionKeyGenerationParameters params)
+ throws IOException
+ {
+ NTRUEncryptionKeyPairGenerator kpGen = new NTRUEncryptionKeyPairGenerator();
+
+ kpGen.init(params);
+
+ AsymmetricCipherKeyPair kp = kpGen.generateKeyPair();
+ byte[] priv = ((NTRUEncryptionPrivateKeyParameters)kp.getPrivate()).getEncoded();
+ byte[] pub = ((NTRUEncryptionPublicKeyParameters)kp.getPublic()).getEncoded();
+
+ AsymmetricCipherKeyPair kp2 = new AsymmetricCipherKeyPair(new NTRUEncryptionPublicKeyParameters(pub, params.getEncryptionParameters()), new NTRUEncryptionPrivateKeyParameters(priv, params.getEncryptionParameters()));
+ assertEquals(kp.getPublic(), kp2.getPublic());
+ assertEquals(kp.getPrivate(), kp2.getPrivate());
+
+ ByteArrayOutputStream bos1 = new ByteArrayOutputStream();
+ ByteArrayOutputStream bos2 = new ByteArrayOutputStream();
+ ((NTRUEncryptionPrivateKeyParameters)kp.getPrivate()).writeTo(bos1);
+ ((NTRUEncryptionPublicKeyParameters)kp.getPublic()).writeTo(bos2);
+ ByteArrayInputStream bis1 = new ByteArrayInputStream(bos1.toByteArray());
+ ByteArrayInputStream bis2 = new ByteArrayInputStream(bos2.toByteArray());
+ AsymmetricCipherKeyPair kp3 = new AsymmetricCipherKeyPair(new NTRUEncryptionPublicKeyParameters(bis2, params.getEncryptionParameters()), new NTRUEncryptionPrivateKeyParameters(bis1, params.getEncryptionParameters()));
+ assertEquals(kp.getPublic(), kp3.getPublic());
+ assertEquals(kp.getPrivate(), kp3.getPrivate());
+ }
+} \ No newline at end of file