summary refs log tree commit diff
path: root/crypto/test
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2023-05-11 19:32:38 +0700
committerPeter Dettman <peter.dettman@bouncycastle.org>2023-05-11 19:32:38 +0700
commit2ccdc75b9e1b2d3a85fdd6f42fa0374dfa6bc3ea (patch)
tree860771ecc039a2189829df1e07cc9fff564aede5 /crypto/test
parentRefactoring in Math.EC.Rfc8032 (diff)
downloadBouncyCastle.NET-ed25519-2ccdc75b9e1b2d3a85fdd6f42fa0374dfa6bc3ea.tar.xz
Refactoring in Picnic
Diffstat (limited to 'crypto/test')
-rw-r--r--crypto/test/src/pqc/crypto/test/PicnicVectorTest.cs33
1 files changed, 32 insertions, 1 deletions
diff --git a/crypto/test/src/pqc/crypto/test/PicnicVectorTest.cs b/crypto/test/src/pqc/crypto/test/PicnicVectorTest.cs
index c3c00cba6..6ceb54697 100644
--- a/crypto/test/src/pqc/crypto/test/PicnicVectorTest.cs
+++ b/crypto/test/src/pqc/crypto/test/PicnicVectorTest.cs
@@ -6,6 +6,7 @@ using NUnit.Framework;
 using Org.BouncyCastle.Crypto;
 using Org.BouncyCastle.Pqc.Crypto.Picnic;
 using Org.BouncyCastle.Pqc.Crypto.Utilities;
+using Org.BouncyCastle.Security;
 using Org.BouncyCastle.Utilities;
 using Org.BouncyCastle.Utilities.Encoders;
 using Org.BouncyCastle.Utilities.Test;
@@ -33,6 +34,36 @@ namespace Org.BouncyCastle.Pqc.Crypto.Tests
 
         private static readonly IEnumerable<string> TestVectorFiles = Parameters.Keys;
 
+        [Test]
+        public void TestPicnicRandom()
+        {
+            byte[] msg = Strings.ToByteArray("Hello World!");
+            PicnicKeyPairGenerator keyGen = new PicnicKeyPairGenerator();
+
+            SecureRandom random = new SecureRandom();
+
+            keyGen.Init(new PicnicKeyGenerationParameters(random, PicnicParameters.picnic3l1));
+
+            for (int i = 0; i != 100; i++)
+            {
+                AsymmetricCipherKeyPair keyPair = keyGen.GenerateKeyPair();
+
+                // sign
+                PicnicSigner signer = new PicnicSigner();
+                PicnicPrivateKeyParameters skparam = (PicnicPrivateKeyParameters)keyPair.Private;
+                signer.Init(true, skparam);
+
+                byte[] sigGenerated = signer.GenerateSignature(msg);
+
+                // verify
+                PicnicSigner verifier = new PicnicSigner();
+                PicnicPublicKeyParameters pkparam = (PicnicPublicKeyParameters)keyPair.Public;
+                verifier.Init(false, pkparam);
+
+                Assert.True(verifier.VerifySignature(msg, sigGenerated), "count = " + i);
+            }
+        }
+
         [TestCaseSource(nameof(TestVectorFiles))]
         [Parallelizable(ParallelScope.All)]
         public void TV(string testVectorFile)
@@ -82,7 +113,7 @@ namespace Org.BouncyCastle.Pqc.Crypto.Tests
             Assert.True(smlen == attachedSig.Length, name + " " + count + ": signature length");
 
             signer.Init(false, pubParams);
-            Assert.True(signer.VerifySignature(msg, attachedSig), (name + " " + count + ": signature verify"));
+            Assert.True(signer.VerifySignature(msg, sigGenerated), (name + " " + count + ": signature verify"));
             Assert.True(Arrays.AreEqual(sigExpected, attachedSig), name + " " + count + ": signature gen match");
         }