|
3 | 3 | import java.io.BufferedReader; |
4 | 4 | import java.io.InputStream; |
5 | 5 | import java.io.InputStreamReader; |
| 6 | +import java.security.SecureRandom; |
6 | 7 | import java.util.HashMap; |
7 | 8 |
|
8 | 9 | import junit.framework.TestCase; |
|
15 | 16 | import org.bouncycastle.pqc.crypto.crystals.dilithium.DilithiumPublicKeyParameters; |
16 | 17 | import org.bouncycastle.pqc.crypto.crystals.dilithium.DilithiumSigner; |
17 | 18 | import org.bouncycastle.util.Arrays; |
| 19 | +import org.bouncycastle.util.Strings; |
18 | 20 | import org.bouncycastle.util.encoders.Hex; |
19 | 21 |
|
20 | 22 | public class CrystalsDilithiumTest |
@@ -219,33 +221,33 @@ public void testVectors() |
219 | 221 | } |
220 | 222 | } |
221 | 223 |
|
222 | | -// public void testDilithiumRandom() |
223 | | -// { |
224 | | -// byte[] msg = Strings.toByteArray("Hello World!"); |
225 | | -// DilithiumKeyPairGenerator keyGen = new DilithiumKeyPairGenerator(); |
226 | | -// |
227 | | -// SecureRandom random = new SecureRandom(); |
228 | | -// |
229 | | -// keyGen.init(new DilithiumKeyGenerationParameters(random, DilithiumParameters.dilithium3)); |
230 | | -// |
231 | | -// for (int i = 0; i != 1000; i++) |
232 | | -// { |
233 | | -// AsymmetricCipherKeyPair keyPair = keyGen.generateKeyPair(); |
234 | | -// |
235 | | -// // sign |
236 | | -// DilithiumSigner signer = new DilithiumSigner(); |
237 | | -// DilithiumPrivateKeyParameters skparam = (DilithiumPrivateKeyParameters)keyPair.getPrivate(); |
238 | | -// ParametersWithRandom skwrand = new ParametersWithRandom(skparam, random); |
239 | | -// signer.init(true, skwrand); |
240 | | -// |
241 | | -// byte[] sigGenerated = signer.generateSignature(msg); |
242 | | -// |
243 | | -// // verify |
244 | | -// DilithiumSigner verifier = new DilithiumSigner(); |
245 | | -// DilithiumPublicKeyParameters pkparam = (DilithiumPublicKeyParameters)keyPair.getPublic(); |
246 | | -// verifier.init(false, pkparam); |
247 | | -// |
248 | | -// assertTrue("count = " + i, verifier.verifySignature(msg, sigGenerated)); |
249 | | -// } |
250 | | -// } |
| 224 | + public void testDilithiumRandom() |
| 225 | + { |
| 226 | + byte[] msg = Strings.toByteArray("Hello World!"); |
| 227 | + DilithiumKeyPairGenerator keyGen = new DilithiumKeyPairGenerator(); |
| 228 | + |
| 229 | + SecureRandom random = new SecureRandom(); |
| 230 | + |
| 231 | + keyGen.init(new DilithiumKeyGenerationParameters(random, DilithiumParameters.dilithium3)); |
| 232 | + |
| 233 | + for (int i = 0; i != 1000; i++) |
| 234 | + { |
| 235 | + AsymmetricCipherKeyPair keyPair = keyGen.generateKeyPair(); |
| 236 | + |
| 237 | + // sign |
| 238 | + DilithiumSigner signer = new DilithiumSigner(); |
| 239 | + DilithiumPrivateKeyParameters skparam = (DilithiumPrivateKeyParameters)keyPair.getPrivate(); |
| 240 | + ParametersWithRandom skwrand = new ParametersWithRandom(skparam, random); |
| 241 | + signer.init(true, skwrand); |
| 242 | + |
| 243 | + byte[] sigGenerated = signer.generateSignature(msg); |
| 244 | + |
| 245 | + // verify |
| 246 | + DilithiumSigner verifier = new DilithiumSigner(); |
| 247 | + DilithiumPublicKeyParameters pkparam = (DilithiumPublicKeyParameters)keyPair.getPublic(); |
| 248 | + verifier.init(false, pkparam); |
| 249 | + |
| 250 | + assertTrue("count = " + i, verifier.verifySignature(msg, sigGenerated)); |
| 251 | + } |
| 252 | + } |
251 | 253 | } |
0 commit comments