Skip to content

Commit 9dda406

Browse files
author
gefeili
committed
TODO: add Snova to PQC Provider
1 parent 26ce10e commit 9dda406

File tree

8 files changed

+379
-182
lines changed

8 files changed

+379
-182
lines changed

core/src/main/java/org/bouncycastle/pqc/crypto/snova/MapGroup1.java

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public MapGroup1(SnovaParameters params)
2828
qAlpha2 = new byte[m][alpha][lsq];
2929
}
3030

31-
public void decode(byte[] input, int len)
31+
public void decode(byte[] input, int len, boolean isl4or5)
3232
{
3333
// int m = params.getM();
3434
// int v = params.getV();
@@ -37,13 +37,17 @@ public void decode(byte[] input, int len)
3737
// int lsq = params.getLsq();
3838
// if ((lsq & 1) == 0)
3939
// {
40+
4041
int inOff = decodeP(input, 0, p11, len);
4142
inOff += decodeP(input, inOff, p12, len - inOff);
4243
inOff += decodeP(input, inOff, p21, len - inOff);
43-
inOff += decodeAlpha(input, inOff, aAlpha, len - inOff);
44-
inOff += decodeAlpha(input, inOff, bAlpha, len - inOff);
45-
inOff += decodeAlpha(input, inOff, qAlpha1, len - inOff);
46-
decodeAlpha(input, inOff, qAlpha2, len - inOff);
44+
if (isl4or5)
45+
{
46+
inOff += decodeAlpha(input, inOff, aAlpha, len - inOff);
47+
inOff += decodeAlpha(input, inOff, bAlpha, len - inOff);
48+
inOff += decodeAlpha(input, inOff, qAlpha1, len - inOff);
49+
decodeAlpha(input, inOff, qAlpha2, len - inOff);
50+
}
4751
// }
4852
// else
4953
// {
@@ -91,13 +95,21 @@ private static int decodeAlpha(byte[] input, int inOff, byte[][][] alpha, int le
9195
int rlt = 0;
9296
for (int i = 0; i < alpha.length; ++i)
9397
{
94-
for (int j = 0; j < alpha[i].length; ++j)
95-
{
96-
int tmp = Math.min(alpha[i][j].length, len << 1);
97-
GF16.decode(input, inOff + rlt, alpha[i][j], 0, tmp);
98-
rlt += (tmp + 1) >> 1;
99-
len -= (tmp + 1) >> 1;
100-
}
98+
rlt += decodeArray(input, inOff + rlt, alpha[i], len - rlt);
99+
}
100+
return rlt;
101+
}
102+
103+
static int decodeArray(byte[] input, int inOff, byte[][] array, int len)
104+
{
105+
int rlt = 0;
106+
for (int j = 0; j < array.length; ++j)
107+
{
108+
int tmp = Math.min(array[j].length, len << 1);
109+
GF16.decode(input, inOff + rlt, array[j], 0, tmp);
110+
tmp = (tmp + 1) >> 1;
111+
rlt += tmp;
112+
len -= tmp;
101113
}
102114
return rlt;
103115
}
@@ -124,15 +136,18 @@ private static int decodeAlpha(byte[] input, int inOff, byte[][][] alpha, int le
124136
// return isLower;
125137
// }
126138

127-
public void fill(byte[] input)
139+
public void fill(byte[] input, boolean isl4or5)
128140
{
129141
int inOff = fillP(input, 0, p11, input.length);
130142
inOff += fillP(input, inOff, p12, input.length - inOff);
131143
inOff += fillP(input, inOff, p21, input.length - inOff);
132-
inOff += fillAlpha(input, inOff, aAlpha, input.length - inOff);
133-
inOff += fillAlpha(input, inOff, bAlpha, input.length - inOff);
134-
inOff += fillAlpha(input, inOff, qAlpha1, input.length - inOff);
135-
fillAlpha(input, inOff, qAlpha2, input.length - inOff);
144+
if (isl4or5)
145+
{
146+
inOff += fillAlpha(input, inOff, aAlpha, input.length - inOff);
147+
inOff += fillAlpha(input, inOff, bAlpha, input.length - inOff);
148+
inOff += fillAlpha(input, inOff, qAlpha1, input.length - inOff);
149+
fillAlpha(input, inOff, qAlpha2, input.length - inOff);
150+
}
136151
}
137152

138153
static int fillP(byte[] input, int inOff, byte[][][][] p, int len)

core/src/main/java/org/bouncycastle/pqc/crypto/snova/SnovaEngine.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -352,22 +352,24 @@ private static void copy4DMatrix(byte[][][][] src, byte[][][][] dest, int dim1,
352352
public void genP22(byte[] outP22, int outOff, byte[][][] T12, byte[][][][] P21, byte[][][][] F12)
353353
{
354354
// Initialize P22 with zeros
355-
byte[] P22 = new byte[m * o * o * lsq];
355+
int oxlsq = o * lsq;
356+
int oxoxlsq = oxlsq * o;
357+
byte[] P22 = new byte[m * oxoxlsq];
356358

357-
for (int i = 0; i < m; i++)
359+
for (int i = 0, ixoxolsq = 0; i < m; i++, ixoxolsq += oxoxlsq)
358360
{
359-
for (int j = 0; j < o; j++)
361+
for (int j = 0, jxoxlsq = ixoxolsq; j < o; j++, jxoxlsq += oxlsq)
360362
{
361-
for (int k = 0; k < o; k++)
363+
for (int k = 0, kxlsq = jxoxlsq; k < o; k++, kxlsq += lsq)
362364
{
365+
//int idx = ((i * o + j) * o + k) * lsq;
363366
for (int index = 0; index < v; index++)
364367
{
365-
int idx = ((i * o + j) * o + k) * lsq;
366368
// P22[i][j][k] ^= T12[index][j] * F12[i][index][k]
367-
GF16Utils.gf16mMulTo(T12[index][j], F12[i][index][k], 0, P22, idx, l);
369+
GF16Utils.gf16mMulTo(T12[index][j], F12[i][index][k], 0, P22, kxlsq, l);
368370

369371
// P22[i][j][k] ^= P21[i][j][index] * T12[index][k]
370-
GF16Utils.gf16mMulTo(P21[i][j][index], T12[index][k], 0, P22, idx, l);
372+
GF16Utils.gf16mMulTo(P21[i][j][index], T12[index][k], 0, P22, kxlsq, l);
371373
}
372374
}
373375
}
@@ -379,8 +381,8 @@ public void genP22(byte[] outP22, int outOff, byte[][][] T12, byte[][][][] P21,
379381

380382
void genSeedsAndT12(byte[][][] T12, byte[] skSeed)
381383
{
382-
int bytesPrngPrivate = (v * o * l + 1) >>> 1;
383384
int gf16sPrngPrivate = v * o * l;
385+
int bytesPrngPrivate = (gf16sPrngPrivate + 1) >>> 1;
384386
byte[] prngOutput = new byte[bytesPrngPrivate];
385387

386388
// Generate PRNG output using SHAKE-256
@@ -408,7 +410,7 @@ void genSeedsAndT12(byte[][][] T12, byte[] skSeed)
408410
void genABQP(MapGroup1 map1, byte[] pkSeed)
409411
{
410412
int gf16sPrngPublic = lsq * (2 * m * alpha + m * (n * n - m * m)) + l * 2 * m * alpha;
411-
byte[] qTemp = new byte[(m * alpha * lsq + m * alpha * lsq) / l];
413+
byte[] qTemp = new byte[(m * alpha * l) << 1];
412414
byte[] prngOutput = new byte[(gf16sPrngPublic + 1) >> 1];
413415

414416
if (params.isPkExpandShake())
@@ -468,13 +470,13 @@ void genABQP(MapGroup1 map1, byte[] pkSeed)
468470
}
469471
if ((lsq & 1) == 0)
470472
{
471-
map1.decode(prngOutput, (gf16sPrngPublic - qTemp.length) >> 1);
473+
map1.decode(prngOutput, (gf16sPrngPublic - qTemp.length) >> 1, l >= 4);
472474
}
473475
else
474476
{
475477
byte[] temp = new byte[gf16sPrngPublic - qTemp.length];
476478
GF16.decode(prngOutput, temp, temp.length);
477-
map1.fill(temp);
479+
map1.fill(temp, l >= 4);
478480
}
479481
if (l >= 4)
480482
{

core/src/main/java/org/bouncycastle/pqc/crypto/snova/SnovaParameters.java

Lines changed: 104 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -12,110 +12,110 @@ public class SnovaParameters
1212
static Map<Integer, byte[][]> sSet = new HashMap<Integer, byte[][]>(); //key is l
1313
static Map<Integer, int[][]> xSSet = new HashMap<Integer, int[][]>();
1414

15-
public static final SnovaParameters SNOVA_24_5_16_4_SSK =
16-
new SnovaParameters("SNOVA_24_5_16_4_SSK", 24, 5, 4, true, false);
17-
public static final SnovaParameters SNOVA_24_5_16_4_ESK =
18-
new SnovaParameters("SNOVA_24_5_16_4_ESK", 24, 5, 4, false, false);
19-
public static final SnovaParameters SNOVA_24_5_16_4_SHAKE_SSK =
20-
new SnovaParameters("SNOVA_24_5_16_4_SHAKE_SSK", 24, 5, 4, true, true);
21-
public static final SnovaParameters SNOVA_24_5_16_4_SHAKE_ESK =
22-
new SnovaParameters("SNOVA_24_5_16_4_SHAKE_ESK", 24, 5, 4, false, true);
23-
24-
public static final SnovaParameters SNOVA_24_5_16_5_SSK =
25-
new SnovaParameters("SNOVA_24_5_16_5_SSK", 24, 5, 5, true, false);
26-
public static final SnovaParameters SNOVA_24_5_16_5_ESK =
27-
new SnovaParameters("SNOVA_24_5_16_5_ESK", 24, 5, 5, false, false);
28-
public static final SnovaParameters SNOVA_24_5_16_5_SHAKE_SSK =
29-
new SnovaParameters("SNOVA_24_5_16_5_SHAKE_SSK", 24, 5, 5, true, true);
30-
public static final SnovaParameters SNOVA_24_5_16_5_SHAKE_ESK =
31-
new SnovaParameters("SNOVA_24_5_16_5_SHAKE_ESK", 24, 5, 5, false, true);
32-
33-
public static final SnovaParameters SNOVA_25_8_16_3_SSK =
34-
new SnovaParameters("SNOVA_25_8_16_3_SSK", 25, 8, 3, true, false);
35-
public static final SnovaParameters SNOVA_25_8_16_3_ESK =
36-
new SnovaParameters("SNOVA_25_8_16_3_ESK", 25, 8, 3, false, false);
37-
public static final SnovaParameters SNOVA_25_8_16_3_SHAKE_SSK =
38-
new SnovaParameters("SNOVA_25_8_16_3_SHAKE_SSK", 25, 8, 3, true, true);
39-
public static final SnovaParameters SNOVA_25_8_16_3_SHAKE_ESK =
40-
new SnovaParameters("SNOVA_25_8_16_3_SHAKE_ESK", 25, 8, 3, false, true);
41-
42-
public static final SnovaParameters SNOVA_29_6_16_5_SSK =
43-
new SnovaParameters("SNOVA_29_6_16_5_SSK", 29, 6, 5, true, false);
44-
public static final SnovaParameters SNOVA_29_6_16_5_ESK =
45-
new SnovaParameters("SNOVA_29_6_16_5_ESK", 29, 6, 5, false, false);
46-
public static final SnovaParameters SNOVA_29_6_16_5_SHAKE_SSK =
47-
new SnovaParameters("SNOVA_29_6_16_5_SHAKE_SSK", 29, 6, 5, true, true);
48-
public static final SnovaParameters SNOVA_29_6_16_5_SHAKE_ESK =
49-
new SnovaParameters("SNOVA_29_6_16_5_SHAKE_ESK", 29, 6, 5, false, true);
50-
51-
public static final SnovaParameters SNOVA_37_8_16_4_SSK =
52-
new SnovaParameters("SNOVA_37_8_16_4_SSK", 37, 8, 4, true, false);
53-
public static final SnovaParameters SNOVA_37_8_16_4_ESK =
54-
new SnovaParameters("SNOVA_37_8_16_4_ESK", 37, 8, 4, false, false);
55-
public static final SnovaParameters SNOVA_37_8_16_4_SHAKE_SSK =
56-
new SnovaParameters("SNOVA_37_8_16_4_SHAKE_SSK", 37, 8, 4, true, true);
57-
public static final SnovaParameters SNOVA_37_8_16_4_SHAKE_ESK =
58-
new SnovaParameters("SNOVA_37_8_16_4_SHAKE_ESK", 37, 8, 4, false, true);
59-
60-
// SNOVA_37_17_16_2 variants
61-
public static final SnovaParameters SNOVA_37_17_16_2_SSK =
62-
new SnovaParameters("SNOVA_37_17_16_2_SSK", 37, 17, 2, true, false);
63-
public static final SnovaParameters SNOVA_37_17_16_2_ESK =
64-
new SnovaParameters("SNOVA_37_17_16_2_ESK", 37, 17, 2, false, false);
65-
public static final SnovaParameters SNOVA_37_17_16_2_SHAKE_SSK =
66-
new SnovaParameters("SNOVA_37_17_16_2_SHAKE_SSK", 37, 17, 2, true, true);
67-
public static final SnovaParameters SNOVA_37_17_16_2_SHAKE_ESK =
68-
new SnovaParameters("SNOVA_37_17_16_2_SHAKE_ESK", 37, 17, 2, false, true);
69-
70-
// SNOVA_49_11_16_3 variants
71-
public static final SnovaParameters SNOVA_49_11_16_3_SSK =
72-
new SnovaParameters("SNOVA_49_11_16_3_SSK", 49, 11, 3, true, false);
73-
public static final SnovaParameters SNOVA_49_11_16_3_ESK =
74-
new SnovaParameters("SNOVA_49_11_16_3_ESK", 49, 11, 3, false, false);
75-
public static final SnovaParameters SNOVA_49_11_16_3_SHAKE_SSK =
76-
new SnovaParameters("SNOVA_49_11_16_3_SHAKE_SSK", 49, 11, 3, true, true);
77-
public static final SnovaParameters SNOVA_49_11_16_3_SHAKE_ESK =
78-
new SnovaParameters("SNOVA_49_11_16_3_SHAKE_ESK", 49, 11, 3, false, true);
79-
80-
// SNOVA_56_25_16_2 variants
81-
public static final SnovaParameters SNOVA_56_25_16_2_SSK =
82-
new SnovaParameters("SNOVA_56_25_16_2_SSK", 56, 25, 2, true, false);
83-
public static final SnovaParameters SNOVA_56_25_16_2_ESK =
84-
new SnovaParameters("SNOVA_56_25_16_2_ESK", 56, 25, 2, false, false);
85-
public static final SnovaParameters SNOVA_56_25_16_2_SHAKE_SSK =
86-
new SnovaParameters("SNOVA_56_25_16_2_SHAKE_SSK", 56, 25, 2, true, true);
87-
public static final SnovaParameters SNOVA_56_25_16_2_SHAKE_ESK =
88-
new SnovaParameters("SNOVA_56_25_16_2_SHAKE_ESK", 56, 25, 2, false, true);
89-
90-
// SNOVA_60_10_16_4 variants
91-
public static final SnovaParameters SNOVA_60_10_16_4_SSK =
92-
new SnovaParameters("SNOVA_60_10_16_4_SSK", 60, 10, 4, true, false);
93-
public static final SnovaParameters SNOVA_60_10_16_4_ESK =
94-
new SnovaParameters("SNOVA_60_10_16_4_ESK", 60, 10, 4, false, false);
95-
public static final SnovaParameters SNOVA_60_10_16_4_SHAKE_SSK =
96-
new SnovaParameters("SNOVA_60_10_16_4_SHAKE_SSK", 60, 10, 4, true, true);
97-
public static final SnovaParameters SNOVA_60_10_16_4_SHAKE_ESK =
98-
new SnovaParameters("SNOVA_60_10_16_4_SHAKE_ESK", 60, 10, 4, false, true);
99-
100-
// SNOVA_66_15_16_4 variants
101-
public static final SnovaParameters SNOVA_66_15_16_3_SSK =
102-
new SnovaParameters("SNOVA_66_15_16_3_SSK", 66, 15, 3, true, false);
103-
public static final SnovaParameters SNOVA_66_15_16_3_ESK =
104-
new SnovaParameters("SNOVA_66_15_16_3_ESK", 66, 15, 3, false, false);
105-
public static final SnovaParameters SNOVA_66_15_16_3_SHAKE_SSK =
106-
new SnovaParameters("SNOVA_66_15_16_3_SHAKE_SSK", 66, 15, 3, true, true);
107-
public static final SnovaParameters SNOVA_66_15_16_3_SHAKE_ESK =
108-
new SnovaParameters("SNOVA_66_15_16_3_SHAKE_ESK", 66, 15, 3, false, true);
109-
110-
// SNOVA_75_33_16_2 variants
111-
public static final SnovaParameters SNOVA_75_33_16_2_SSK =
112-
new SnovaParameters("SNOVA_75_33_16_2_SSK", 75, 33, 2, true, false);
113-
public static final SnovaParameters SNOVA_75_33_16_2_ESK =
114-
new SnovaParameters("SNOVA_75_33_16_2_ESK", 75, 33, 2, false, false);
115-
public static final SnovaParameters SNOVA_75_33_16_2_SHAKE_SSK =
116-
new SnovaParameters("SNOVA_75_33_16_2_SHAKE_SSK", 75, 33, 2, true, true);
117-
public static final SnovaParameters SNOVA_75_33_16_2_SHAKE_ESK =
118-
new SnovaParameters("SNOVA_75_33_16_2_SHAKE_ESK", 75, 33, 2, false, true);
15+
public static final SnovaParameters SNOVA_24_5_4_SSK =
16+
new SnovaParameters("SNOVA_24_5_4_SSK", 24, 5, 4, true, false);
17+
public static final SnovaParameters SNOVA_24_5_4_ESK =
18+
new SnovaParameters("SNOVA_24_5_4_ESK", 24, 5, 4, false, false);
19+
public static final SnovaParameters SNOVA_24_5_4_SHAKE_SSK =
20+
new SnovaParameters("SNOVA_24_5_4_SHAKE_SSK", 24, 5, 4, true, true);
21+
public static final SnovaParameters SNOVA_24_5_4_SHAKE_ESK =
22+
new SnovaParameters("SNOVA_24_5_4_SHAKE_ESK", 24, 5, 4, false, true);
23+
24+
public static final SnovaParameters SNOVA_24_5_5_SSK =
25+
new SnovaParameters("SNOVA_24_5_5_SSK", 24, 5, 5, true, false);
26+
public static final SnovaParameters SNOVA_24_5_5_ESK =
27+
new SnovaParameters("SNOVA_24_5_5_ESK", 24, 5, 5, false, false);
28+
public static final SnovaParameters SNOVA_24_5_5_SHAKE_SSK =
29+
new SnovaParameters("SNOVA_24_5_5_SHAKE_SSK", 24, 5, 5, true, true);
30+
public static final SnovaParameters SNOVA_24_5_5_SHAKE_ESK =
31+
new SnovaParameters("SNOVA_24_5_5_SHAKE_ESK", 24, 5, 5, false, true);
32+
33+
public static final SnovaParameters SNOVA_25_8_3_SSK =
34+
new SnovaParameters("SNOVA_25_8_3_SSK", 25, 8, 3, true, false);
35+
public static final SnovaParameters SNOVA_25_8_3_ESK =
36+
new SnovaParameters("SNOVA_25_8_3_ESK", 25, 8, 3, false, false);
37+
public static final SnovaParameters SNOVA_25_8_3_SHAKE_SSK =
38+
new SnovaParameters("SNOVA_25_8_3_SHAKE_SSK", 25, 8, 3, true, true);
39+
public static final SnovaParameters SNOVA_25_8_3_SHAKE_ESK =
40+
new SnovaParameters("SNOVA_25_8_3_SHAKE_ESK", 25, 8, 3, false, true);
41+
42+
public static final SnovaParameters SNOVA_29_6_5_SSK =
43+
new SnovaParameters("SNOVA_29_6_5_SSK", 29, 6, 5, true, false);
44+
public static final SnovaParameters SNOVA_29_6_5_ESK =
45+
new SnovaParameters("SNOVA_29_6_5_ESK", 29, 6, 5, false, false);
46+
public static final SnovaParameters SNOVA_29_6_5_SHAKE_SSK =
47+
new SnovaParameters("SNOVA_29_6_5_SHAKE_SSK", 29, 6, 5, true, true);
48+
public static final SnovaParameters SNOVA_29_6_5_SHAKE_ESK =
49+
new SnovaParameters("SNOVA_29_6_5_SHAKE_ESK", 29, 6, 5, false, true);
50+
51+
public static final SnovaParameters SNOVA_37_8_4_SSK =
52+
new SnovaParameters("SNOVA_37_8_4_SSK", 37, 8, 4, true, false);
53+
public static final SnovaParameters SNOVA_37_8_4_ESK =
54+
new SnovaParameters("SNOVA_37_8_4_ESK", 37, 8, 4, false, false);
55+
public static final SnovaParameters SNOVA_37_8_4_SHAKE_SSK =
56+
new SnovaParameters("SNOVA_37_8_4_SHAKE_SSK", 37, 8, 4, true, true);
57+
public static final SnovaParameters SNOVA_37_8_4_SHAKE_ESK =
58+
new SnovaParameters("SNOVA_37_8_4_SHAKE_ESK", 37, 8, 4, false, true);
59+
60+
// SNOVA_37_17_2 variants
61+
public static final SnovaParameters SNOVA_37_17_2_SSK =
62+
new SnovaParameters("SNOVA_37_17_2_SSK", 37, 17, 2, true, false);
63+
public static final SnovaParameters SNOVA_37_17_2_ESK =
64+
new SnovaParameters("SNOVA_37_17_2_ESK", 37, 17, 2, false, false);
65+
public static final SnovaParameters SNOVA_37_17_2_SHAKE_SSK =
66+
new SnovaParameters("SNOVA_37_17_2_SHAKE_SSK", 37, 17, 2, true, true);
67+
public static final SnovaParameters SNOVA_37_17_2_SHAKE_ESK =
68+
new SnovaParameters("SNOVA_37_17_2_SHAKE_ESK", 37, 17, 2, false, true);
69+
70+
// SNOVA_49_11_3 variants
71+
public static final SnovaParameters SNOVA_49_11_3_SSK =
72+
new SnovaParameters("SNOVA_49_11_3_SSK", 49, 11, 3, true, false);
73+
public static final SnovaParameters SNOVA_49_11_3_ESK =
74+
new SnovaParameters("SNOVA_49_11_3_ESK", 49, 11, 3, false, false);
75+
public static final SnovaParameters SNOVA_49_11_3_SHAKE_SSK =
76+
new SnovaParameters("SNOVA_49_11_3_SHAKE_SSK", 49, 11, 3, true, true);
77+
public static final SnovaParameters SNOVA_49_11_3_SHAKE_ESK =
78+
new SnovaParameters("SNOVA_49_11_3_SHAKE_ESK", 49, 11, 3, false, true);
79+
80+
// SNOVA_56_25_2 variants
81+
public static final SnovaParameters SNOVA_56_25_2_SSK =
82+
new SnovaParameters("SNOVA_56_25_2_SSK", 56, 25, 2, true, false);
83+
public static final SnovaParameters SNOVA_56_25_2_ESK =
84+
new SnovaParameters("SNOVA_56_25_2_ESK", 56, 25, 2, false, false);
85+
public static final SnovaParameters SNOVA_56_25_2_SHAKE_SSK =
86+
new SnovaParameters("SNOVA_56_25_2_SHAKE_SSK", 56, 25, 2, true, true);
87+
public static final SnovaParameters SNOVA_56_25_2_SHAKE_ESK =
88+
new SnovaParameters("SNOVA_56_25_2_SHAKE_ESK", 56, 25, 2, false, true);
89+
90+
// SNOVA_60_10_4 variants
91+
public static final SnovaParameters SNOVA_60_10_4_SSK =
92+
new SnovaParameters("SNOVA_60_10_4_SSK", 60, 10, 4, true, false);
93+
public static final SnovaParameters SNOVA_60_10_4_ESK =
94+
new SnovaParameters("SNOVA_60_10_4_ESK", 60, 10, 4, false, false);
95+
public static final SnovaParameters SNOVA_60_10_4_SHAKE_SSK =
96+
new SnovaParameters("SNOVA_60_10_4_SHAKE_SSK", 60, 10, 4, true, true);
97+
public static final SnovaParameters SNOVA_60_10_4_SHAKE_ESK =
98+
new SnovaParameters("SNOVA_60_10_4_SHAKE_ESK", 60, 10, 4, false, true);
99+
100+
// SNOVA_66_15_4 variants
101+
public static final SnovaParameters SNOVA_66_15_3_SSK =
102+
new SnovaParameters("SNOVA_66_15_3_SSK", 66, 15, 3, true, false);
103+
public static final SnovaParameters SNOVA_66_15_3_ESK =
104+
new SnovaParameters("SNOVA_66_15_3_ESK", 66, 15, 3, false, false);
105+
public static final SnovaParameters SNOVA_66_15_3_SHAKE_SSK =
106+
new SnovaParameters("SNOVA_66_15_3_SHAKE_SSK", 66, 15, 3, true, true);
107+
public static final SnovaParameters SNOVA_66_15_3_SHAKE_ESK =
108+
new SnovaParameters("SNOVA_66_15_3_SHAKE_ESK", 66, 15, 3, false, true);
109+
110+
// SNOVA_75_33_2 variants
111+
public static final SnovaParameters SNOVA_75_33_2_SSK =
112+
new SnovaParameters("SNOVA_75_33_2_SSK", 75, 33, 2, true, false);
113+
public static final SnovaParameters SNOVA_75_33_2_ESK =
114+
new SnovaParameters("SNOVA_75_33_2_ESK", 75, 33, 2, false, false);
115+
public static final SnovaParameters SNOVA_75_33_2_SHAKE_SSK =
116+
new SnovaParameters("SNOVA_75_33_2_SHAKE_SSK", 75, 33, 2, true, true);
117+
public static final SnovaParameters SNOVA_75_33_2_SHAKE_ESK =
118+
new SnovaParameters("SNOVA_75_33_2_SHAKE_ESK", 75, 33, 2, false, true);
119119

120120
private final String name;
121121
private final int v;

0 commit comments

Comments
 (0)