Skip to content

Commit dde943c

Browse files
author
royb
committed
added key encoding/decoding JCA support for Kyber-AES
1 parent c985058 commit dde943c

File tree

6 files changed

+26
-2
lines changed

6 files changed

+26
-2
lines changed

core/src/main/java/org/bouncycastle/asn1/bc/BCObjectIdentifiers.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,10 @@ public interface BCObjectIdentifiers
341341
ASN1ObjectIdentifier kyber512 = pqc_kem_kyber.branch("1");
342342
ASN1ObjectIdentifier kyber768 = pqc_kem_kyber.branch("2");
343343
ASN1ObjectIdentifier kyber1024 = pqc_kem_kyber.branch("3");
344-
344+
ASN1ObjectIdentifier kyber512_aes = pqc_kem_kyber.branch("4");
345+
ASN1ObjectIdentifier kyber768_aes = pqc_kem_kyber.branch("5");
346+
ASN1ObjectIdentifier kyber1024_aes = pqc_kem_kyber.branch("6");
347+
345348
/**
346349
* NTRUPrime
347350
*/

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,9 @@ public class PublicKeyFactory
144144
converters.put(BCObjectIdentifiers.kyber512, new KyberConverter());
145145
converters.put(BCObjectIdentifiers.kyber768, new KyberConverter());
146146
converters.put(BCObjectIdentifiers.kyber1024, new KyberConverter());
147+
converters.put(BCObjectIdentifiers.kyber512_aes, new KyberConverter());
148+
converters.put(BCObjectIdentifiers.kyber768_aes, new KyberConverter());
149+
converters.put(BCObjectIdentifiers.kyber1024_aes, new KyberConverter());
147150
converters.put(BCObjectIdentifiers.ntrulpr653, new NTRULPrimeConverter());
148151
converters.put(BCObjectIdentifiers.ntrulpr761, new NTRULPrimeConverter());
149152
converters.put(BCObjectIdentifiers.ntrulpr857, new NTRULPrimeConverter());

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,10 +218,16 @@ class Utils
218218
kyberOids.put(KyberParameters.kyber512, BCObjectIdentifiers.kyber512);
219219
kyberOids.put(KyberParameters.kyber768, BCObjectIdentifiers.kyber768);
220220
kyberOids.put(KyberParameters.kyber1024, BCObjectIdentifiers.kyber1024);
221+
kyberOids.put(KyberParameters.kyber512_aes, BCObjectIdentifiers.kyber512_aes);
222+
kyberOids.put(KyberParameters.kyber768_aes, BCObjectIdentifiers.kyber768_aes);
223+
kyberOids.put(KyberParameters.kyber1024_aes, BCObjectIdentifiers.kyber1024_aes);
221224

222225
kyberParams.put(BCObjectIdentifiers.kyber512, KyberParameters.kyber512);
223226
kyberParams.put(BCObjectIdentifiers.kyber768, KyberParameters.kyber768);
224227
kyberParams.put(BCObjectIdentifiers.kyber1024, KyberParameters.kyber1024);
228+
kyberParams.put(BCObjectIdentifiers.kyber512_aes, KyberParameters.kyber512_aes);
229+
kyberParams.put(BCObjectIdentifiers.kyber768_aes, KyberParameters.kyber768_aes);
230+
kyberParams.put(BCObjectIdentifiers.kyber1024_aes, KyberParameters.kyber1024_aes);
225231

226232
ntruprimeOids.put(NTRULPRimeParameters.ntrulpr653, BCObjectIdentifiers.ntrulpr653);
227233
ntruprimeOids.put(NTRULPRimeParameters.ntrulpr761, BCObjectIdentifiers.ntrulpr761);

prov/src/main/java/org/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyPairGeneratorSpi.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ public class KyberKeyPairGeneratorSpi
2828
parameters.put(KyberParameterSpec.kyber512.getName(), KyberParameters.kyber512);
2929
parameters.put(KyberParameterSpec.kyber768.getName(), KyberParameters.kyber768);
3030
parameters.put(KyberParameterSpec.kyber1024.getName(), KyberParameters.kyber1024);
31+
parameters.put(KyberParameterSpec.kyber512_aes.getName(), KyberParameters.kyber512_aes);
32+
parameters.put(KyberParameterSpec.kyber768_aes.getName(), KyberParameters.kyber768_aes);
33+
parameters.put(KyberParameterSpec.kyber1024_aes.getName(), KyberParameters.kyber1024_aes);
3134
}
3235

3336
KyberKeyGenerationParameters param;

prov/src/main/java/org/bouncycastle/pqc/jcajce/spec/KyberParameterSpec.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ public class KyberParameterSpec
1313
public static final KyberParameterSpec kyber512 = new KyberParameterSpec(KyberParameters.kyber512);
1414
public static final KyberParameterSpec kyber768 = new KyberParameterSpec(KyberParameters.kyber768);
1515
public static final KyberParameterSpec kyber1024 = new KyberParameterSpec(KyberParameters.kyber1024);
16+
public static final KyberParameterSpec kyber512_aes = new KyberParameterSpec(KyberParameters.kyber512_aes);
17+
public static final KyberParameterSpec kyber768_aes = new KyberParameterSpec(KyberParameters.kyber768_aes);
18+
public static final KyberParameterSpec kyber1024_aes = new KyberParameterSpec(KyberParameters.kyber1024_aes);
1619

1720
private static Map parameters = new HashMap();
1821

@@ -21,6 +24,9 @@ public class KyberParameterSpec
2124
parameters.put("kyber512", kyber512);
2225
parameters.put("kyber768", kyber768);
2326
parameters.put("kyber1024", kyber1024);
27+
parameters.put("kyber512-aes", kyber512_aes);
28+
parameters.put("kyber768-aes", kyber768_aes);
29+
parameters.put("kyber1024-aes", kyber1024_aes);
2430
}
2531

2632
private final String name;

prov/src/test/java/org/bouncycastle/pqc/jcajce/provider/test/KyberKeyPairGeneratorTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ public void testKeyPairEncoding()
3535
{
3636
KyberParameterSpec.kyber512,
3737
KyberParameterSpec.kyber768,
38-
KyberParameterSpec.kyber1024
38+
KyberParameterSpec.kyber1024,
39+
KyberParameterSpec.kyber512_aes,
40+
KyberParameterSpec.kyber768_aes,
41+
KyberParameterSpec.kyber1024_aes
3942
};
4043
kf = KeyFactory.getInstance("Kyber", "BCPQC");
4144

0 commit comments

Comments
 (0)