Skip to content

Commit 9d609da

Browse files
author
gefeili
committed
Add Snova to PQC provider
1 parent 98409a8 commit 9d609da

File tree

12 files changed

+976
-4
lines changed

12 files changed

+976
-4
lines changed

core/src/main/java/org/bouncycastle/pqc/crypto/util/PrivateKeyFactory.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@
6666
import org.bouncycastle.pqc.crypto.saber.SABERPrivateKeyParameters;
6767
import org.bouncycastle.pqc.crypto.slhdsa.SLHDSAParameters;
6868
import org.bouncycastle.pqc.crypto.slhdsa.SLHDSAPrivateKeyParameters;
69+
import org.bouncycastle.pqc.crypto.snova.SnovaParameters;
70+
import org.bouncycastle.pqc.crypto.snova.SnovaPrivateKeyParameters;
6971
import org.bouncycastle.pqc.crypto.sphincs.SPHINCSPrivateKeyParameters;
7072
import org.bouncycastle.pqc.crypto.sphincsplus.SPHINCSPlusParameters;
7173
import org.bouncycastle.pqc.crypto.sphincsplus.SPHINCSPlusPrivateKeyParameters;
@@ -487,6 +489,12 @@ else if (algOID.on(BCObjectIdentifiers.mayo))
487489
MayoParameters mayoParams = Utils.mayoParamsLookup(algOID);
488490
return new MayoPrivateKeyParameters(mayoParams, keyEnc);
489491
}
492+
else if (algOID.on(BCObjectIdentifiers.snova))
493+
{
494+
byte[] keyEnc = ASN1OctetString.getInstance(keyInfo.parsePrivateKey()).getOctets();
495+
SnovaParameters snovaParams = Utils.snovaParamsLookup(algOID);
496+
return new SnovaPrivateKeyParameters(snovaParams, keyEnc);
497+
}
490498
else
491499
{
492500
throw new RuntimeException("algorithm identifier in private key not recognised");

core/src/main/java/org/bouncycastle/pqc/crypto/util/PrivateKeyInfoFactory.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.bouncycastle.pqc.crypto.rainbow.RainbowPrivateKeyParameters;
4545
import org.bouncycastle.pqc.crypto.saber.SABERPrivateKeyParameters;
4646
import org.bouncycastle.pqc.crypto.slhdsa.SLHDSAPrivateKeyParameters;
47+
import org.bouncycastle.pqc.crypto.snova.SnovaPrivateKeyParameters;
4748
import org.bouncycastle.pqc.crypto.sphincs.SPHINCSPrivateKeyParameters;
4849
import org.bouncycastle.pqc.crypto.sphincsplus.SPHINCSPlusPrivateKeyParameters;
4950
import org.bouncycastle.pqc.crypto.xmss.BDS;
@@ -344,6 +345,13 @@ else if (privateKey instanceof MayoPrivateKeyParameters)
344345
byte[] encoding = params.getEncoded();
345346
return new PrivateKeyInfo(algorithmIdentifier, new DEROctetString(encoding), attributes);
346347
}
348+
else if (privateKey instanceof SnovaPrivateKeyParameters)
349+
{
350+
SnovaPrivateKeyParameters params = (SnovaPrivateKeyParameters)privateKey;
351+
AlgorithmIdentifier algorithmIdentifier = new AlgorithmIdentifier(Utils.snovaOidLookup(params.getParameters()));
352+
byte[] encoding = params.getEncoded();
353+
return new PrivateKeyInfo(algorithmIdentifier, new DEROctetString(encoding), attributes);
354+
}
347355
else
348356
{
349357
throw new IOException("key parameters not recognized");

core/src/main/java/org/bouncycastle/pqc/crypto/util/PublicKeyFactory.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@
6161
import org.bouncycastle.pqc.crypto.saber.SABERPublicKeyParameters;
6262
import org.bouncycastle.pqc.crypto.slhdsa.SLHDSAParameters;
6363
import org.bouncycastle.pqc.crypto.slhdsa.SLHDSAPublicKeyParameters;
64+
import org.bouncycastle.pqc.crypto.snova.SnovaParameters;
65+
import org.bouncycastle.pqc.crypto.snova.SnovaPublicKeyParameters;
6466
import org.bouncycastle.pqc.crypto.sphincs.SPHINCSPublicKeyParameters;
6567
import org.bouncycastle.pqc.crypto.sphincsplus.SPHINCSPlusParameters;
6668
import org.bouncycastle.pqc.crypto.sphincsplus.SPHINCSPlusPublicKeyParameters;
@@ -260,6 +262,51 @@ public class PublicKeyFactory
260262
converters.put(BCObjectIdentifiers.mayo2, new MayoConverter());
261263
converters.put(BCObjectIdentifiers.mayo3, new MayoConverter());
262264
converters.put(BCObjectIdentifiers.mayo5, new MayoConverter());
265+
266+
converters.put(BCObjectIdentifiers.snova_24_5_4_esk, new SnovaConverter());
267+
converters.put(BCObjectIdentifiers.snova_24_5_4_ssk, new SnovaConverter());
268+
converters.put(BCObjectIdentifiers.snova_24_5_4_shake_esk, new SnovaConverter());
269+
converters.put(BCObjectIdentifiers.snova_24_5_4_shake_ssk, new SnovaConverter());
270+
converters.put(BCObjectIdentifiers.snova_24_5_5_esk, new SnovaConverter());
271+
converters.put(BCObjectIdentifiers.snova_24_5_5_ssk, new SnovaConverter());
272+
converters.put(BCObjectIdentifiers.snova_24_5_5_shake_esk, new SnovaConverter());
273+
converters.put(BCObjectIdentifiers.snova_24_5_5_shake_ssk, new SnovaConverter());
274+
converters.put(BCObjectIdentifiers.snova_25_8_3_esk, new SnovaConverter());
275+
converters.put(BCObjectIdentifiers.snova_25_8_3_ssk, new SnovaConverter());
276+
converters.put(BCObjectIdentifiers.snova_25_8_3_shake_esk, new SnovaConverter());
277+
converters.put(BCObjectIdentifiers.snova_25_8_3_shake_ssk, new SnovaConverter());
278+
converters.put(BCObjectIdentifiers.snova_29_6_5_esk, new SnovaConverter());
279+
converters.put(BCObjectIdentifiers.snova_29_6_5_ssk, new SnovaConverter());
280+
converters.put(BCObjectIdentifiers.snova_29_6_5_shake_esk, new SnovaConverter());
281+
converters.put(BCObjectIdentifiers.snova_29_6_5_shake_ssk, new SnovaConverter());
282+
converters.put(BCObjectIdentifiers.snova_37_8_4_esk, new SnovaConverter());
283+
converters.put(BCObjectIdentifiers.snova_37_8_4_ssk, new SnovaConverter());
284+
converters.put(BCObjectIdentifiers.snova_37_8_4_shake_esk, new SnovaConverter());
285+
converters.put(BCObjectIdentifiers.snova_37_8_4_shake_ssk, new SnovaConverter());
286+
converters.put(BCObjectIdentifiers.snova_37_17_2_esk, new SnovaConverter());
287+
converters.put(BCObjectIdentifiers.snova_37_17_2_ssk, new SnovaConverter());
288+
converters.put(BCObjectIdentifiers.snova_37_17_2_shake_esk, new SnovaConverter());
289+
converters.put(BCObjectIdentifiers.snova_37_17_2_shake_ssk, new SnovaConverter());
290+
converters.put(BCObjectIdentifiers.snova_49_11_3_esk, new SnovaConverter());
291+
converters.put(BCObjectIdentifiers.snova_49_11_3_ssk, new SnovaConverter());
292+
converters.put(BCObjectIdentifiers.snova_49_11_3_shake_esk, new SnovaConverter());
293+
converters.put(BCObjectIdentifiers.snova_49_11_3_shake_ssk, new SnovaConverter());
294+
converters.put(BCObjectIdentifiers.snova_56_25_2_esk, new SnovaConverter());
295+
converters.put(BCObjectIdentifiers.snova_56_25_2_ssk, new SnovaConverter());
296+
converters.put(BCObjectIdentifiers.snova_56_25_2_shake_esk, new SnovaConverter());
297+
converters.put(BCObjectIdentifiers.snova_56_25_2_shake_ssk, new SnovaConverter());
298+
converters.put(BCObjectIdentifiers.snova_60_10_4_esk, new SnovaConverter());
299+
converters.put(BCObjectIdentifiers.snova_60_10_4_ssk, new SnovaConverter());
300+
converters.put(BCObjectIdentifiers.snova_60_10_4_shake_esk, new SnovaConverter());
301+
converters.put(BCObjectIdentifiers.snova_60_10_4_shake_ssk, new SnovaConverter());
302+
converters.put(BCObjectIdentifiers.snova_66_15_3_esk, new SnovaConverter());
303+
converters.put(BCObjectIdentifiers.snova_66_15_3_ssk, new SnovaConverter());
304+
converters.put(BCObjectIdentifiers.snova_66_15_3_shake_esk, new SnovaConverter());
305+
converters.put(BCObjectIdentifiers.snova_66_15_3_shake_ssk, new SnovaConverter());
306+
converters.put(BCObjectIdentifiers.snova_75_33_2_esk, new SnovaConverter());
307+
converters.put(BCObjectIdentifiers.snova_75_33_2_ssk, new SnovaConverter());
308+
converters.put(BCObjectIdentifiers.snova_75_33_2_shake_esk, new SnovaConverter());
309+
converters.put(BCObjectIdentifiers.snova_75_33_2_shake_ssk, new SnovaConverter());
263310
}
264311

265312
/**
@@ -868,4 +915,18 @@ AsymmetricKeyParameter getPublicKeyParameters(SubjectPublicKeyInfo keyInfo, Obje
868915
return new MayoPublicKeyParameters(mayoParams, keyEnc);
869916
}
870917
}
918+
919+
private static class SnovaConverter
920+
extends SubjectPublicKeyInfoConverter
921+
{
922+
AsymmetricKeyParameter getPublicKeyParameters(SubjectPublicKeyInfo keyInfo, Object defaultParams)
923+
throws IOException
924+
{
925+
byte[] keyEnc = ASN1OctetString.getInstance(keyInfo.parsePublicKey()).getOctets();
926+
927+
SnovaParameters snovaParams = Utils.snovaParamsLookup(keyInfo.getAlgorithm().getAlgorithm());
928+
929+
return new SnovaPublicKeyParameters(snovaParams, keyEnc);
930+
}
931+
}
871932
}

core/src/main/java/org/bouncycastle/pqc/crypto/util/SubjectPublicKeyInfoFactory.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.bouncycastle.pqc.crypto.rainbow.RainbowPublicKeyParameters;
3737
import org.bouncycastle.pqc.crypto.saber.SABERPublicKeyParameters;
3838
import org.bouncycastle.pqc.crypto.slhdsa.SLHDSAPublicKeyParameters;
39+
import org.bouncycastle.pqc.crypto.snova.SnovaPublicKeyParameters;
3940
import org.bouncycastle.pqc.crypto.sphincs.SPHINCSPublicKeyParameters;
4041
import org.bouncycastle.pqc.crypto.sphincsplus.SPHINCSPlusPublicKeyParameters;
4142
import org.bouncycastle.pqc.crypto.xmss.XMSSMTPublicKeyParameters;
@@ -310,6 +311,13 @@ else if (publicKey instanceof MayoPublicKeyParameters)
310311
AlgorithmIdentifier algorithmIdentifier = new AlgorithmIdentifier(Utils.mayoOidLookup(params.getParameters()));
311312
return new SubjectPublicKeyInfo(algorithmIdentifier, new DEROctetString(encoding));
312313
}
314+
else if (publicKey instanceof SnovaPublicKeyParameters)
315+
{
316+
SnovaPublicKeyParameters params = (SnovaPublicKeyParameters)publicKey;
317+
byte[] encoding = params.getEncoded();
318+
AlgorithmIdentifier algorithmIdentifier = new AlgorithmIdentifier(Utils.snovaOidLookup(params.getParameters()));
319+
return new SubjectPublicKeyInfo(algorithmIdentifier, new DEROctetString(encoding));
320+
}
313321
else
314322
{
315323
throw new IOException("key parameters not recognized");

core/src/main/java/org/bouncycastle/pqc/crypto/util/Utils.java

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.bouncycastle.pqc.crypto.rainbow.RainbowParameters;
3838
import org.bouncycastle.pqc.crypto.saber.SABERParameters;
3939
import org.bouncycastle.pqc.crypto.slhdsa.SLHDSAParameters;
40+
import org.bouncycastle.pqc.crypto.snova.SnovaParameters;
4041
import org.bouncycastle.pqc.crypto.sphincs.SPHINCSKeyParameters;
4142
import org.bouncycastle.pqc.crypto.sphincsplus.SPHINCSPlusParameters;
4243
import org.bouncycastle.pqc.crypto.xmss.XMSSKeyParameters;
@@ -112,6 +113,9 @@ class Utils
112113
static final Map mayoOids = new HashMap<ASN1ObjectIdentifier, MayoParameters>();
113114
static final Map mayoParams = new HashMap<MayoParameters, ASN1ObjectIdentifier>();
114115

116+
static final Map snovaOids = new HashMap<ASN1ObjectIdentifier, SnovaParameters>();
117+
static final Map snovaParams = new HashMap<SnovaParameters, ASN1ObjectIdentifier>();
118+
115119
static
116120
{
117121
categories.put(PQCObjectIdentifiers.qTESLA_p_I, Integers.valueOf(QTESLASecurityCategory.PROVABLY_SECURE_I));
@@ -490,6 +494,96 @@ class Utils
490494
mayoParams.put(BCObjectIdentifiers.mayo2, MayoParameters.mayo2);
491495
mayoParams.put(BCObjectIdentifiers.mayo3, MayoParameters.mayo3);
492496
mayoParams.put(BCObjectIdentifiers.mayo5, MayoParameters.mayo5);
497+
498+
snovaOids.put(SnovaParameters.SNOVA_24_5_4_SSK, BCObjectIdentifiers.snova_24_5_4_ssk);
499+
snovaOids.put(SnovaParameters.SNOVA_24_5_4_ESK, BCObjectIdentifiers.snova_24_5_4_esk);
500+
snovaOids.put(SnovaParameters.SNOVA_24_5_4_SHAKE_SSK, BCObjectIdentifiers.snova_24_5_4_shake_ssk);
501+
snovaOids.put(SnovaParameters.SNOVA_24_5_4_SHAKE_ESK, BCObjectIdentifiers.snova_24_5_4_shake_esk);
502+
snovaOids.put(SnovaParameters.SNOVA_24_5_5_SSK, BCObjectIdentifiers.snova_24_5_5_ssk);
503+
snovaOids.put(SnovaParameters.SNOVA_24_5_5_ESK, BCObjectIdentifiers.snova_24_5_5_esk);
504+
snovaOids.put(SnovaParameters.SNOVA_24_5_5_SHAKE_SSK, BCObjectIdentifiers.snova_24_5_5_shake_ssk);
505+
snovaOids.put(SnovaParameters.SNOVA_24_5_5_SHAKE_ESK, BCObjectIdentifiers.snova_24_5_5_shake_esk);
506+
snovaOids.put(SnovaParameters.SNOVA_25_8_3_SSK, BCObjectIdentifiers.snova_25_8_3_ssk);
507+
snovaOids.put(SnovaParameters.SNOVA_25_8_3_ESK, BCObjectIdentifiers.snova_25_8_3_esk);
508+
snovaOids.put(SnovaParameters.SNOVA_25_8_3_SHAKE_SSK, BCObjectIdentifiers.snova_25_8_3_shake_ssk);
509+
snovaOids.put(SnovaParameters.SNOVA_25_8_3_SHAKE_ESK, BCObjectIdentifiers.snova_25_8_3_shake_esk);
510+
snovaOids.put(SnovaParameters.SNOVA_29_6_5_SSK, BCObjectIdentifiers.snova_29_6_5_ssk);
511+
snovaOids.put(SnovaParameters.SNOVA_29_6_5_ESK, BCObjectIdentifiers.snova_29_6_5_esk);
512+
snovaOids.put(SnovaParameters.SNOVA_29_6_5_SHAKE_SSK, BCObjectIdentifiers.snova_29_6_5_shake_ssk);
513+
snovaOids.put(SnovaParameters.SNOVA_29_6_5_SHAKE_ESK, BCObjectIdentifiers.snova_29_6_5_shake_esk);
514+
snovaOids.put(SnovaParameters.SNOVA_37_8_4_SSK, BCObjectIdentifiers.snova_37_8_4_ssk);
515+
snovaOids.put(SnovaParameters.SNOVA_37_8_4_ESK, BCObjectIdentifiers.snova_37_8_4_esk);
516+
snovaOids.put(SnovaParameters.SNOVA_37_8_4_SHAKE_SSK, BCObjectIdentifiers.snova_37_8_4_shake_ssk);
517+
snovaOids.put(SnovaParameters.SNOVA_37_8_4_SHAKE_ESK, BCObjectIdentifiers.snova_37_8_4_shake_esk);
518+
snovaOids.put(SnovaParameters.SNOVA_37_17_2_SSK, BCObjectIdentifiers.snova_37_17_2_ssk);
519+
snovaOids.put(SnovaParameters.SNOVA_37_17_2_ESK, BCObjectIdentifiers.snova_37_17_2_esk);
520+
snovaOids.put(SnovaParameters.SNOVA_37_17_2_SHAKE_SSK, BCObjectIdentifiers.snova_37_17_2_shake_ssk);
521+
snovaOids.put(SnovaParameters.SNOVA_37_17_2_SHAKE_ESK, BCObjectIdentifiers.snova_37_17_2_shake_esk);
522+
snovaOids.put(SnovaParameters.SNOVA_49_11_3_SSK, BCObjectIdentifiers.snova_49_11_3_ssk);
523+
snovaOids.put(SnovaParameters.SNOVA_49_11_3_ESK, BCObjectIdentifiers.snova_49_11_3_esk);
524+
snovaOids.put(SnovaParameters.SNOVA_49_11_3_SHAKE_SSK, BCObjectIdentifiers.snova_49_11_3_shake_ssk);
525+
snovaOids.put(SnovaParameters.SNOVA_49_11_3_SHAKE_ESK, BCObjectIdentifiers.snova_49_11_3_shake_esk);
526+
snovaOids.put(SnovaParameters.SNOVA_56_25_2_SSK, BCObjectIdentifiers.snova_56_25_2_ssk);
527+
snovaOids.put(SnovaParameters.SNOVA_56_25_2_ESK, BCObjectIdentifiers.snova_56_25_2_esk);
528+
snovaOids.put(SnovaParameters.SNOVA_56_25_2_SHAKE_SSK, BCObjectIdentifiers.snova_56_25_2_shake_ssk);
529+
snovaOids.put(SnovaParameters.SNOVA_56_25_2_SHAKE_ESK, BCObjectIdentifiers.snova_56_25_2_shake_esk);
530+
snovaOids.put(SnovaParameters.SNOVA_60_10_4_SSK, BCObjectIdentifiers.snova_60_10_4_ssk);
531+
snovaOids.put(SnovaParameters.SNOVA_60_10_4_ESK, BCObjectIdentifiers.snova_60_10_4_esk);
532+
snovaOids.put(SnovaParameters.SNOVA_60_10_4_SHAKE_SSK, BCObjectIdentifiers.snova_60_10_4_shake_ssk);
533+
snovaOids.put(SnovaParameters.SNOVA_60_10_4_SHAKE_ESK, BCObjectIdentifiers.snova_60_10_4_shake_esk);
534+
snovaOids.put(SnovaParameters.SNOVA_66_15_3_SSK, BCObjectIdentifiers.snova_66_15_3_ssk);
535+
snovaOids.put(SnovaParameters.SNOVA_66_15_3_ESK, BCObjectIdentifiers.snova_66_15_3_esk);
536+
snovaOids.put(SnovaParameters.SNOVA_66_15_3_SHAKE_SSK, BCObjectIdentifiers.snova_66_15_3_shake_ssk);
537+
snovaOids.put(SnovaParameters.SNOVA_66_15_3_SHAKE_ESK, BCObjectIdentifiers.snova_66_15_3_shake_esk);
538+
snovaOids.put(SnovaParameters.SNOVA_75_33_2_SSK, BCObjectIdentifiers.snova_75_33_2_ssk);
539+
snovaOids.put(SnovaParameters.SNOVA_75_33_2_ESK, BCObjectIdentifiers.snova_75_33_2_esk);
540+
snovaOids.put(SnovaParameters.SNOVA_75_33_2_SHAKE_SSK, BCObjectIdentifiers.snova_75_33_2_shake_ssk);
541+
snovaOids.put(SnovaParameters.SNOVA_75_33_2_SHAKE_ESK, BCObjectIdentifiers.snova_75_33_2_shake_esk);
542+
543+
snovaParams.put(BCObjectIdentifiers.snova_24_5_4_ssk, SnovaParameters.SNOVA_24_5_4_SSK);
544+
snovaParams.put(BCObjectIdentifiers.snova_24_5_4_esk, SnovaParameters.SNOVA_24_5_4_ESK);
545+
snovaParams.put(BCObjectIdentifiers.snova_24_5_4_shake_ssk, SnovaParameters.SNOVA_24_5_4_SHAKE_SSK);
546+
snovaParams.put(BCObjectIdentifiers.snova_24_5_4_shake_esk, SnovaParameters.SNOVA_24_5_4_SHAKE_ESK);
547+
snovaParams.put(BCObjectIdentifiers.snova_24_5_5_ssk, SnovaParameters.SNOVA_24_5_5_SSK);
548+
snovaParams.put(BCObjectIdentifiers.snova_24_5_5_esk, SnovaParameters.SNOVA_24_5_5_ESK);
549+
snovaParams.put(BCObjectIdentifiers.snova_24_5_5_shake_ssk, SnovaParameters.SNOVA_24_5_5_SHAKE_SSK);
550+
snovaParams.put(BCObjectIdentifiers.snova_24_5_5_shake_esk, SnovaParameters.SNOVA_24_5_5_SHAKE_ESK);
551+
snovaParams.put(BCObjectIdentifiers.snova_25_8_3_ssk, SnovaParameters.SNOVA_25_8_3_SSK);
552+
snovaParams.put(BCObjectIdentifiers.snova_25_8_3_esk, SnovaParameters.SNOVA_25_8_3_ESK);
553+
snovaParams.put(BCObjectIdentifiers.snova_25_8_3_shake_ssk, SnovaParameters.SNOVA_25_8_3_SHAKE_SSK);
554+
snovaParams.put(BCObjectIdentifiers.snova_25_8_3_shake_esk, SnovaParameters.SNOVA_25_8_3_SHAKE_ESK);
555+
snovaParams.put(BCObjectIdentifiers.snova_29_6_5_ssk, SnovaParameters.SNOVA_29_6_5_SSK);
556+
snovaParams.put(BCObjectIdentifiers.snova_29_6_5_esk, SnovaParameters.SNOVA_29_6_5_ESK);
557+
snovaParams.put(BCObjectIdentifiers.snova_29_6_5_shake_ssk, SnovaParameters.SNOVA_29_6_5_SHAKE_SSK);
558+
snovaParams.put(BCObjectIdentifiers.snova_29_6_5_shake_esk, SnovaParameters.SNOVA_29_6_5_SHAKE_ESK);
559+
snovaParams.put(BCObjectIdentifiers.snova_37_8_4_ssk, SnovaParameters.SNOVA_37_8_4_SSK);
560+
snovaParams.put(BCObjectIdentifiers.snova_37_8_4_esk, SnovaParameters.SNOVA_37_8_4_ESK);
561+
snovaParams.put(BCObjectIdentifiers.snova_37_8_4_shake_ssk, SnovaParameters.SNOVA_37_8_4_SHAKE_SSK);
562+
snovaParams.put(BCObjectIdentifiers.snova_37_8_4_shake_esk, SnovaParameters.SNOVA_37_8_4_SHAKE_ESK);
563+
snovaParams.put(BCObjectIdentifiers.snova_37_17_2_ssk, SnovaParameters.SNOVA_37_17_2_SSK);
564+
snovaParams.put(BCObjectIdentifiers.snova_37_17_2_esk, SnovaParameters.SNOVA_37_17_2_ESK);
565+
snovaParams.put(BCObjectIdentifiers.snova_37_17_2_shake_ssk, SnovaParameters.SNOVA_37_17_2_SHAKE_SSK);
566+
snovaParams.put(BCObjectIdentifiers.snova_37_17_2_shake_esk, SnovaParameters.SNOVA_37_17_2_SHAKE_ESK);
567+
snovaParams.put(BCObjectIdentifiers.snova_49_11_3_ssk, SnovaParameters.SNOVA_49_11_3_SSK);
568+
snovaParams.put(BCObjectIdentifiers.snova_49_11_3_esk, SnovaParameters.SNOVA_49_11_3_ESK);
569+
snovaParams.put(BCObjectIdentifiers.snova_49_11_3_shake_ssk, SnovaParameters.SNOVA_49_11_3_SHAKE_SSK);
570+
snovaParams.put(BCObjectIdentifiers.snova_49_11_3_shake_esk, SnovaParameters.SNOVA_49_11_3_SHAKE_ESK);
571+
snovaParams.put(BCObjectIdentifiers.snova_56_25_2_ssk, SnovaParameters.SNOVA_56_25_2_SSK);
572+
snovaParams.put(BCObjectIdentifiers.snova_56_25_2_esk, SnovaParameters.SNOVA_56_25_2_ESK);
573+
snovaParams.put(BCObjectIdentifiers.snova_56_25_2_shake_ssk, SnovaParameters.SNOVA_56_25_2_SHAKE_SSK);
574+
snovaParams.put(BCObjectIdentifiers.snova_56_25_2_shake_esk, SnovaParameters.SNOVA_56_25_2_SHAKE_ESK);
575+
snovaParams.put(BCObjectIdentifiers.snova_60_10_4_ssk, SnovaParameters.SNOVA_60_10_4_SSK);
576+
snovaParams.put(BCObjectIdentifiers.snova_60_10_4_esk, SnovaParameters.SNOVA_60_10_4_ESK);
577+
snovaParams.put(BCObjectIdentifiers.snova_60_10_4_shake_ssk, SnovaParameters.SNOVA_60_10_4_SHAKE_SSK);
578+
snovaParams.put(BCObjectIdentifiers.snova_60_10_4_shake_esk, SnovaParameters.SNOVA_60_10_4_SHAKE_ESK);
579+
snovaParams.put(BCObjectIdentifiers.snova_66_15_3_ssk, SnovaParameters.SNOVA_66_15_3_SSK);
580+
snovaParams.put(BCObjectIdentifiers.snova_66_15_3_esk, SnovaParameters.SNOVA_66_15_3_ESK);
581+
snovaParams.put(BCObjectIdentifiers.snova_66_15_3_shake_ssk, SnovaParameters.SNOVA_66_15_3_SHAKE_SSK);
582+
snovaParams.put(BCObjectIdentifiers.snova_66_15_3_shake_esk, SnovaParameters.SNOVA_66_15_3_SHAKE_ESK);
583+
snovaParams.put(BCObjectIdentifiers.snova_75_33_2_ssk, SnovaParameters.SNOVA_75_33_2_SSK);
584+
snovaParams.put(BCObjectIdentifiers.snova_75_33_2_esk, SnovaParameters.SNOVA_75_33_2_ESK);
585+
snovaParams.put(BCObjectIdentifiers.snova_75_33_2_shake_ssk, SnovaParameters.SNOVA_75_33_2_SHAKE_SSK);
586+
snovaParams.put(BCObjectIdentifiers.snova_75_33_2_shake_esk, SnovaParameters.SNOVA_75_33_2_SHAKE_ESK);
493587
}
494588

495589
static ASN1ObjectIdentifier slhdsaOidLookup(SLHDSAParameters params)
@@ -812,6 +906,16 @@ static MayoParameters mayoParamsLookup(ASN1ObjectIdentifier oid)
812906
return (MayoParameters)mayoParams.get(oid);
813907
}
814908

909+
static ASN1ObjectIdentifier snovaOidLookup(SnovaParameters params)
910+
{
911+
return (ASN1ObjectIdentifier)snovaOids.get(params);
912+
}
913+
914+
static SnovaParameters snovaParamsLookup(ASN1ObjectIdentifier oid)
915+
{
916+
return (SnovaParameters)snovaParams.get(oid);
917+
}
918+
815919
private static boolean isRaw(byte[] data)
816920
{
817921
// check well-formed first

0 commit comments

Comments
 (0)