Skip to content

Commit 200b399

Browse files
committed
Merge branch 'main' of gitlab.cryptoworkshop.com:root/bc-java
2 parents 4c6ec22 + efe1f51 commit 200b399

File tree

5 files changed

+24
-24
lines changed

5 files changed

+24
-24
lines changed

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

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,16 @@ public void init(SecureRandom random)
187187
this.random = random;
188188
}
189189

190+
public byte[][] generateKemKeyPair()
191+
{
192+
byte[] d = new byte[KyberSymBytes];
193+
byte[] z = new byte[KyberSymBytes];
194+
random.nextBytes(d);
195+
random.nextBytes(z);
196+
197+
return generateKemKeyPairInternal(d, z);
198+
}
199+
190200
//Internal functions are deterministic. No randomness is sampled inside them
191201
public byte[][] generateKemKeyPairInternal(byte[] d, byte[] z)
192202
{
@@ -202,7 +212,15 @@ public byte[][] generateKemKeyPairInternal(byte[] d, byte[] z)
202212

203213
byte[] outputPublicKey = new byte[KyberIndCpaPublicKeyBytes];
204214
System.arraycopy(indCpaKeyPair[0], 0, outputPublicKey, 0, KyberIndCpaPublicKeyBytes);
205-
return new byte[][]{ Arrays.copyOfRange(outputPublicKey, 0, outputPublicKey.length - 32), Arrays.copyOfRange(outputPublicKey, outputPublicKey.length - 32, outputPublicKey.length), s, hashedPublicKey, z, Arrays.concatenate(d, z)};
215+
return new byte[][]
216+
{
217+
Arrays.copyOfRange(outputPublicKey, 0, outputPublicKey.length - 32),
218+
Arrays.copyOfRange(outputPublicKey, outputPublicKey.length - 32, outputPublicKey.length),
219+
s,
220+
hashedPublicKey,
221+
z,
222+
Arrays.concatenate(d, z)
223+
};
206224
}
207225

208226
public byte[][] kemEncryptInternal(byte[] publicKeyInput, byte[] randBytes)
@@ -263,16 +281,6 @@ public byte[] kemDecryptInternal(byte[] secretKey, byte[] cipherText)
263281
return Arrays.copyOfRange(kr, 0, sessionKeyLength);
264282
}
265283

266-
public byte[][] generateKemKeyPair()
267-
{
268-
byte[] d = new byte[KyberSymBytes];
269-
byte[] z = new byte[KyberSymBytes];
270-
random.nextBytes(d);
271-
random.nextBytes(z);
272-
273-
return generateKemKeyPairInternal(d, z);
274-
}
275-
276284
public byte[][] kemEncrypt(byte[] publicKeyInput, byte[] randBytes)
277285
{
278286
//TODO: do input validation elsewhere?

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

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

3-
import org.bouncycastle.crypto.digests.SHAKEDigest;
43
import org.bouncycastle.util.Arrays;
54

65
class MLKEMIndCpa
76
{
87
private MLKEMEngine engine;
98
private int kyberK;
10-
private int eta1;
119
private int indCpaPublicKeyBytes;
1210
private int polyVecBytes;
1311
private int indCpaBytes;
@@ -20,7 +18,6 @@ public MLKEMIndCpa(MLKEMEngine engine)
2018
{
2119
this.engine = engine;
2220
this.kyberK = engine.getKyberK();
23-
this.eta1 = engine.getKyberEta1();
2421
this.indCpaPublicKeyBytes = engine.getKyberPublicKeyBytes();
2522
this.polyVecBytes = engine.getKyberPolyVecBytes();
2623
this.indCpaBytes = engine.getKyberIndCpaBytes();
@@ -54,9 +51,7 @@ byte[][] generateKeyPair(byte[] d)
5451
// (p, sigma) <- G(d || k)
5552

5653
byte[] buf = new byte[64];
57-
byte[] k = new byte[1];
58-
k[0] = (byte)kyberK;
59-
symmetric.hash_g(buf, Arrays.concatenate(d, k));
54+
symmetric.hash_g(buf, Arrays.append(d, (byte)kyberK));
6055

6156
byte[] publicSeed = new byte[32]; // p in docs
6257
byte[] noiseSeed = new byte[32]; // sigma in docs
@@ -320,7 +315,6 @@ public void unpackSecretKey(PolyVec secretKeyPolyVec, byte[] secretKey)
320315
public void generateMatrix(PolyVec[] aMatrix, byte[] seed, boolean transposed)
321316
{
322317
int i, j, k, ctr, off;
323-
SHAKEDigest kyberXOF;
324318
byte[] buf = new byte[KyberGenerateMatrixNBlocks * symmetric.xofBlockBytes + 2];
325319
for (i = 0; i < kyberK; i++)
326320
{
@@ -383,7 +377,6 @@ private static int rejectionSampling(Poly outputBuffer, int coeffOff, int len, b
383377

384378
public byte[] decrypt(byte[] secretKey, byte[] cipherText)
385379
{
386-
int i;
387380
byte[] outputMessage = new byte[MLKEMEngine.getKyberIndCpaMsgBytes()];
388381

389382
PolyVec bp = new PolyVec(engine), secretKeyPolyVec = new PolyVec(engine);

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,8 @@ public AsymmetricCipherKeyPair internalGenerateKeyPair(byte[] d, byte[] z)
5050
byte[][] keyPair = mlkemParams.getEngine().generateKemKeyPairInternal(d, z);
5151

5252
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]);
53+
MLKEMPrivateKeyParameters privKey = new MLKEMPrivateKeyParameters(mlkemParams, keyPair[2], keyPair[3], keyPair[4], keyPair[0], keyPair[1], keyPair[5]);
5454

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

pkix/src/test/java/org/bouncycastle/cert/cmp/test/PQCTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public void testMlKemRequestWithMlDsaCA()
160160
new CMSProcessableCMPCertificate(cert),
161161
new JceCMSContentEncryptorBuilder(CMSAlgorithm.AES128_CBC).setProvider("BC").build());
162162

163-
System.err.println(ASN1Dump.dumpAsString(encryptedCert.toASN1Structure()));
163+
// System.err.println(ASN1Dump.dumpAsString(encryptedCert.toASN1Structure()));
164164
CertificateResponseBuilder certRespBuilder = new CertificateResponseBuilder(senderReqMessage.getCertReqId(), new PKIStatusInfo(PKIStatus.granted));
165165

166166
certRespBuilder.withCertificate(encryptedCert);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void setUp()
5454
public void testParametersAndParamSpecs()
5555
throws Exception
5656
{
57-
MLKEMParameters mldsaParameters[] = new MLKEMParameters[]
57+
MLKEMParameters mlKemParameters[] = new MLKEMParameters[]
5858
{
5959
MLKEMParameters.ml_kem_512,
6060
MLKEMParameters.ml_kem_768,
@@ -63,7 +63,7 @@ public void testParametersAndParamSpecs()
6363

6464
for (int i = 0; i != names.length; i++)
6565
{
66-
assertEquals(names[i], MLKEMParameterSpec.fromName(mldsaParameters[i].getName()).getName());
66+
assertEquals(names[i], MLKEMParameterSpec.fromName(mlKemParameters[i].getName()).getName());
6767
}
6868

6969
for (int i = 0; i != names.length; i++)

0 commit comments

Comments
 (0)