Skip to content

Commit 2f9d0b7

Browse files
committed
More replacement of Kyber name with ML-KEM (sob...)
1 parent 22a9e71 commit 2f9d0b7

File tree

23 files changed

+117
-223
lines changed

23 files changed

+117
-223
lines changed

core/src/main/java/org/bouncycastle/pqc/crypto/mlkem/CBD.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
final class CBD
44
{
55

6-
public static void kyberCBD(Poly r, byte[] bytes, int eta)
6+
public static void mlkemCBD(Poly r, byte[] bytes, int eta)
77
{
88
long t, d;
99
int a, b;

core/src/main/java/org/bouncycastle/pqc/crypto/mlkem/MLKEMEngine.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.bouncycastle.pqc.crypto.mlkem;
22

3-
import org.bouncycastle.util.Arrays;
4-
53
import java.security.SecureRandom;
64

5+
import org.bouncycastle.util.Arrays;
6+
77
class MLKEMEngine
88
{
99
private SecureRandom random;
@@ -136,7 +136,7 @@ public int getKyberEta1()
136136
return KyberEta1;
137137
}
138138

139-
public MLKEMEngine(int k, boolean usingAes)
139+
public MLKEMEngine(int k)
140140
{
141141
this.KyberK = k;
142142
switch (k)

core/src/main/java/org/bouncycastle/pqc/crypto/mlkem/MLKEMKeyGenerationParameters.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ public class MLKEMKeyGenerationParameters
1111

1212
public MLKEMKeyGenerationParameters(
1313
SecureRandom random,
14-
MLKEMParameters kyberParameters)
14+
MLKEMParameters mlkemParameters)
1515
{
1616
super(random, 256);
17-
this.params = kyberParameters;
17+
this.params = mlkemParameters;
1818
}
1919

2020
public MLKEMParameters getParameters()

core/src/main/java/org/bouncycastle/pqc/crypto/mlkem/MLKEMKeyPairGenerator.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,28 @@
99
public class MLKEMKeyPairGenerator
1010
implements AsymmetricCipherKeyPairGenerator
1111
{
12-
private MLKEMParameters kyberParams;
12+
private MLKEMParameters mlkemParams;
1313

1414
private SecureRandom random;
1515

1616
private void initialize(
1717
KeyGenerationParameters param)
1818
{
19-
this.kyberParams = ((MLKEMKeyGenerationParameters)param).getParameters();
19+
this.mlkemParams = ((MLKEMKeyGenerationParameters)param).getParameters();
2020
this.random = param.getRandom();
2121

2222
}
2323

2424
private AsymmetricCipherKeyPair genKeyPair()
2525
{
26-
MLKEMEngine engine = kyberParams.getEngine();
26+
MLKEMEngine engine = mlkemParams.getEngine();
2727

2828
engine.init(random);
2929

3030
byte[][] keyPair = engine.generateKemKeyPair();
3131

32-
MLKEMPublicKeyParameters pubKey = new MLKEMPublicKeyParameters(kyberParams, keyPair[0], keyPair[1]);
33-
MLKEMPrivateKeyParameters privKey = new MLKEMPrivateKeyParameters(kyberParams, keyPair[2], keyPair[3], keyPair[4], keyPair[0], keyPair[1]);
32+
MLKEMPublicKeyParameters pubKey = new MLKEMPublicKeyParameters(mlkemParams, keyPair[0], keyPair[1]);
33+
MLKEMPrivateKeyParameters privKey = new MLKEMPrivateKeyParameters(mlkemParams, keyPair[2], keyPair[3], keyPair[4], keyPair[0], keyPair[1]);
3434

3535
return new AsymmetricCipherKeyPair(pubKey, privKey);
3636
}
@@ -47,10 +47,10 @@ public AsymmetricCipherKeyPair generateKeyPair()
4747

4848
public AsymmetricCipherKeyPair internalGenerateKeyPair(byte[] d, byte[] z)
4949
{
50-
byte[][] keyPair = kyberParams.getEngine().generateKemKeyPairInternal(d, z);
50+
byte[][] keyPair = mlkemParams.getEngine().generateKemKeyPairInternal(d, z);
5151

52-
MLKEMPublicKeyParameters pubKey = new MLKEMPublicKeyParameters(kyberParams, keyPair[0], keyPair[1]);
53-
MLKEMPrivateKeyParameters privKey = new MLKEMPrivateKeyParameters(kyberParams, keyPair[2], keyPair[3], keyPair[4], keyPair[0], keyPair[1]);
52+
MLKEMPublicKeyParameters pubKey = new MLKEMPublicKeyParameters(mlkemParams, keyPair[0], keyPair[1]);
53+
MLKEMPrivateKeyParameters privKey = new MLKEMPrivateKeyParameters(mlkemParams, keyPair[2], keyPair[3], keyPair[4], keyPair[0], keyPair[1]);
5454

5555
return new AsymmetricCipherKeyPair(pubKey, privKey);
5656
}

core/src/main/java/org/bouncycastle/pqc/crypto/mlkem/MLKEMParameters.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,19 @@
55
public class MLKEMParameters
66
implements KEMParameters
77
{
8-
public static final MLKEMParameters kyber512 = new MLKEMParameters("kyber512", 2, 256, false);
9-
public static final MLKEMParameters kyber768 = new MLKEMParameters("kyber768", 3, 256, false);
10-
public static final MLKEMParameters kyber1024 = new MLKEMParameters("kyber1024", 4, 256, false);
8+
public static final MLKEMParameters ml_kem_512 = new MLKEMParameters("ML-KEM-512", 2, 256);
9+
public static final MLKEMParameters ml_kem_768 = new MLKEMParameters("ML-KEM-768", 3, 256);
10+
public static final MLKEMParameters ml_kem_1024 = new MLKEMParameters("ML-KEM-1024", 4, 256);
1111

1212
private final String name;
1313
private final int k;
1414
private final int sessionKeySize;
1515

16-
/**
17-
* @deprecated
18-
* obsolete to be removed
19-
*/
20-
private final boolean usingAes;
21-
22-
private MLKEMParameters(String name, int k, int sessionKeySize, boolean usingAes)
16+
private MLKEMParameters(String name, int k, int sessionKeySize)
2317
{
2418
this.name = name;
2519
this.k = k;
2620
this.sessionKeySize = sessionKeySize;
27-
this.usingAes = usingAes;
2821
}
2922

3023
public String getName()
@@ -34,7 +27,7 @@ public String getName()
3427

3528
public MLKEMEngine getEngine()
3629
{
37-
return new MLKEMEngine(k, usingAes);
30+
return new MLKEMEngine(k);
3831
}
3932

4033
public int getSessionKeySize()

core/src/main/java/org/bouncycastle/pqc/crypto/mlkem/MLKEMPrivateKeyParameters.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,6 @@ public byte[] getNonce()
5050
return Arrays.clone(nonce);
5151
}
5252

53-
/** @deprecated Use {@link #getEncoded()} instead. */
54-
public byte[] getPrivateKey()
55-
{
56-
return getEncoded();
57-
}
58-
5953
public byte[] getPublicKey()
6054
{
6155
return MLKEMPublicKeyParameters.getEncoded(t, rho);

core/src/main/java/org/bouncycastle/pqc/crypto/mlkem/MLKEMPublicKeyParameters.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,6 @@ public byte[] getEncoded()
3232
return getEncoded(t, rho);
3333
}
3434

35-
/** @deprecated Use {@link #getEncoded()} instead. */
36-
public byte[] getPublicKey()
37-
{
38-
return getEncoded();
39-
}
40-
4135
public byte[] getRho()
4236
{
4337
return Arrays.clone(rho);

core/src/main/java/org/bouncycastle/pqc/crypto/mlkem/Poly.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,14 +316,14 @@ public void getEta1Noise(byte[] seed, byte nonce)
316316
{
317317
byte[] buf = new byte[MLKEMEngine.KyberN * eta1 / 4];
318318
symmetric.prf(buf, seed, nonce);
319-
CBD.kyberCBD(this, buf, eta1);
319+
CBD.mlkemCBD(this, buf, eta1);
320320
}
321321

322322
public void getEta2Noise(byte[] seed, byte nonce)
323323
{
324324
byte[] buf = new byte[MLKEMEngine.KyberN * eta2 / 4];
325325
symmetric.prf(buf, seed, nonce);
326-
CBD.kyberCBD(this, buf, eta2);
326+
CBD.mlkemCBD(this, buf, eta2);
327327
}
328328

329329
public void polySubtract(Poly b)
Lines changed: 0 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
package org.bouncycastle.pqc.crypto.mlkem;
22

3-
import org.bouncycastle.crypto.ExtendedDigest;
4-
import org.bouncycastle.crypto.StreamCipher;
5-
import org.bouncycastle.crypto.digests.SHA256Digest;
63
import org.bouncycastle.crypto.digests.SHA3Digest;
7-
import org.bouncycastle.crypto.digests.SHA512Digest;
84
import org.bouncycastle.crypto.digests.SHAKEDigest;
9-
import org.bouncycastle.crypto.engines.AESEngine;
10-
import org.bouncycastle.crypto.modes.SICBlockCipher;
11-
import org.bouncycastle.crypto.params.KeyParameter;
12-
import org.bouncycastle.crypto.params.ParametersWithIV;
135

146
abstract class Symmetric
157
{
@@ -99,85 +91,4 @@ void kdf(byte[] out, byte[] in)
9991
shakeDigest.doFinal(out, 0, out.length);
10092
}
10193
}
102-
103-
/**
104-
* @deprecated
105-
* obsolete to be removed
106-
*/
107-
@Deprecated
108-
static class AesSymmetric
109-
extends Symmetric
110-
{
111-
private final SHA256Digest sha256Digest;
112-
private final SHA512Digest sha512Digest;
113-
private final StreamCipher cipher;
114-
115-
AesSymmetric()
116-
{
117-
super(64);
118-
this.sha256Digest = new SHA256Digest();
119-
this.sha512Digest = new SHA512Digest();
120-
this.cipher = SICBlockCipher.newInstance(AESEngine.newInstance());
121-
}
122-
123-
private void doDigest(ExtendedDigest digest, byte[] out, byte[] in, int outOffset)
124-
{
125-
digest.update(in, 0, in.length);
126-
digest.doFinal(out, outOffset);
127-
}
128-
129-
private void aes128(byte[] out, int offset, int size)
130-
{
131-
byte[] buf = new byte[size]; // TODO: there might be a more efficient way of doing this...
132-
cipher.processBytes(buf, 0, size, out, offset);
133-
}
134-
135-
@Override
136-
void hash_h(byte[] out, byte[] in, int outOffset)
137-
{
138-
doDigest(sha256Digest, out, in, outOffset);
139-
}
140-
141-
@Override
142-
void hash_g(byte[] out, byte[] in)
143-
{
144-
doDigest(sha512Digest, out, in, 0);
145-
}
146-
147-
@Override
148-
void xofAbsorb(byte[] key, byte x, byte y)
149-
{
150-
byte[] expnonce = new byte[12];
151-
expnonce[0] = x;
152-
expnonce[1] = y;
153-
154-
ParametersWithIV kp = new ParametersWithIV(new KeyParameter(key, 0, 32), expnonce);
155-
cipher.init(true, kp);
156-
}
157-
158-
@Override
159-
void xofSqueezeBlocks(byte[] out, int outOffset, int outLen)
160-
{
161-
aes128(out, outOffset, outLen);
162-
}
163-
164-
@Override
165-
void prf(byte[] out, byte[] key, byte nonce)
166-
{
167-
byte[] expnonce = new byte[12];
168-
expnonce[0] = nonce;
169-
170-
ParametersWithIV kp = new ParametersWithIV(new KeyParameter(key, 0, 32), expnonce);
171-
cipher.init(true, kp);
172-
aes128(out, 0, out.length);
173-
}
174-
175-
@Override
176-
void kdf(byte[] out, byte[] in)
177-
{
178-
byte[] buf = new byte[32];
179-
doDigest(sha256Digest, buf, in, 0);
180-
System.arraycopy(buf, 0, out, 0, out.length);
181-
}
182-
}
18394
}

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
import org.bouncycastle.pqc.crypto.bike.BIKEParameters;
1919
import org.bouncycastle.pqc.crypto.cmce.CMCEParameters;
2020
import org.bouncycastle.pqc.crypto.crystals.dilithium.DilithiumParameters;
21-
import org.bouncycastle.pqc.crypto.mlkem.MLKEMParameters;
2221
import org.bouncycastle.pqc.crypto.falcon.FalconParameters;
2322
import org.bouncycastle.pqc.crypto.frodo.FrodoParameters;
2423
import org.bouncycastle.pqc.crypto.hqc.HQCParameters;
24+
import org.bouncycastle.pqc.crypto.mlkem.MLKEMParameters;
2525
import org.bouncycastle.pqc.crypto.ntru.NTRUParameters;
2626
import org.bouncycastle.pqc.crypto.ntruprime.NTRULPRimeParameters;
2727
import org.bouncycastle.pqc.crypto.ntruprime.SNTRUPrimeParameters;
@@ -220,13 +220,13 @@ class Utils
220220
falconParams.put(BCObjectIdentifiers.falcon_512, FalconParameters.falcon_512);
221221
falconParams.put(BCObjectIdentifiers.falcon_1024, FalconParameters.falcon_1024);
222222

223-
kyberOids.put(MLKEMParameters.kyber512, NISTObjectIdentifiers.id_alg_ml_kem_512);
224-
kyberOids.put(MLKEMParameters.kyber768, NISTObjectIdentifiers.id_alg_ml_kem_768);
225-
kyberOids.put(MLKEMParameters.kyber1024,NISTObjectIdentifiers.id_alg_ml_kem_1024);
223+
kyberOids.put(MLKEMParameters.ml_kem_512, NISTObjectIdentifiers.id_alg_ml_kem_512);
224+
kyberOids.put(MLKEMParameters.ml_kem_768, NISTObjectIdentifiers.id_alg_ml_kem_768);
225+
kyberOids.put(MLKEMParameters.ml_kem_1024,NISTObjectIdentifiers.id_alg_ml_kem_1024);
226226

227-
kyberParams.put(NISTObjectIdentifiers.id_alg_ml_kem_512, MLKEMParameters.kyber512);
228-
kyberParams.put(NISTObjectIdentifiers.id_alg_ml_kem_768, MLKEMParameters.kyber768);
229-
kyberParams.put(NISTObjectIdentifiers.id_alg_ml_kem_1024, MLKEMParameters.kyber1024);
227+
kyberParams.put(NISTObjectIdentifiers.id_alg_ml_kem_512, MLKEMParameters.ml_kem_512);
228+
kyberParams.put(NISTObjectIdentifiers.id_alg_ml_kem_768, MLKEMParameters.ml_kem_768);
229+
kyberParams.put(NISTObjectIdentifiers.id_alg_ml_kem_1024, MLKEMParameters.ml_kem_1024);
230230

231231
ntruprimeOids.put(NTRULPRimeParameters.ntrulpr653, BCObjectIdentifiers.ntrulpr653);
232232
ntruprimeOids.put(NTRULPRimeParameters.ntrulpr761, BCObjectIdentifiers.ntrulpr761);

0 commit comments

Comments
 (0)