8318105: [jmh] the test java.security.HSS failed with 2 active threads

Reviewed-by: ascarpino
This commit is contained in:
Mark Powers 2024-02-02 16:30:46 +00:00
parent 6787c4c3dd
commit 38c01971ff

View File

@ -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);
}
}