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 'core/src/test/java/org/spongycastle/pqc/crypto/test/GMSSSignerTest.java')
-rw-r--r--core/src/test/java/org/spongycastle/pqc/crypto/test/GMSSSignerTest.java88
1 files changed, 88 insertions, 0 deletions
diff --git a/core/src/test/java/org/spongycastle/pqc/crypto/test/GMSSSignerTest.java b/core/src/test/java/org/spongycastle/pqc/crypto/test/GMSSSignerTest.java
new file mode 100644
index 00000000..476322eb
--- /dev/null
+++ b/core/src/test/java/org/spongycastle/pqc/crypto/test/GMSSSignerTest.java
@@ -0,0 +1,88 @@
+package org.spongycastle.pqc.crypto.test;
+
+import java.math.BigInteger;
+import java.security.SecureRandom;
+
+import org.spongycastle.crypto.AsymmetricCipherKeyPair;
+import org.spongycastle.crypto.Digest;
+import org.spongycastle.crypto.Signer;
+import org.spongycastle.crypto.digests.SHA224Digest;
+import org.spongycastle.crypto.params.ParametersWithRandom;
+import org.spongycastle.pqc.crypto.DigestingMessageSigner;
+import org.spongycastle.pqc.crypto.gmss.GMSSDigestProvider;
+import org.spongycastle.pqc.crypto.gmss.GMSSKeyGenerationParameters;
+import org.spongycastle.pqc.crypto.gmss.GMSSKeyPairGenerator;
+import org.spongycastle.pqc.crypto.gmss.GMSSParameters;
+import org.spongycastle.pqc.crypto.gmss.GMSSPrivateKeyParameters;
+import org.spongycastle.pqc.crypto.gmss.GMSSSigner;
+import org.spongycastle.util.BigIntegers;
+import org.spongycastle.util.encoders.Hex;
+import org.spongycastle.util.test.FixedSecureRandom;
+import org.spongycastle.util.test.SimpleTest;
+
+
+public class GMSSSignerTest
+ extends SimpleTest
+{
+ byte[] keyData = Hex.decode("b5014e4b60ef2ba8b6211b4062ba3224e0427dd3");
+
+ SecureRandom keyRandom = new FixedSecureRandom(new byte[][]{keyData, keyData});
+
+ public String getName()
+ {
+ return "GMSS";
+ }
+
+ public void performTest()
+ throws Exception
+ {
+
+ GMSSParameters params = new GMSSParameters(3,
+ new int[]{15, 15, 10}, new int[]{5, 5, 4}, new int[]{3, 3, 2});
+
+ GMSSDigestProvider digProvider = new GMSSDigestProvider()
+ {
+ public Digest get()
+ {
+ return new SHA224Digest();
+ }
+ };
+
+ GMSSKeyPairGenerator gmssKeyGen = new GMSSKeyPairGenerator(digProvider);
+
+ GMSSKeyGenerationParameters genParam = new GMSSKeyGenerationParameters(keyRandom, params);
+
+ gmssKeyGen.init(genParam);
+
+ AsymmetricCipherKeyPair pair = gmssKeyGen.generateKeyPair();
+
+ ParametersWithRandom param = new ParametersWithRandom(pair.getPrivate(), keyRandom);
+
+ // TODO
+ Signer gmssSigner = new DigestingMessageSigner(new GMSSSigner(digProvider), new SHA224Digest());
+ gmssSigner.init(true, param);
+
+ byte[] message = BigIntegers.asUnsignedByteArray(new BigInteger("968236873715988614170569073515315707566766479517"));
+ gmssSigner.update(message, 0, message.length);
+ byte[] sig = gmssSigner.generateSignature();
+
+
+ gmssSigner.init(false, pair.getPublic());
+ gmssSigner.update(message, 0, message.length);
+ if (!gmssSigner.verifySignature(sig))
+ {
+ fail("verification fails");
+ }
+
+ if (!((GMSSPrivateKeyParameters)pair.getPrivate()).isUsed())
+ {
+ fail("private key not marked as used");
+ }
+ }
+
+ public static void main(
+ String[] args)
+ {
+ runTest(new GMSSSignerTest());
+ }
+}