|
11 | 11 |
|
12 | 12 | public class SignatureTest { |
13 | 13 |
|
14 | | - public static final String OUTPUT = "%-15s %-12s %-12s %-12s %-12s%n"; |
| 14 | + public static final int COUNT = 10; |
| 15 | + public static final boolean SKIP_SLH_DSA = true; |
| 16 | + |
| 17 | + public static final String OUTPUT = "%-15s %-12s %-12s %-12s %-12s %-12s%n"; |
15 | 18 |
|
16 | 19 | public static void main(String[] args) throws Exception { |
17 | 20 | Security.addProvider(new BouncyCastleProvider()); |
18 | 21 |
|
19 | 22 | String payload = new String(SignatureTest.class.getClassLoader().getResourceAsStream("payload").readAllBytes(), StandardCharsets.UTF_8); |
20 | | - int countFast = 100; |
21 | | - int countSlow = 1; |
22 | 23 |
|
23 | | - System.out.printf(OUTPUT, "Algorithm", "Size", "Size (url)", "Key Size", "Time (ms)"); |
| 24 | + System.out.printf(OUTPUT, "Algorithm", "Size", "Size (url)", "Key Size", "Time (ms)", "Provider"); |
24 | 25 | for (SignatureAlgorithms a : SignatureAlgorithms.values()) { |
25 | | - KeyPairGenerator keyPairGenerator = a.getProvider() != null ? KeyPairGenerator.getInstance(a.getKeyPairAlgorithm(), a.getProvider()) : KeyPairGenerator.getInstance(a.getKeyPairAlgorithm()); |
| 26 | + KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(a.getKeyPairAlgorithm()); |
26 | 27 | keyPairGenerator.initialize(a.getSpec()); |
27 | 28 | KeyPair keyPair = keyPairGenerator.generateKeyPair(); |
28 | 29 |
|
29 | 30 | byte[] signedBytes = new byte[0]; |
30 | 31 | long start = System.currentTimeMillis(); |
31 | 32 |
|
32 | | - int count = a.getName().startsWith("SLH_DSA") ? countSlow : countFast; |
33 | | - for (int i = 0; i <= count; i++) { |
34 | | - Signature signature = a.getProvider() != null ? Signature.getInstance(a.getAlgorithm(), a.getProvider()) : Signature.getInstance(a.getAlgorithm()); |
| 33 | + String provider = null; |
| 34 | + |
| 35 | + if (SKIP_SLH_DSA && a.getAlgorithm().equals("SLHDSA")) { |
| 36 | + continue; |
| 37 | + } |
| 38 | + |
| 39 | + for (int i = 0; i <= COUNT; i++) { |
| 40 | + Signature signature = Signature.getInstance(a.getAlgorithm()); |
35 | 41 | signature.initSign(keyPair.getPrivate()); |
36 | 42 | signature.update(payload.getBytes()); |
37 | 43 | signedBytes = signature.sign(); |
| 44 | + provider = signature.getProvider().getName(); |
38 | 45 | } |
39 | 46 |
|
40 | 47 | long time = System.currentTimeMillis() - start; |
41 | 48 | String signatureEncoded = Base64.getUrlEncoder().encodeToString(signedBytes); |
42 | 49 |
|
43 | | - System.out.printf(OUTPUT, a.getName(), signedBytes.length, signatureEncoded.length(), keyPair.getPublic().getEncoded().length, (double) time / count); |
| 50 | + System.out.printf(OUTPUT, a.getName(), signedBytes.length, signatureEncoded.length(), keyPair.getPublic().getEncoded().length, (double) time / COUNT, provider); |
44 | 51 | } |
45 | 52 |
|
46 | 53 | } |
|
0 commit comments