1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.gordianknot.api.keypair;
18
19 import org.bouncycastle.asn1.ASN1ObjectIdentifier;
20 import org.bouncycastle.asn1.bc.BCObjectIdentifiers;
21 import org.bouncycastle.pqc.crypto.snova.SnovaParameters;
22 import org.bouncycastle.pqc.jcajce.spec.SnovaParameterSpec;
23
24
25
26
27 public enum GordianSnovaSpec {
28
29
30
31 SNOVA24A_SSK,
32
33
34
35
36 SNOVA24A_ESK,
37
38
39
40
41 SNOVA24A_SHAKE_SSK,
42
43
44
45
46 SNOVA24A_SHAKE_ESK,
47
48
49
50
51 SNOVA24B_SSK,
52
53
54
55
56 SNOVA24B_ESK,
57
58
59
60
61 SNOVA24B_SHAKE_SSK,
62
63
64
65
66 SNOVA24B_SHAKE_ESK,
67
68
69
70
71 SNOVA25_SSK,
72
73
74
75
76 SNOVA25_ESK,
77
78
79
80
81 SNOVA25_SHAKE_SSK,
82
83
84
85
86 SNOVA25_SHAKE_ESK,
87
88
89
90
91 SNOVA29_SSK,
92
93
94
95
96 SNOVA29_ESK,
97
98
99
100
101 SNOVA29_SHAKE_SSK,
102
103
104
105
106 SNOVA29_SHAKE_ESK,
107
108
109
110
111 SNOVA37A_SSK,
112
113
114
115
116 SNOVA37A_ESK,
117
118
119
120
121 SNOVA37A_SHAKE_SSK,
122
123
124
125
126 SNOVA37A_SHAKE_ESK,
127
128
129
130
131 SNOVA37B_SSK,
132
133
134
135
136 SNOVA37B_ESK,
137
138
139
140
141 SNOVA37B_SHAKE_SSK,
142
143
144
145
146 SNOVA37B_SHAKE_ESK,
147
148
149
150
151 SNOVA49_SSK,
152
153
154
155
156 SNOVA49_ESK,
157
158
159
160
161 SNOVA49_SHAKE_SSK,
162
163
164
165
166 SNOVA49_SHAKE_ESK,
167
168
169
170
171 SNOVA56_SSK,
172
173
174
175
176 SNOVA56_ESK,
177
178
179
180
181 SNOVA56_SHAKE_SSK,
182
183
184
185
186 SNOVA56_SHAKE_ESK,
187
188
189
190
191 SNOVA60_SSK,
192
193
194
195
196 SNOVA60_ESK,
197
198
199
200
201 SNOVA60_SHAKE_SSK,
202
203
204
205
206 SNOVA60_SHAKE_ESK,
207
208
209
210
211 SNOVA66_SSK,
212
213
214
215
216 SNOVA66_ESK,
217
218
219
220
221 SNOVA66_SHAKE_SSK,
222
223
224
225
226 SNOVA66_SHAKE_ESK,
227
228
229
230
231 SNOVA75_SSK,
232
233
234
235
236 SNOVA75_ESK,
237
238
239
240
241 SNOVA75_SHAKE_SSK,
242
243
244
245
246 SNOVA75_SHAKE_ESK;
247
248
249
250
251
252
253 public SnovaParameters getParameters() {
254 switch (this) {
255 case SNOVA24A_SSK:
256 return SnovaParameters.SNOVA_24_5_4_SSK;
257 case SNOVA24A_ESK:
258 return SnovaParameters.SNOVA_24_5_4_ESK;
259 case SNOVA24A_SHAKE_SSK:
260 return SnovaParameters.SNOVA_24_5_4_SHAKE_SSK;
261 case SNOVA24A_SHAKE_ESK:
262 return SnovaParameters.SNOVA_24_5_4_SHAKE_ESK;
263 case SNOVA24B_SSK:
264 return SnovaParameters.SNOVA_24_5_5_SSK;
265 case SNOVA24B_ESK:
266 return SnovaParameters.SNOVA_24_5_5_ESK;
267 case SNOVA24B_SHAKE_SSK:
268 return SnovaParameters.SNOVA_24_5_5_SHAKE_SSK;
269 case SNOVA24B_SHAKE_ESK:
270 return SnovaParameters.SNOVA_24_5_5_SHAKE_ESK;
271 case SNOVA25_SSK:
272 return SnovaParameters.SNOVA_25_8_3_SSK;
273 case SNOVA25_ESK:
274 return SnovaParameters.SNOVA_25_8_3_ESK;
275 case SNOVA25_SHAKE_SSK:
276 return SnovaParameters.SNOVA_25_8_3_SHAKE_SSK;
277 case SNOVA25_SHAKE_ESK:
278 return SnovaParameters.SNOVA_25_8_3_SHAKE_ESK;
279 case SNOVA29_SSK:
280 return SnovaParameters.SNOVA_29_6_5_SSK;
281 case SNOVA29_ESK:
282 return SnovaParameters.SNOVA_29_6_5_ESK;
283 case SNOVA29_SHAKE_SSK:
284 return SnovaParameters.SNOVA_29_6_5_SHAKE_SSK;
285 case SNOVA29_SHAKE_ESK:
286 return SnovaParameters.SNOVA_29_6_5_SHAKE_ESK;
287 case SNOVA37A_SSK:
288 return SnovaParameters.SNOVA_37_8_4_SSK;
289 case SNOVA37A_ESK:
290 return SnovaParameters.SNOVA_37_8_4_ESK;
291 case SNOVA37A_SHAKE_SSK:
292 return SnovaParameters.SNOVA_37_8_4_SHAKE_SSK;
293 case SNOVA37A_SHAKE_ESK:
294 return SnovaParameters.SNOVA_37_8_4_SHAKE_ESK;
295 case SNOVA37B_SSK:
296 return SnovaParameters.SNOVA_37_17_2_SSK;
297 case SNOVA37B_ESK:
298 return SnovaParameters.SNOVA_37_17_2_ESK;
299 case SNOVA37B_SHAKE_SSK:
300 return SnovaParameters.SNOVA_37_17_2_SHAKE_SSK;
301 case SNOVA37B_SHAKE_ESK:
302 return SnovaParameters.SNOVA_37_17_2_SHAKE_ESK;
303 case SNOVA49_SSK:
304 return SnovaParameters.SNOVA_49_11_3_SSK;
305 case SNOVA49_ESK:
306 return SnovaParameters.SNOVA_49_11_3_ESK;
307 case SNOVA49_SHAKE_SSK:
308 return SnovaParameters.SNOVA_49_11_3_SHAKE_SSK;
309 case SNOVA49_SHAKE_ESK:
310 return SnovaParameters.SNOVA_49_11_3_SHAKE_ESK;
311 case SNOVA56_SSK:
312 return SnovaParameters.SNOVA_56_25_2_SSK;
313 case SNOVA56_ESK:
314 return SnovaParameters.SNOVA_56_25_2_ESK;
315 case SNOVA56_SHAKE_SSK:
316 return SnovaParameters.SNOVA_56_25_2_SHAKE_SSK;
317 case SNOVA56_SHAKE_ESK:
318 return SnovaParameters.SNOVA_56_25_2_SHAKE_ESK;
319 case SNOVA60_SSK:
320 return SnovaParameters.SNOVA_60_10_4_SSK;
321 case SNOVA60_ESK:
322 return SnovaParameters.SNOVA_60_10_4_ESK;
323 case SNOVA60_SHAKE_SSK:
324 return SnovaParameters.SNOVA_60_10_4_SHAKE_SSK;
325 case SNOVA60_SHAKE_ESK:
326 return SnovaParameters.SNOVA_60_10_4_SHAKE_ESK;
327 case SNOVA66_SSK:
328 return SnovaParameters.SNOVA_66_15_3_SSK;
329 case SNOVA66_ESK:
330 return SnovaParameters.SNOVA_66_15_3_ESK;
331 case SNOVA66_SHAKE_SSK:
332 return SnovaParameters.SNOVA_66_15_3_SHAKE_SSK;
333 case SNOVA66_SHAKE_ESK:
334 return SnovaParameters.SNOVA_66_15_3_SHAKE_ESK;
335 case SNOVA75_SSK:
336 return SnovaParameters.SNOVA_75_33_2_SSK;
337 case SNOVA75_ESK:
338 return SnovaParameters.SNOVA_75_33_2_ESK;
339 case SNOVA75_SHAKE_SSK:
340 return SnovaParameters.SNOVA_75_33_2_SHAKE_SSK;
341 case SNOVA75_SHAKE_ESK:
342 return SnovaParameters.SNOVA_75_33_2_SHAKE_ESK;
343 default:
344 throw new IllegalArgumentException();
345 }
346 }
347
348
349
350
351
352
353 public SnovaParameterSpec getParameterSpec() {
354 switch (this) {
355 case SNOVA24A_SSK:
356 return SnovaParameterSpec.SNOVA_24_5_4_SSK;
357 case SNOVA24A_ESK:
358 return SnovaParameterSpec.SNOVA_24_5_4_ESK;
359 case SNOVA24A_SHAKE_SSK:
360 return SnovaParameterSpec.SNOVA_24_5_4_SHAKE_SSK;
361 case SNOVA24A_SHAKE_ESK:
362 return SnovaParameterSpec.SNOVA_24_5_4_SHAKE_ESK;
363 case SNOVA24B_SSK:
364 return SnovaParameterSpec.SNOVA_24_5_5_SSK;
365 case SNOVA24B_ESK:
366 return SnovaParameterSpec.SNOVA_24_5_5_ESK;
367 case SNOVA24B_SHAKE_SSK:
368 return SnovaParameterSpec.SNOVA_24_5_5_SHAKE_SSK;
369 case SNOVA24B_SHAKE_ESK:
370 return SnovaParameterSpec.SNOVA_24_5_5_SHAKE_ESK;
371 case SNOVA25_SSK:
372 return SnovaParameterSpec.SNOVA_25_8_3_SSK;
373 case SNOVA25_ESK:
374 return SnovaParameterSpec.SNOVA_25_8_3_ESK;
375 case SNOVA25_SHAKE_SSK:
376 return SnovaParameterSpec.SNOVA_25_8_3_SHAKE_SSK;
377 case SNOVA25_SHAKE_ESK:
378 return SnovaParameterSpec.SNOVA_25_8_3_SHAKE_ESK;
379 case SNOVA29_SSK:
380 return SnovaParameterSpec.SNOVA_29_6_5_SSK;
381 case SNOVA29_ESK:
382 return SnovaParameterSpec.SNOVA_29_6_5_ESK;
383 case SNOVA29_SHAKE_SSK:
384 return SnovaParameterSpec.SNOVA_29_6_5_SHAKE_SSK;
385 case SNOVA29_SHAKE_ESK:
386 return SnovaParameterSpec.SNOVA_29_6_5_SHAKE_ESK;
387 case SNOVA37A_SSK:
388 return SnovaParameterSpec.SNOVA_37_8_4_SSK;
389 case SNOVA37A_ESK:
390 return SnovaParameterSpec.SNOVA_37_8_4_ESK;
391 case SNOVA37A_SHAKE_SSK:
392 return SnovaParameterSpec.SNOVA_37_8_4_SHAKE_SSK;
393 case SNOVA37A_SHAKE_ESK:
394 return SnovaParameterSpec.SNOVA_37_8_4_SHAKE_ESK;
395 case SNOVA37B_SSK:
396 return SnovaParameterSpec.SNOVA_37_17_2_SSK;
397 case SNOVA37B_ESK:
398 return SnovaParameterSpec.SNOVA_37_17_2_ESK;
399 case SNOVA37B_SHAKE_SSK:
400 return SnovaParameterSpec.SNOVA_37_17_2_SHAKE_SSK;
401 case SNOVA37B_SHAKE_ESK:
402 return SnovaParameterSpec.SNOVA_37_17_2_SHAKE_ESK;
403 case SNOVA49_SSK:
404 return SnovaParameterSpec.SNOVA_49_11_3_SSK;
405 case SNOVA49_ESK:
406 return SnovaParameterSpec.SNOVA_49_11_3_ESK;
407 case SNOVA49_SHAKE_SSK:
408 return SnovaParameterSpec.SNOVA_49_11_3_SHAKE_SSK;
409 case SNOVA49_SHAKE_ESK:
410 return SnovaParameterSpec.SNOVA_49_11_3_SHAKE_ESK;
411 case SNOVA56_SSK:
412 return SnovaParameterSpec.SNOVA_56_25_2_SSK;
413 case SNOVA56_ESK:
414 return SnovaParameterSpec.SNOVA_56_25_2_ESK;
415 case SNOVA56_SHAKE_SSK:
416 return SnovaParameterSpec.SNOVA_56_25_2_SHAKE_SSK;
417 case SNOVA56_SHAKE_ESK:
418 return SnovaParameterSpec.SNOVA_56_25_2_SHAKE_ESK;
419 case SNOVA60_SSK:
420 return SnovaParameterSpec.SNOVA_60_10_4_SSK;
421 case SNOVA60_ESK:
422 return SnovaParameterSpec.SNOVA_60_10_4_ESK;
423 case SNOVA60_SHAKE_SSK:
424 return SnovaParameterSpec.SNOVA_60_10_4_SHAKE_SSK;
425 case SNOVA60_SHAKE_ESK:
426 return SnovaParameterSpec.SNOVA_60_10_4_SHAKE_ESK;
427 case SNOVA66_SSK:
428 return SnovaParameterSpec.SNOVA_66_15_3_SSK;
429 case SNOVA66_ESK:
430 return SnovaParameterSpec.SNOVA_66_15_3_ESK;
431 case SNOVA66_SHAKE_SSK:
432 return SnovaParameterSpec.SNOVA_66_15_3_SHAKE_SSK;
433 case SNOVA66_SHAKE_ESK:
434 return SnovaParameterSpec.SNOVA_66_15_3_SHAKE_ESK;
435 case SNOVA75_SSK:
436 return SnovaParameterSpec.SNOVA_75_33_2_SSK;
437 case SNOVA75_ESK:
438 return SnovaParameterSpec.SNOVA_75_33_2_ESK;
439 case SNOVA75_SHAKE_SSK:
440 return SnovaParameterSpec.SNOVA_75_33_2_SHAKE_SSK;
441 case SNOVA75_SHAKE_ESK:
442 return SnovaParameterSpec.SNOVA_75_33_2_SHAKE_ESK;
443 default:
444 throw new IllegalArgumentException();
445 }
446 }
447
448
449
450
451
452
453 public ASN1ObjectIdentifier getIdentifier() {
454 switch (this) {
455 case SNOVA24A_SSK:
456 return BCObjectIdentifiers.snova_24_5_4_ssk;
457 case SNOVA24A_ESK:
458 return BCObjectIdentifiers.snova_24_5_4_esk;
459 case SNOVA24A_SHAKE_SSK:
460 return BCObjectIdentifiers.snova_24_5_4_shake_ssk;
461 case SNOVA24A_SHAKE_ESK:
462 return BCObjectIdentifiers.snova_24_5_4_shake_esk;
463 case SNOVA24B_SSK:
464 return BCObjectIdentifiers.snova_24_5_5_ssk;
465 case SNOVA24B_ESK:
466 return BCObjectIdentifiers.snova_24_5_5_esk;
467 case SNOVA24B_SHAKE_SSK:
468 return BCObjectIdentifiers.snova_24_5_5_shake_ssk;
469 case SNOVA24B_SHAKE_ESK:
470 return BCObjectIdentifiers.snova_24_5_5_shake_esk;
471 case SNOVA25_SSK:
472 return BCObjectIdentifiers.snova_25_8_3_ssk;
473 case SNOVA25_ESK:
474 return BCObjectIdentifiers.snova_25_8_3_esk;
475 case SNOVA25_SHAKE_SSK:
476 return BCObjectIdentifiers.snova_25_8_3_shake_ssk;
477 case SNOVA25_SHAKE_ESK:
478 return BCObjectIdentifiers.snova_25_8_3_shake_esk;
479 case SNOVA29_SSK:
480 return BCObjectIdentifiers.snova_29_6_5_ssk;
481 case SNOVA29_ESK:
482 return BCObjectIdentifiers.snova_29_6_5_esk;
483 case SNOVA29_SHAKE_SSK:
484 return BCObjectIdentifiers.snova_29_6_5_shake_ssk;
485 case SNOVA29_SHAKE_ESK:
486 return BCObjectIdentifiers.snova_29_6_5_shake_esk;
487 case SNOVA37A_SSK:
488 return BCObjectIdentifiers.snova_37_8_4_ssk;
489 case SNOVA37A_ESK:
490 return BCObjectIdentifiers.snova_37_8_4_esk;
491 case SNOVA37A_SHAKE_SSK:
492 return BCObjectIdentifiers.snova_37_8_4_shake_ssk;
493 case SNOVA37A_SHAKE_ESK:
494 return BCObjectIdentifiers.snova_37_8_4_shake_esk;
495 case SNOVA37B_SSK:
496 return BCObjectIdentifiers.snova_37_17_2_ssk;
497 case SNOVA37B_ESK:
498 return BCObjectIdentifiers.snova_37_17_2_esk;
499 case SNOVA37B_SHAKE_SSK:
500 return BCObjectIdentifiers.snova_37_17_2_shake_ssk;
501 case SNOVA37B_SHAKE_ESK:
502 return BCObjectIdentifiers.snova_37_17_2_shake_esk;
503 case SNOVA49_SSK:
504 return BCObjectIdentifiers.snova_49_11_3_ssk;
505 case SNOVA49_ESK:
506 return BCObjectIdentifiers.snova_49_11_3_esk;
507 case SNOVA49_SHAKE_SSK:
508 return BCObjectIdentifiers.snova_49_11_3_shake_ssk;
509 case SNOVA49_SHAKE_ESK:
510 return BCObjectIdentifiers.snova_49_11_3_shake_esk;
511 case SNOVA56_SSK:
512 return BCObjectIdentifiers.snova_56_25_2_ssk;
513 case SNOVA56_ESK:
514 return BCObjectIdentifiers.snova_56_25_2_esk;
515 case SNOVA56_SHAKE_SSK:
516 return BCObjectIdentifiers.snova_56_25_2_shake_ssk;
517 case SNOVA56_SHAKE_ESK:
518 return BCObjectIdentifiers.snova_56_25_2_shake_esk;
519 case SNOVA60_SSK:
520 return BCObjectIdentifiers.snova_60_10_4_ssk;
521 case SNOVA60_ESK:
522 return BCObjectIdentifiers.snova_60_10_4_esk;
523 case SNOVA60_SHAKE_SSK:
524 return BCObjectIdentifiers.snova_60_10_4_shake_ssk;
525 case SNOVA60_SHAKE_ESK:
526 return BCObjectIdentifiers.snova_60_10_4_shake_esk;
527 case SNOVA66_SSK:
528 return BCObjectIdentifiers.snova_66_15_3_ssk;
529 case SNOVA66_ESK:
530 return BCObjectIdentifiers.snova_66_15_3_esk;
531 case SNOVA66_SHAKE_SSK:
532 return BCObjectIdentifiers.snova_66_15_3_shake_ssk;
533 case SNOVA66_SHAKE_ESK:
534 return BCObjectIdentifiers.snova_66_15_3_shake_esk;
535 case SNOVA75_SSK:
536 return BCObjectIdentifiers.snova_75_33_2_ssk;
537 case SNOVA75_ESK:
538 return BCObjectIdentifiers.snova_75_33_2_esk;
539 case SNOVA75_SHAKE_SSK:
540 return BCObjectIdentifiers.snova_75_33_2_shake_ssk;
541 case SNOVA75_SHAKE_ESK:
542 return BCObjectIdentifiers.snova_75_33_2_shake_esk;
543 default:
544 throw new IllegalArgumentException();
545 }
546 }
547 }