Skip to content

Commit c74a2d3

Browse files
committed
Adding OID from NIST for Pure signing schemes.
1 parent e4bfd49 commit c74a2d3

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

sign/slhdsa/params.go

+28-12
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"crypto/hmac"
66
"crypto/sha256"
77
"crypto/sha512"
8+
"encoding/asn1"
89
"encoding/binary"
910
"hash"
1011
"io"
@@ -95,6 +96,20 @@ func (id ParamID) UnmarshalBinaryPrivateKey(b []byte) (sign.PrivateKey, error) {
9596
return &k, nil
9697
}
9798

99+
func (id ParamID) Oid() asn1.ObjectIdentifier {
100+
// Source https://csrc.nist.gov/Projects/computer-security-objects-register/algorithm-registration
101+
return asn1.ObjectIdentifier{
102+
2, // joint-iso-ccitt(2)
103+
16, // country(16)
104+
840, // us(840)
105+
1, // organization(1)
106+
101, // gov(101)
107+
3, // csor(3)
108+
4, // nistAlgorithm(4)
109+
id.params().oid, // sigAlgs(oid)
110+
}
111+
}
112+
98113
// params contains all the relevant constants of a parameter set.
99114
type params struct {
100115
n uint32 // Length of WOTS+ messages.
@@ -107,22 +122,23 @@ type params struct {
107122
isSHA2 bool // True, if the hash function is SHA2, otherwise is SHAKE.
108123
name string // Name of the parameter set.
109124
id ParamID // Identifier of the parameter set.
125+
oid int // Object Identifier.
110126
}
111127

112128
// Stores all the supported (read-only) parameter sets.
113129
var supportedParams = [_MaxParams - 1]params{
114-
{id: ParamIDSHA2Small128, n: 16, h: 63, d: 7, hPrime: 9, a: 12, k: 14, m: 30, isSHA2: true, name: "SLH-DSA-SHA2-128s"},
115-
{id: ParamIDSHAKESmall128, n: 16, h: 63, d: 7, hPrime: 9, a: 12, k: 14, m: 30, isSHA2: false, name: "SLH-DSA-SHAKE-128s"},
116-
{id: ParamIDSHA2Fast128, n: 16, h: 66, d: 22, hPrime: 3, a: 6, k: 33, m: 34, isSHA2: true, name: "SLH-DSA-SHA2-128f"},
117-
{id: ParamIDSHAKEFast128, n: 16, h: 66, d: 22, hPrime: 3, a: 6, k: 33, m: 34, isSHA2: false, name: "SLH-DSA-SHAKE-128f"},
118-
{id: ParamIDSHA2Small192, n: 24, h: 63, d: 7, hPrime: 9, a: 14, k: 17, m: 39, isSHA2: true, name: "SLH-DSA-SHA2-192s"},
119-
{id: ParamIDSHAKESmall192, n: 24, h: 63, d: 7, hPrime: 9, a: 14, k: 17, m: 39, isSHA2: false, name: "SLH-DSA-SHAKE-192s"},
120-
{id: ParamIDSHA2Fast192, n: 24, h: 66, d: 22, hPrime: 3, a: 8, k: 33, m: 42, isSHA2: true, name: "SLH-DSA-SHA2-192f"},
121-
{id: ParamIDSHAKEFast192, n: 24, h: 66, d: 22, hPrime: 3, a: 8, k: 33, m: 42, isSHA2: false, name: "SLH-DSA-SHAKE-192f"},
122-
{id: ParamIDSHA2Small256, n: 32, h: 64, d: 8, hPrime: 8, a: 14, k: 22, m: 47, isSHA2: true, name: "SLH-DSA-SHA2-256s"},
123-
{id: ParamIDSHAKESmall256, n: 32, h: 64, d: 8, hPrime: 8, a: 14, k: 22, m: 47, isSHA2: false, name: "SLH-DSA-SHAKE-256s"},
124-
{id: ParamIDSHA2Fast256, n: 32, h: 68, d: 17, hPrime: 4, a: 9, k: 35, m: 49, isSHA2: true, name: "SLH-DSA-SHA2-256f"},
125-
{id: ParamIDSHAKEFast256, n: 32, h: 68, d: 17, hPrime: 4, a: 9, k: 35, m: 49, isSHA2: false, name: "SLH-DSA-SHAKE-256f"},
130+
{id: ParamIDSHA2Small128, n: 16, h: 63, d: 7, hPrime: 9, a: 12, k: 14, m: 30, isSHA2: true, oid: 20, name: "SLH-DSA-SHA2-128s"},
131+
{id: ParamIDSHAKESmall128, n: 16, h: 63, d: 7, hPrime: 9, a: 12, k: 14, m: 30, isSHA2: false, oid: 26, name: "SLH-DSA-SHAKE-128s"},
132+
{id: ParamIDSHA2Fast128, n: 16, h: 66, d: 22, hPrime: 3, a: 6, k: 33, m: 34, isSHA2: true, oid: 21, name: "SLH-DSA-SHA2-128f"},
133+
{id: ParamIDSHAKEFast128, n: 16, h: 66, d: 22, hPrime: 3, a: 6, k: 33, m: 34, isSHA2: false, oid: 27, name: "SLH-DSA-SHAKE-128f"},
134+
{id: ParamIDSHA2Small192, n: 24, h: 63, d: 7, hPrime: 9, a: 14, k: 17, m: 39, isSHA2: true, oid: 22, name: "SLH-DSA-SHA2-192s"},
135+
{id: ParamIDSHAKESmall192, n: 24, h: 63, d: 7, hPrime: 9, a: 14, k: 17, m: 39, isSHA2: false, oid: 28, name: "SLH-DSA-SHAKE-192s"},
136+
{id: ParamIDSHA2Fast192, n: 24, h: 66, d: 22, hPrime: 3, a: 8, k: 33, m: 42, isSHA2: true, oid: 23, name: "SLH-DSA-SHA2-192f"},
137+
{id: ParamIDSHAKEFast192, n: 24, h: 66, d: 22, hPrime: 3, a: 8, k: 33, m: 42, isSHA2: false, oid: 29, name: "SLH-DSA-SHAKE-192f"},
138+
{id: ParamIDSHA2Small256, n: 32, h: 64, d: 8, hPrime: 8, a: 14, k: 22, m: 47, isSHA2: true, oid: 24, name: "SLH-DSA-SHA2-256s"},
139+
{id: ParamIDSHAKESmall256, n: 32, h: 64, d: 8, hPrime: 8, a: 14, k: 22, m: 47, isSHA2: false, oid: 30, name: "SLH-DSA-SHAKE-256s"},
140+
{id: ParamIDSHA2Fast256, n: 32, h: 68, d: 17, hPrime: 4, a: 9, k: 35, m: 49, isSHA2: true, oid: 25, name: "SLH-DSA-SHA2-256f"},
141+
{id: ParamIDSHAKEFast256, n: 32, h: 68, d: 17, hPrime: 4, a: 9, k: 35, m: 49, isSHA2: false, oid: 31, name: "SLH-DSA-SHAKE-256f"},
126142
}
127143

128144
// See FIPS-205, Section 11.1 and Section 11.2.

0 commit comments

Comments
 (0)