8318105: [jmh] the test java.security.HSS failed with 2 active threads
Reviewed-by: ascarpino
This commit is contained in:
parent
6787c4c3dd
commit
38c01971ff
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,6 +26,7 @@ package org.openjdk.bench.java.security;
|
||||
import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
@ -52,7 +53,6 @@ import sun.security.util.RawKeySpec;
|
||||
*/
|
||||
@BenchmarkMode(Mode.AverageTime)
|
||||
@OutputTimeUnit(TimeUnit.MICROSECONDS)
|
||||
@State(Scope.Thread)
|
||||
@Warmup(iterations = 5, time = 1)
|
||||
@Measurement(iterations = 5, time = 1)
|
||||
@Fork(value = 3, jvmArgsAppend = {"--add-exports", "java.base/sun.security.util=ALL-UNNAMED"})
|
||||
@ -63,14 +63,6 @@ import sun.security.util.RawKeySpec;
|
||||
// RFC 8554 section 6.4; two with W=8 and six with W=4.
|
||||
|
||||
public class HSS {
|
||||
Provider p;
|
||||
static byte[] pk;
|
||||
static byte[] msg;
|
||||
static byte[] sig;
|
||||
static Signature v;
|
||||
|
||||
@Param({"noop"})
|
||||
private String test;
|
||||
|
||||
static byte[] decode(String s) {
|
||||
return HexFormat.of().parseHex(s
|
||||
@ -78,15 +70,7 @@ public class HSS {
|
||||
.replaceAll("\\s", ""));
|
||||
}
|
||||
|
||||
@Setup
|
||||
public void setup() throws Exception {
|
||||
p = Security.getProvider("SUN");
|
||||
if (p == null) {
|
||||
throw new Exception ("Can't load \"Sun\" provider");
|
||||
}
|
||||
}
|
||||
|
||||
public Signature getVerifier(byte[] pk) throws Exception {
|
||||
public static Signature getVerifier(byte[] pk) throws Exception {
|
||||
var kf = KeyFactory.getInstance("HSS/LMS", Security.getProvider("SUN"));
|
||||
var pk1 = kf.generatePublic(new RawKeySpec(pk));
|
||||
|
||||
@ -95,11 +79,8 @@ public class HSS {
|
||||
return vv;
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public void verify() throws Exception {
|
||||
if (v == null) {
|
||||
return;
|
||||
}
|
||||
public static void verify(Signature v, byte[] pk, byte[] msg, byte[] sig)
|
||||
throws Exception {
|
||||
v.update(msg);
|
||||
if (!v.verify(sig)) {
|
||||
throw new RuntimeException();
|
||||
@ -107,7 +88,11 @@ public class HSS {
|
||||
}
|
||||
|
||||
// RFC 8554 Test Case 1
|
||||
public static class test01 extends HSS {
|
||||
@State(Scope.Benchmark)
|
||||
public static class test01 {
|
||||
byte[] pk;
|
||||
byte[] msg;
|
||||
byte[] sig;
|
||||
|
||||
@Param({"RFC 8554 1"})
|
||||
private String test;
|
||||
@ -220,13 +205,15 @@ public class HSS {
|
||||
f90b65a7a6201689999f32bfd368e5e3ec9cb70ac7b8399003f175c40885081a
|
||||
09ab3034911fe125631051df0408b3946b0bde790911e8978ba07dd56c73e7ee
|
||||
""");
|
||||
|
||||
v = getVerifier(pk);
|
||||
}
|
||||
}
|
||||
|
||||
// RFC 8554 Test Case 2
|
||||
public static class test02 extends HSS {
|
||||
@State(Scope.Benchmark)
|
||||
public static class test02 {
|
||||
byte[] pk;
|
||||
byte[] msg;
|
||||
byte[] sig;
|
||||
|
||||
@Param({"RFC 8554 2"})
|
||||
private String test;
|
||||
@ -376,13 +363,15 @@ public class HSS {
|
||||
b0f75be80ea3af098c9752420a8ac0ea2bbb1f4eeba05238aef0d8ce63f0c6e5
|
||||
e4041d95398a6f7f3e0ee97cc1591849d4ed236338b147abde9f51ef9fd4e1c1
|
||||
""");
|
||||
|
||||
v = getVerifier(pk);
|
||||
}
|
||||
}
|
||||
|
||||
// LMSigParameters.lms_sha256_m32_h15, LMOtsParameters.sha256_n32_w8);
|
||||
public static class test03 extends HSS {
|
||||
@State(Scope.Benchmark)
|
||||
public static class test03 {
|
||||
byte[] pk;
|
||||
byte[] msg;
|
||||
byte[] sig;
|
||||
|
||||
@Param({" h15_w8"})
|
||||
private String test;
|
||||
@ -485,13 +474,15 @@ public class HSS {
|
||||
f4197291b1ad4257f8f76e1633c19f77fc361767a7a3804d5607931d975d3b19
|
||||
5182fd0867719ce10daf0f0c0d52b16b8088ca9a26a22aa05224a1765fc82961
|
||||
""");
|
||||
|
||||
v = getVerifier(pk);
|
||||
}
|
||||
}
|
||||
|
||||
// LMSigParameters.lms_sha256_m32_h20, LMOtsParameters.sha256_n32_w8);
|
||||
public static class test04 extends HSS {
|
||||
@State(Scope.Benchmark)
|
||||
public static class test04 {
|
||||
byte[] pk;
|
||||
byte[] msg;
|
||||
byte[] sig;
|
||||
|
||||
@Param({" h20_w8"})
|
||||
private String test;
|
||||
@ -599,13 +590,15 @@ public class HSS {
|
||||
072a39cfd09a8bf9c7591c605659c1b103288486475f54be0fb80c18717a944f
|
||||
51b6d317fba486e1e0ab5afea205335836e717a185827ea4cd47d557be53cc4e
|
||||
""");
|
||||
|
||||
v = getVerifier(pk);
|
||||
}
|
||||
}
|
||||
|
||||
// LMSigParameters.lms_sha256_m32_h15, LMOtsParameters.sha256_n32_w4);
|
||||
public static class test05 extends HSS {
|
||||
@State(Scope.Benchmark)
|
||||
public static class test05 {
|
||||
byte[] pk;
|
||||
byte[] msg;
|
||||
byte[] sig;
|
||||
|
||||
@Param({" h15_w4"})
|
||||
private String test;
|
||||
@ -741,13 +734,15 @@ public class HSS {
|
||||
213db6d352863854781c78c4cac3083210f979d3f7884aca69fa83429c1542a5
|
||||
51b8e95ffad4f89b506bd31ba613fe66a375434114dfbdf11741a8d86a239ded
|
||||
""");
|
||||
|
||||
v = getVerifier(pk);
|
||||
}
|
||||
}
|
||||
|
||||
// LMSigParameters.lms_sha256_m32_h20, LMOtsParameters.sha256_n32_w4);
|
||||
public static class test06 extends HSS {
|
||||
@State(Scope.Benchmark)
|
||||
public static class test06 {
|
||||
byte[] pk;
|
||||
byte[] msg;
|
||||
byte[] sig;
|
||||
|
||||
@Param({" h20_w4"})
|
||||
private String test;
|
||||
@ -888,14 +883,16 @@ public class HSS {
|
||||
cd742fa9e1225dc8e6cc32b86d6f57a3ac4b6d733a0655cfcc036c4b4c004a61
|
||||
1efd58035b06ba03b4a701a68f5945cd90bd4d69d702fb43f0ff10a5879ab709
|
||||
""");
|
||||
|
||||
v = getVerifier(pk);
|
||||
}
|
||||
}
|
||||
|
||||
// LMSigParameters.lms_sha256_m32_h15, LMOtsParameters.sha256_n32_w4);
|
||||
// LMSigParameters.lms_sha256_m32_h10, LMOtsParameters.sha256_n32_w4);
|
||||
public static class test07 extends HSS {
|
||||
@State(Scope.Benchmark)
|
||||
public static class test07 {
|
||||
byte[] pk;
|
||||
byte[] msg;
|
||||
byte[] sig;
|
||||
|
||||
@Param({"h15_w4_h10_w4"})
|
||||
private String test;
|
||||
@ -1116,14 +1113,16 @@ public class HSS {
|
||||
7ffe104cd0be40b96a04048def98caffea64e25ecfdd3566d3775200c5eb9182
|
||||
e9a45d41023db850048e05f200a4e7ed2e0b48c532e10c1628503d5b7f394cde
|
||||
""");
|
||||
|
||||
v = getVerifier(pk);
|
||||
}
|
||||
}
|
||||
|
||||
// LMSigParameters.lms_sha256_m32_h15, LMOtsParameters.sha256_n32_w4);
|
||||
// LMSigParameters.lms_sha256_m32_h15, LMOtsParameters.sha256_n32_w4);
|
||||
public static class test08 extends HSS {
|
||||
@State(Scope.Benchmark)
|
||||
public static class test08 {
|
||||
byte[] pk;
|
||||
byte[] msg;
|
||||
byte[] sig;
|
||||
|
||||
@Param({"h15_w4_h15_w4"})
|
||||
private String test;
|
||||
@ -1349,14 +1348,16 @@ public class HSS {
|
||||
244569171a23d6d593bd19634758b7ff9c8731720e771023fdb0a6241dda4f61
|
||||
a4385d3b9c5b6f6bb018324528aff429eca9c1264de9ea434a1a90e07f69015e
|
||||
""");
|
||||
|
||||
v = getVerifier(pk);
|
||||
}
|
||||
}
|
||||
|
||||
// LMSigParameters.lms_sha256_m32_h20, LMOtsParameters.sha256_n32_w4);
|
||||
// LMSigParameters.lms_sha256_m32_h10, LMOtsParameters.sha256_n32_w4);
|
||||
public static class test09 extends HSS {
|
||||
@State(Scope.Benchmark)
|
||||
public static class test09 {
|
||||
byte[] pk;
|
||||
byte[] msg;
|
||||
byte[] sig;
|
||||
|
||||
@Param({"h20_w4_h10_w4"})
|
||||
private String test;
|
||||
@ -1582,14 +1583,16 @@ public class HSS {
|
||||
a7a4cb92d8b054a206adec09b35ea6615069fc7d49132549bab5548b9e1fe61d
|
||||
2b7a9ba0d6d3e0336f17f3caa18e0ea19d6cf0a9c0e48a83cf325369b6a091ba
|
||||
""");
|
||||
|
||||
v = getVerifier(pk);
|
||||
}
|
||||
}
|
||||
|
||||
// LMSigParameters.lms_sha256_m32_h20, LMOtsParameters.sha256_n32_w4);
|
||||
// LMSigParameters.lms_sha256_m32_h15, LMOtsParameters.sha256_n32_w4);
|
||||
public static class test10 extends HSS {
|
||||
@State(Scope.Benchmark)
|
||||
public static class test10 {
|
||||
byte[] pk;
|
||||
byte[] msg;
|
||||
byte[] sig;
|
||||
|
||||
@Param({"h20_w4_h15_w4"})
|
||||
private String test;
|
||||
@ -1820,8 +1823,138 @@ public class HSS {
|
||||
ba5cab16b084d208d20bf25ad9a7ae31bceb00b07ef20cab7d1f6883ac331c75
|
||||
a2aefb8230ae97dc34577785b123af406040d01fd072c493228d7583cd023c25
|
||||
""");
|
||||
|
||||
v = getVerifier(pk);
|
||||
}
|
||||
}
|
||||
|
||||
@State(Scope.Thread)
|
||||
public static class verifier01 {
|
||||
Signature v;
|
||||
|
||||
@Setup
|
||||
public void setup(test01 test) throws Exception {
|
||||
v = getVerifier(test.pk);
|
||||
}
|
||||
}
|
||||
@State(Scope.Thread)
|
||||
public static class verifier02 {
|
||||
Signature v;
|
||||
|
||||
@Setup
|
||||
public void setup(test02 test) throws Exception {
|
||||
v = getVerifier(test.pk);
|
||||
}
|
||||
}
|
||||
@State(Scope.Thread)
|
||||
public static class verifier03 {
|
||||
Signature v;
|
||||
|
||||
@Setup
|
||||
public void setup(test03 test) throws Exception {
|
||||
v = getVerifier(test.pk);
|
||||
}
|
||||
}
|
||||
@State(Scope.Thread)
|
||||
public static class verifier04 {
|
||||
Signature v;
|
||||
|
||||
@Setup
|
||||
public void setup(test04 test) throws Exception {
|
||||
v = getVerifier(test.pk);
|
||||
}
|
||||
}
|
||||
@State(Scope.Thread)
|
||||
public static class verifier05 {
|
||||
Signature v;
|
||||
|
||||
@Setup
|
||||
public void setup(test05 test) throws Exception {
|
||||
v = getVerifier(test.pk);
|
||||
}
|
||||
}
|
||||
@State(Scope.Thread)
|
||||
public static class verifier06 {
|
||||
Signature v;
|
||||
|
||||
@Setup
|
||||
public void setup(test06 test) throws Exception {
|
||||
v = getVerifier(test.pk);
|
||||
}
|
||||
}
|
||||
@State(Scope.Thread)
|
||||
public static class verifier07 {
|
||||
Signature v;
|
||||
|
||||
@Setup
|
||||
public void setup(test07 test) throws Exception {
|
||||
v = getVerifier(test.pk);
|
||||
}
|
||||
}
|
||||
@State(Scope.Thread)
|
||||
public static class verifier08 {
|
||||
Signature v;
|
||||
|
||||
@Setup
|
||||
public void setup(test08 test) throws Exception {
|
||||
v = getVerifier(test.pk);
|
||||
}
|
||||
}
|
||||
@State(Scope.Thread)
|
||||
public static class verifier09 {
|
||||
Signature v;
|
||||
|
||||
@Setup
|
||||
public void setup(test09 test) throws Exception {
|
||||
v = getVerifier(test.pk);
|
||||
}
|
||||
}
|
||||
@State(Scope.Thread)
|
||||
public static class verifier10 {
|
||||
Signature v;
|
||||
|
||||
@Setup
|
||||
public void setup(test10 test) throws Exception {
|
||||
v = getVerifier(test.pk);
|
||||
}
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public void verify01(test01 test, verifier01 v) throws Exception {
|
||||
HSS.verify(v.v, test.pk, test.msg, test.sig);
|
||||
}
|
||||
@Benchmark
|
||||
public void verify02(test02 test, verifier02 v) throws Exception {
|
||||
HSS.verify(v.v, test.pk, test.msg, test.sig);
|
||||
}
|
||||
@Benchmark
|
||||
public void verify03(test03 test, verifier03 v) throws Exception {
|
||||
HSS.verify(v.v, test.pk, test.msg, test.sig);
|
||||
}
|
||||
@Benchmark
|
||||
public void verify04(test04 test, verifier04 v) throws Exception {
|
||||
HSS.verify(v.v, test.pk, test.msg, test.sig);
|
||||
}
|
||||
@Benchmark
|
||||
public void verify05(test05 test, verifier05 v) throws Exception {
|
||||
HSS.verify(v.v, test.pk, test.msg, test.sig);
|
||||
}
|
||||
@Benchmark
|
||||
public void verify06(test06 test, verifier06 v) throws Exception {
|
||||
HSS.verify(v.v, test.pk, test.msg, test.sig);
|
||||
}
|
||||
@Benchmark
|
||||
public void verify07(test07 test, verifier07 v) throws Exception {
|
||||
HSS.verify(v.v, test.pk, test.msg, test.sig);
|
||||
}
|
||||
@Benchmark
|
||||
public void verify08(test08 test, verifier08 v) throws Exception {
|
||||
HSS.verify(v.v, test.pk, test.msg, test.sig);
|
||||
}
|
||||
@Benchmark
|
||||
public void verify09(test09 test, verifier09 v) throws Exception {
|
||||
HSS.verify(v.v, test.pk, test.msg, test.sig);
|
||||
}
|
||||
@Benchmark
|
||||
public void verify10(test10 test, verifier10 v) throws Exception {
|
||||
HSS.verify(v.v, test.pk, test.msg, test.sig);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user