@@ -2,6 +2,7 @@ package slhdsa_test
2
2
3
3
import (
4
4
"crypto/rand"
5
+ "flag"
5
6
"testing"
6
7
7
8
"github.com/cloudflare/circl/internal/sha3"
@@ -32,28 +33,34 @@ var supportedPrehashIDs = [5]slhdsa.PreHashID{
32
33
slhdsa .PreHashSHAKE256 ,
33
34
}
34
35
35
- func TestSlhdsa (t * testing.T ) {
36
- for i := range supportedParameters {
37
- id := supportedParameters [i ]
36
+ // Indicates whether long tests should be run
37
+ var runLongTest = flag .Bool ("long" , false , "runs longer tests" )
38
38
39
- t .Run (id .Name (), func (t * testing.T ) {
40
- t .Run ("Keys" , func (t * testing.T ) { testKeys (t , id ) })
39
+ func TestSlhdsaLong (t * testing.T ) {
40
+ if ! * runLongTest {
41
+ t .Skip ("Skipped one long test, add -long flag to run longer tests" )
42
+ }
41
43
42
- for j := range supportedPrehashIDs {
43
- ph := supportedPrehashIDs [j ]
44
- msg := []byte ("Alice and Bob" )
45
- ctx := []byte ("this is a context string" )
46
- pub , priv , err := slhdsa .GenerateKey (rand .Reader , id )
47
- test .CheckNoErr (t , err , "keygen failed" )
44
+ for _ , paramID := range supportedParameters {
45
+ t .Run (paramID .Name (), func (t * testing.T ) {
46
+ t .Run ("Keys" , func (t * testing.T ) { testKeys (t , paramID ) })
48
47
49
- t .Run ("Sign/" + ph .String (), func (t * testing.T ) {
50
- testSign (t , & pub , & priv , msg , ctx , ph )
51
- })
48
+ for _ , ph := range supportedPrehashIDs {
49
+ t .Run (ph .String (), func (t * testing.T ) { testSign (t , paramID , ph ) })
52
50
}
53
51
})
54
52
}
55
53
}
56
54
55
+ func TestSlhdsa (t * testing.T ) {
56
+ t .Run ("Keys" , func (t * testing.T ) {
57
+ testKeys (t , slhdsa .ParamIDSHA2Fast128 )
58
+ })
59
+ t .Run ("PreHashSHA256" , func (t * testing.T ) {
60
+ testSign (t , slhdsa .ParamIDSHA2Fast128 , slhdsa .PreHashSHA256 )
61
+ })
62
+ }
63
+
57
64
func testKeys (t * testing.T , id slhdsa.ParamID ) {
58
65
reader := sha3 .NewShake128 ()
59
66
@@ -79,13 +86,13 @@ func testKeys(t *testing.T, id slhdsa.ParamID) {
79
86
test .CheckOk (pub2 .Equal (pub3 ), "public key not equal" , t )
80
87
}
81
88
82
- func testSign (
83
- t * testing. T ,
84
- pk * slhdsa. PublicKey ,
85
- sk * slhdsa. PrivateKey ,
86
- msg , ctx [] byte ,
87
- ph slhdsa. PreHashID ,
88
- ) {
89
+ func testSign (t * testing. T , id slhdsa. ParamID , ph slhdsa. PreHashID ) {
90
+ msg := [] byte ( "Alice and Bob" )
91
+ ctx := [] byte ( "this is a context string" )
92
+
93
+ pk , sk , err := slhdsa . GenerateKey ( rand . Reader , id )
94
+ test . CheckNoErr ( t , err , "keygen failed" )
95
+
89
96
m , err := slhdsa .NewMessageWithPreHash (ph )
90
97
test .CheckNoErr (t , err , "NewMessageWithPreHash failed" )
91
98
@@ -95,13 +102,13 @@ func testSign(
95
102
sig , err := sk .SignRandomized (rand .Reader , & m , ctx )
96
103
test .CheckNoErr (t , err , "SignRandomized failed" )
97
104
98
- valid := slhdsa .Verify (pk , & m , ctx , sig )
105
+ valid := slhdsa .Verify (& pk , & m , ctx , sig )
99
106
test .CheckOk (valid , "Verify failed" , t )
100
107
101
108
sig , err = sk .SignDeterministic (& m , ctx )
102
109
test .CheckNoErr (t , err , "SignDeterministic failed" )
103
110
104
- valid = slhdsa .Verify (pk , & m , ctx , sig )
111
+ valid = slhdsa .Verify (& pk , & m , ctx , sig )
105
112
test .CheckOk (valid , "Verify failed" , t )
106
113
}
107
114
0 commit comments