Skip to content

Commit a544ec1

Browse files
committed
Refactoring in provider ML-KEM code
1 parent 984f00f commit a544ec1

File tree

3 files changed

+23
-23
lines changed

3 files changed

+23
-23
lines changed

prov/src/main/jdk17/org/bouncycastle/jcajce/provider/asymmetric/mlkem/MLKEMDecapsulatorSpi.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ class MLKEMDecapsulatorSpi
3232
}
3333

3434
@Override
35-
public SecretKey engineDecapsulate(byte[] encapsulation, int from, int to, String algorithm) throws DecapsulateException
35+
public SecretKey engineDecapsulate(byte[] encapsulation, int from, int to, String algorithm)
36+
throws DecapsulateException
3637
{
3738
Objects.checkFromToIndex(from, to, engineSecretSize());
3839
Objects.requireNonNull(algorithm, "null algorithm");

prov/src/main/jdk17/org/bouncycastle/jcajce/provider/asymmetric/mlkem/MLKEMSpi.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,11 @@ public class MLKEMSpi
2727
public EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec,
2828
SecureRandom secureRandom) throws InvalidAlgorithmParameterException, InvalidKeyException
2929
{
30-
if (!(publicKey instanceof BCMLKEMPublicKey))
30+
if (!(publicKey instanceof BCMLKEMPublicKey bcPublicKey))
3131
{
3232
throw new InvalidKeyException("unsupported key type");
3333
}
3434

35-
BCMLKEMPublicKey bcPublicKey = (BCMLKEMPublicKey)publicKey;
3635
checkKeyParameters(bcPublicKey.getKeyParams());
3736

3837
if (spec == null)
@@ -42,7 +41,7 @@ public EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey, AlgorithmParam
4241
}
4342
else if (!(spec instanceof KTSParameterSpec))
4443
{
45-
throw new InvalidAlgorithmParameterException("MLKEM can only accept KTSParameterSpec");
44+
throw new InvalidAlgorithmParameterException("ML-KEM can only accept KTSParameterSpec");
4645
}
4746

4847
return new MLKEMEncapsulatorSpi(bcPublicKey, (KTSParameterSpec)spec, secureRandom);
@@ -52,12 +51,11 @@ else if (!(spec instanceof KTSParameterSpec))
5251
public DecapsulatorSpi engineNewDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec spec)
5352
throws InvalidAlgorithmParameterException, InvalidKeyException
5453
{
55-
if (!(privateKey instanceof BCMLKEMPrivateKey))
54+
if (!(privateKey instanceof BCMLKEMPrivateKey bcPrivateKey))
5655
{
57-
throw new InvalidKeyException("unsupported key");
56+
throw new InvalidKeyException("unsupported key type");
5857
}
5958

60-
BCMLKEMPrivateKey bcPrivateKey = (BCMLKEMPrivateKey)privateKey;
6159
checkKeyParameters(bcPrivateKey.getKeyParams());
6260

6361
if (spec == null)
@@ -67,7 +65,7 @@ public DecapsulatorSpi engineNewDecapsulator(PrivateKey privateKey, AlgorithmPar
6765
}
6866
else if (!(spec instanceof KTSParameterSpec))
6967
{
70-
throw new InvalidAlgorithmParameterException("MLKEM can only accept KTSParameterSpec");
68+
throw new InvalidAlgorithmParameterException("ML-KEM can only accept KTSParameterSpec");
7169
}
7270

7371
return new MLKEMDecapsulatorSpi(bcPrivateKey, (KTSParameterSpec)spec);

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

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
package org.bouncycastle.jcajce.provider.test;
22

3-
import junit.framework.TestCase;
3+
import java.security.KeyPair;
4+
import java.security.KeyPairGenerator;
5+
import java.security.PublicKey;
6+
import java.security.SecureRandom;
7+
import java.security.Security;
8+
9+
import javax.crypto.KEM;
10+
import javax.crypto.SecretKey;
11+
412
import org.bouncycastle.jcajce.spec.KEMParameterSpec;
513
import org.bouncycastle.jcajce.spec.KTSParameterSpec;
614
import org.bouncycastle.jcajce.spec.MLKEMParameterSpec;
715
import org.bouncycastle.jce.provider.BouncyCastleProvider;
816
import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider;
917
import org.bouncycastle.util.Arrays;
1018

11-
import javax.crypto.KEM;
12-
import javax.crypto.SecretKey;
13-
import java.security.KeyPair;
14-
import java.security.KeyPairGenerator;
15-
import java.security.PublicKey;
16-
import java.security.SecureRandom;
17-
import java.security.Security;
18-
19+
import junit.framework.TestCase;
1920

2021
public class MLKEMTest
2122
extends TestCase
@@ -40,7 +41,7 @@ public void testKEM()
4041
PublicKey pkR = kp.getPublic();
4142

4243
// Sender side
43-
KEM kemS = KEM.getInstance("ML-KEM");
44+
KEM kemS = KEM.getInstance("ML-KEM", "BC");
4445
KTSParameterSpec ktsSpec = null;
4546
KEM.Encapsulator e = kemS.newEncapsulator(pkR, ktsSpec, null);
4647
KEM.Encapsulated enc = e.encapsulate();
@@ -49,7 +50,7 @@ public void testKEM()
4950
byte[] params = enc.params();
5051

5152
// Receiver side
52-
KEM kemR = KEM.getInstance("ML-KEM");
53+
KEM kemR = KEM.getInstance("ML-KEM", "BC");
5354
KEM.Decapsulator d = kemR.newDecapsulator(kp.getPrivate(), ktsSpec);
5455
SecretKey secR = d.decapsulate(em);
5556

@@ -123,14 +124,14 @@ private void performKEM(KeyPair kp, int from, int to, String algorithm, KTSParam
123124
PublicKey pkR = kp.getPublic();
124125

125126
// Sender side
126-
KEM kemS = KEM.getInstance("ML-KEM");
127+
KEM kemS = KEM.getInstance("ML-KEM", "BC");
127128
KEM.Encapsulator e = kemS.newEncapsulator(pkR, ktsParameterSpec, null);
128129
KEM.Encapsulated enc = e.encapsulate(from, to, algorithm);
129130
SecretKey secS = enc.key();
130131
byte[] em = enc.encapsulation();
131132

132133
// Receiver side
133-
KEM kemR = KEM.getInstance("ML-KEM");
134+
KEM kemR = KEM.getInstance("ML-KEM", "BC");
134135
KEM.Decapsulator d = kemR.newDecapsulator(kp.getPrivate(), ktsParameterSpec);
135136
SecretKey secR = d.decapsulate(em, from, to, algorithm);
136137

@@ -145,14 +146,14 @@ private void performKEM(KeyPair kp, KTSParameterSpec ktsParameterSpec)
145146
PublicKey pkR = kp.getPublic();
146147

147148
// Sender side
148-
KEM kemS = KEM.getInstance("ML-KEM");
149+
KEM kemS = KEM.getInstance("ML-KEM", "BC");
149150
KEM.Encapsulator e = kemS.newEncapsulator(pkR, ktsParameterSpec, null);
150151
KEM.Encapsulated enc = e.encapsulate();
151152
SecretKey secS = enc.key();
152153
byte[] em = enc.encapsulation();
153154

154155
// Receiver side
155-
KEM kemR = KEM.getInstance("ML-KEM");
156+
KEM kemR = KEM.getInstance("ML-KEM", "BC");
156157
KEM.Decapsulator d = kemR.newDecapsulator(kp.getPrivate(), ktsParameterSpec);
157158
SecretKey secR = d.decapsulate(em);
158159

0 commit comments

Comments
 (0)