Skip to content

Commit 906b6f1

Browse files
committed
SLH-DSA: Update method name to match spec
1 parent ffd0073 commit 906b6f1

File tree

11 files changed

+47
-47
lines changed

11 files changed

+47
-47
lines changed

core/src/main/java/org/bouncycastle/pqc/crypto/slhdsa/ADRS.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public int getTreeIndex()
7575
}
7676

7777
// resets part of value to zero in line with 2.7.3
78-
public void setType(int type)
78+
public void setTypeAndClear(int type)
7979
{
8080
Pack.intToBigEndian(type, value, OFFSET_TYPE);
8181

core/src/main/java/org/bouncycastle/pqc/crypto/slhdsa/Fors.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ byte[] treehash(byte[] skSeed, int s, int z, byte[] pkSeed, ADRS adrsParam)
2929

3030
for (int idx = 0; idx < (1 << z); idx++)
3131
{
32-
adrs.setType(ADRS.FORS_PRF);
32+
adrs.setTypeAndClear(ADRS.FORS_PRF);
3333
adrs.setKeyPairAddress(adrsParam.getKeyPairAddress());
3434
adrs.setTreeHeight(0);
3535
adrs.setTreeIndex(s + idx);
@@ -74,7 +74,7 @@ public SIG_FORS[] sign(byte[] md, byte[] skSeed, byte[] pkSeed, ADRS paramAdrs)
7474
// get next index
7575
int idx = idxs[i];
7676
// pick private key element
77-
adrs.setType(ADRS.FORS_PRF);
77+
adrs.setTypeAndClear(ADRS.FORS_PRF);
7878
adrs.setKeyPairAddress(paramAdrs.getKeyPairAddress());
7979
adrs.setTreeHeight(0);
8080
adrs.setTreeIndex(i * t + idx);
@@ -135,7 +135,7 @@ public byte[] pkFromSig(SIG_FORS[] sig_fors, byte[] message, byte[] pkSeed, ADRS
135135
root[i] = node[0];
136136
}
137137
ADRS forspkADRS = new ADRS(adrs); // copy address to create FTS public key address
138-
forspkADRS.setType(ADRS.FORS_PK);
138+
forspkADRS.setTypeAndClear(ADRS.FORS_PK);
139139
forspkADRS.setKeyPairAddress(adrs.getKeyPairAddress());
140140
return engine.T_l(pkSeed, forspkADRS, Arrays.concatenate(root));
141141
}

core/src/main/java/org/bouncycastle/pqc/crypto/slhdsa/HT.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ byte[] xmss_pkFromSig(int idx, SIG_XMSS sig_xmss, byte[] M, byte[] pkSeed, ADRS
8787
ADRS adrs = new ADRS(paramAdrs);
8888

8989
// compute WOTS+ pk from WOTS+ sig
90-
adrs.setType(ADRS.WOTS_HASH);
90+
adrs.setTypeAndClear(ADRS.WOTS_HASH);
9191
adrs.setKeyPairAddress(idx);
9292
byte[] sig = sig_xmss.getWOTSSig();
9393
byte[][] AUTH = sig_xmss.getXMSSAUTH();
@@ -96,7 +96,7 @@ byte[] xmss_pkFromSig(int idx, SIG_XMSS sig_xmss, byte[] M, byte[] pkSeed, ADRS
9696
byte[] node1 = null;
9797

9898
// compute root from WOTS+ pk and AUTH
99-
adrs.setType(ADRS.TREE);
99+
adrs.setTypeAndClear(ADRS.TREE);
100100
adrs.setTreeIndex(idx);
101101
for (int k = 0; k < engine.H_PRIME; k++)
102102
{
@@ -125,7 +125,7 @@ SIG_XMSS xmss_sign(byte[] M, byte[] skSeed, int idx, byte[] pkSeed, ADRS paramAd
125125

126126
ADRS adrs = new ADRS(paramAdrs);
127127

128-
adrs.setType(ADRS.TREE);
128+
adrs.setTypeAndClear(ADRS.TREE);
129129
adrs.setLayerAddress(paramAdrs.getLayerAddress());
130130
adrs.setTreeAddress(paramAdrs.getTreeAddress());
131131

@@ -136,7 +136,7 @@ SIG_XMSS xmss_sign(byte[] M, byte[] skSeed, int idx, byte[] pkSeed, ADRS paramAd
136136
AUTH[j] = treehash(skSeed, k << j, j, pkSeed, adrs);
137137
}
138138
adrs = new ADRS(paramAdrs);
139-
adrs.setType(ADRS.WOTS_HASH);
139+
adrs.setTypeAndClear(ADRS.WOTS_HASH);
140140
adrs.setKeyPairAddress(idx);
141141

142142
byte[] sig = wots.sign(M, skSeed, pkSeed, adrs);
@@ -161,11 +161,11 @@ byte[] treehash(byte[] skSeed, int s, int z, byte[] pkSeed, ADRS adrsParam)
161161

162162
for (int idx = 0; idx < (1 << z); idx++)
163163
{
164-
adrs.setType(ADRS.WOTS_HASH);
164+
adrs.setTypeAndClear(ADRS.WOTS_HASH);
165165
adrs.setKeyPairAddress(s + idx);
166166
byte[] node = wots.pkGen(skSeed, pkSeed, adrs);
167167

168-
adrs.setType(ADRS.TREE);
168+
adrs.setTypeAndClear(ADRS.TREE);
169169
adrs.setTreeHeight(1);
170170
adrs.setTreeIndex(s + idx);
171171

core/src/main/java/org/bouncycastle/pqc/crypto/slhdsa/HashSLHDSASigner.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,20 +169,20 @@ public byte[] internalGenerateSignature(byte[] message, byte[] optRand)
169169
int idx_leaf = idxDigest.idx_leaf;
170170
// FORS sign
171171
ADRS adrs = new ADRS();
172-
adrs.setType(ADRS.FORS_TREE);
172+
adrs.setTypeAndClear(ADRS.FORS_TREE);
173173
adrs.setTreeAddress(idx_tree);
174174
adrs.setKeyPairAddress(idx_leaf);
175175
SIG_FORS[] sig_fors = fors.sign(mHash, privKey.sk.seed, privKey.pk.seed, adrs);
176176
// get FORS public key - spec shows M?
177177
adrs = new ADRS();
178-
adrs.setType(ADRS.FORS_TREE);
178+
adrs.setTypeAndClear(ADRS.FORS_TREE);
179179
adrs.setTreeAddress(idx_tree);
180180
adrs.setKeyPairAddress(idx_leaf);
181181
byte[] PK_FORS = fors.pkFromSig(sig_fors, mHash, privKey.pk.seed, adrs);
182182

183183
// sign FORS public key with HT
184184
ADRS treeAdrs = new ADRS();
185-
treeAdrs.setType(ADRS.TREE);
185+
treeAdrs.setTypeAndClear(ADRS.TREE);
186186

187187
HT ht = new HT(engine, privKey.getSeed(), privKey.getPublicSeed());
188188
byte[] SIG_HT = ht.sign(PK_FORS, idx_tree, idx_leaf);
@@ -229,13 +229,13 @@ public boolean internalVerifySignature(byte[] message, byte[] signature)
229229
int idx_leaf = idxDigest.idx_leaf;
230230

231231
// compute FORS public key
232-
adrs.setType(ADRS.FORS_TREE);
232+
adrs.setTypeAndClear(ADRS.FORS_TREE);
233233
adrs.setLayerAddress(0);
234234
adrs.setTreeAddress(idx_tree);
235235
adrs.setKeyPairAddress(idx_leaf);
236236
byte[] PK_FORS = new Fors(engine).pkFromSig(sig_fors, mHash, pubKey.getSeed(), adrs);
237237
// verify HT signature
238-
adrs.setType(ADRS.TREE);
238+
adrs.setTypeAndClear(ADRS.TREE);
239239
adrs.setLayerAddress(0);
240240
adrs.setTreeAddress(idx_tree);
241241
adrs.setKeyPairAddress(idx_leaf);

core/src/main/java/org/bouncycastle/pqc/crypto/slhdsa/SLHDSASigner.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,13 @@ public boolean internalVerifySignature(byte[] message, byte[] signature)
140140
int idx_leaf = idxDigest.idx_leaf;
141141

142142
// compute FORS public key
143-
adrs.setType(ADRS.FORS_TREE);
143+
adrs.setTypeAndClear(ADRS.FORS_TREE);
144144
adrs.setLayerAddress(0);
145145
adrs.setTreeAddress(idx_tree);
146146
adrs.setKeyPairAddress(idx_leaf);
147147
byte[] PK_FORS = new Fors(engine).pkFromSig(sig_fors, mHash, pubKey.getSeed(), adrs);
148148
// verify HT signature
149-
adrs.setType(ADRS.TREE);
149+
adrs.setTypeAndClear(ADRS.TREE);
150150
adrs.setLayerAddress(0);
151151
adrs.setTreeAddress(idx_tree);
152152
adrs.setKeyPairAddress(idx_leaf);
@@ -174,20 +174,20 @@ public byte[] internalGenerateSignature(byte[] message, byte[] optRand)
174174
int idx_leaf = idxDigest.idx_leaf;
175175
// FORS sign
176176
ADRS adrs = new ADRS();
177-
adrs.setType(ADRS.FORS_TREE);
177+
adrs.setTypeAndClear(ADRS.FORS_TREE);
178178
adrs.setTreeAddress(idx_tree);
179179
adrs.setKeyPairAddress(idx_leaf);
180180
SIG_FORS[] sig_fors = fors.sign(mHash, privKey.sk.seed, privKey.pk.seed, adrs);
181181
// get FORS public key - spec shows M?
182182
adrs = new ADRS();
183-
adrs.setType(ADRS.FORS_TREE);
183+
adrs.setTypeAndClear(ADRS.FORS_TREE);
184184
adrs.setTreeAddress(idx_tree);
185185
adrs.setKeyPairAddress(idx_leaf);
186186
byte[] PK_FORS = fors.pkFromSig(sig_fors, mHash, privKey.pk.seed, adrs);
187187

188188
// sign FORS public key with HT
189189
ADRS treeAdrs = new ADRS();
190-
treeAdrs.setType(ADRS.TREE);
190+
treeAdrs.setTypeAndClear(ADRS.TREE);
191191

192192
HT ht = new HT(engine, privKey.getSeed(), privKey.getPublicSeed());
193193
byte[] SIG_HT = ht.sign(PK_FORS, idx_tree, idx_leaf);

core/src/main/java/org/bouncycastle/pqc/crypto/slhdsa/WotsPlus.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,21 @@ byte[] pkGen(byte[] skSeed, byte[] pkSeed, ADRS paramAdrs)
2222
for (int i = 0; i < engine.WOTS_LEN; i++)
2323
{
2424
ADRS adrs = new ADRS(paramAdrs);
25-
adrs.setType(ADRS.WOTS_PRF);
25+
adrs.setTypeAndClear(ADRS.WOTS_PRF);
2626
adrs.setKeyPairAddress(paramAdrs.getKeyPairAddress());
2727
adrs.setChainAddress(i);
2828
adrs.setHashAddress(0);
2929

3030
byte[] sk = engine.PRF(pkSeed, skSeed, adrs);
3131

32-
adrs.setType(ADRS.WOTS_HASH);
32+
adrs.setTypeAndClear(ADRS.WOTS_HASH);
3333
adrs.setKeyPairAddress(paramAdrs.getKeyPairAddress());
3434
adrs.setChainAddress(i);
3535
adrs.setHashAddress(0);
3636
tmp[i] = chain(sk, 0, w - 1, pkSeed, adrs);
3737
}
3838

39-
wotspkADRS.setType(ADRS.WOTS_PK);
39+
wotspkADRS.setTypeAndClear(ADRS.WOTS_PK);
4040
wotspkADRS.setKeyPairAddress(paramAdrs.getKeyPairAddress());
4141

4242
return engine.T_l(pkSeed, wotspkADRS, Arrays.concatenate(tmp));
@@ -93,12 +93,12 @@ public byte[] sign(byte[] M, byte[] skSeed, byte[] pkSeed, ADRS paramAdrs)
9393
byte[][] sig = new byte[engine.WOTS_LEN][];
9494
for (int i = 0; i < engine.WOTS_LEN; i++)
9595
{
96-
adrs.setType(ADRS.WOTS_PRF);
96+
adrs.setTypeAndClear(ADRS.WOTS_PRF);
9797
adrs.setKeyPairAddress(paramAdrs.getKeyPairAddress());
9898
adrs.setChainAddress(i);
9999
adrs.setHashAddress(0);
100100
byte[] sk = engine.PRF(pkSeed, skSeed, adrs);
101-
adrs.setType(ADRS.WOTS_HASH);
101+
adrs.setTypeAndClear(ADRS.WOTS_HASH);
102102
adrs.setKeyPairAddress(paramAdrs.getKeyPairAddress());
103103
adrs.setChainAddress(i);
104104
adrs.setHashAddress(0);
@@ -158,7 +158,7 @@ public byte[] pkFromSig(byte[] sig, byte[] M, byte[] pkSeed, ADRS adrs)
158158
tmp[i] = chain(sigI, msg[i], w - 1 - msg[i], pkSeed, adrs);
159159
}
160160

161-
wotspkADRS.setType(ADRS.WOTS_PK);
161+
wotspkADRS.setTypeAndClear(ADRS.WOTS_PK);
162162
wotspkADRS.setKeyPairAddress(adrs.getKeyPairAddress());
163163

164164
return engine.T_l(pkSeed, wotspkADRS, Arrays.concatenate(tmp));

core/src/main/java/org/bouncycastle/pqc/crypto/sphincsplus/ADRS.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public int getTreeIndex()
7575
}
7676

7777
// resets part of value to zero in line with 2.7.3
78-
public void setType(int type)
78+
public void setTypeAndClear(int type)
7979
{
8080
Pack.intToBigEndian(type, value, OFFSET_TYPE);
8181

core/src/main/java/org/bouncycastle/pqc/crypto/sphincsplus/Fors.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ byte[] treehash(byte[] skSeed, int s, int z, byte[] pkSeed, ADRS adrsParam)
2828

2929
for (int idx = 0; idx < (1 << z); idx++)
3030
{
31-
adrs.setType(ADRS.FORS_PRF);
31+
adrs.setTypeAndClear(ADRS.FORS_PRF);
3232
adrs.setKeyPairAddress(adrsParam.getKeyPairAddress());
3333
adrs.setTreeHeight(0);
3434
adrs.setTreeIndex(s + idx);
@@ -72,7 +72,7 @@ public SIG_FORS[] sign(byte[] md, byte[] skSeed, byte[] pkSeed, ADRS paramAdrs)
7272
// get next index
7373
int idx = idxs[i];
7474
// pick private key element
75-
adrs.setType(ADRS.FORS_PRF);
75+
adrs.setTypeAndClear(ADRS.FORS_PRF);
7676
adrs.setKeyPairAddress(paramAdrs.getKeyPairAddress());
7777
adrs.setTreeHeight(0);
7878
adrs.setTreeIndex(i * t + idx);
@@ -132,7 +132,7 @@ public byte[] pkFromSig(SIG_FORS[] sig_fors, byte[] message, byte[] pkSeed, ADRS
132132
root[i] = node[0];
133133
}
134134
ADRS forspkADRS = new ADRS(adrs); // copy address to create FTS public key address
135-
forspkADRS.setType(ADRS.FORS_PK);
135+
forspkADRS.setTypeAndClear(ADRS.FORS_PK);
136136
forspkADRS.setKeyPairAddress(adrs.getKeyPairAddress());
137137
return engine.T_l(pkSeed, forspkADRS, Arrays.concatenate(root));
138138
}

core/src/main/java/org/bouncycastle/pqc/crypto/sphincsplus/HT.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ byte[] xmss_pkFromSig(int idx, SIG_XMSS sig_xmss, byte[] M, byte[] pkSeed, ADRS
8787
ADRS adrs = new ADRS(paramAdrs);
8888

8989
// compute WOTS+ pk from WOTS+ sig
90-
adrs.setType(ADRS.WOTS_HASH);
90+
adrs.setTypeAndClear(ADRS.WOTS_HASH);
9191
adrs.setKeyPairAddress(idx);
9292
byte[] sig = sig_xmss.getWOTSSig();
9393
byte[][] AUTH = sig_xmss.getXMSSAUTH();
@@ -96,7 +96,7 @@ byte[] xmss_pkFromSig(int idx, SIG_XMSS sig_xmss, byte[] M, byte[] pkSeed, ADRS
9696
byte[] node1 = null;
9797

9898
// compute root from WOTS+ pk and AUTH
99-
adrs.setType(ADRS.TREE);
99+
adrs.setTypeAndClear(ADRS.TREE);
100100
adrs.setTreeIndex(idx);
101101
for (int k = 0; k < engine.H_PRIME; k++)
102102
{
@@ -125,7 +125,7 @@ SIG_XMSS xmss_sign(byte[] M, byte[] skSeed, int idx, byte[] pkSeed, ADRS paramAd
125125

126126
ADRS adrs = new ADRS(paramAdrs);
127127

128-
adrs.setType(ADRS.TREE);
128+
adrs.setTypeAndClear(ADRS.TREE);
129129
adrs.setLayerAddress(paramAdrs.getLayerAddress());
130130
adrs.setTreeAddress(paramAdrs.getTreeAddress());
131131

@@ -136,7 +136,7 @@ SIG_XMSS xmss_sign(byte[] M, byte[] skSeed, int idx, byte[] pkSeed, ADRS paramAd
136136
AUTH[j] = treehash(skSeed, k << j, j, pkSeed, adrs);
137137
}
138138
adrs = new ADRS(paramAdrs);
139-
adrs.setType(ADRS.WOTS_HASH);
139+
adrs.setTypeAndClear(ADRS.WOTS_HASH);
140140
adrs.setKeyPairAddress(idx);
141141

142142
byte[] sig = wots.sign(M, skSeed, pkSeed, adrs);
@@ -161,11 +161,11 @@ byte[] treehash(byte[] skSeed, int s, int z, byte[] pkSeed, ADRS adrsParam)
161161

162162
for (int idx = 0; idx < (1 << z); idx++)
163163
{
164-
adrs.setType(ADRS.WOTS_HASH);
164+
adrs.setTypeAndClear(ADRS.WOTS_HASH);
165165
adrs.setKeyPairAddress(s + idx);
166166
byte[] node = wots.pkGen(skSeed, pkSeed, adrs);
167167

168-
adrs.setType(ADRS.TREE);
168+
adrs.setTypeAndClear(ADRS.TREE);
169169
adrs.setTreeHeight(1);
170170
adrs.setTreeIndex(s + idx);
171171

core/src/main/java/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusSigner.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,20 +83,20 @@ public byte[] generateSignature(byte[] message)
8383
int idx_leaf = idxDigest.idx_leaf;
8484
// FORS sign
8585
ADRS adrs = new ADRS();
86-
adrs.setType(ADRS.FORS_TREE);
86+
adrs.setTypeAndClear(ADRS.FORS_TREE);
8787
adrs.setTreeAddress(idx_tree);
8888
adrs.setKeyPairAddress(idx_leaf);
8989
SIG_FORS[] sig_fors = fors.sign(mHash, privKey.sk.seed, privKey.pk.seed, adrs);
9090
// get FORS public key - spec shows M?
9191
adrs = new ADRS();
92-
adrs.setType(ADRS.FORS_TREE);
92+
adrs.setTypeAndClear(ADRS.FORS_TREE);
9393
adrs.setTreeAddress(idx_tree);
9494
adrs.setKeyPairAddress(idx_leaf);
9595
byte[] PK_FORS = fors.pkFromSig(sig_fors, mHash, privKey.pk.seed, adrs);
9696

9797
// sign FORS public key with HT
9898
ADRS treeAdrs = new ADRS();
99-
treeAdrs.setType(ADRS.TREE);
99+
treeAdrs.setTypeAndClear(ADRS.TREE);
100100

101101
HT ht = new HT(engine, privKey.getSeed(), privKey.getPublicSeed());
102102
byte[] SIG_HT = ht.sign(PK_FORS, idx_tree, idx_leaf);
@@ -137,13 +137,13 @@ public boolean verifySignature(byte[] message, byte[] signature)
137137
int idx_leaf = idxDigest.idx_leaf;
138138

139139
// compute FORS public key
140-
adrs.setType(ADRS.FORS_TREE);
140+
adrs.setTypeAndClear(ADRS.FORS_TREE);
141141
adrs.setLayerAddress(0);
142142
adrs.setTreeAddress(idx_tree);
143143
adrs.setKeyPairAddress(idx_leaf);
144144
byte[] PK_FORS = new Fors(engine).pkFromSig(sig_fors, mHash, pubKey.getSeed(), adrs);
145145
// verify HT signature
146-
adrs.setType(ADRS.TREE);
146+
adrs.setTypeAndClear(ADRS.TREE);
147147
adrs.setLayerAddress(0);
148148
adrs.setTreeAddress(idx_tree);
149149
adrs.setKeyPairAddress(idx_leaf);

0 commit comments

Comments
 (0)