Skip to content

Commit eb7d917

Browse files
committed
Provide fallback SecureRandom in low-level KEM generators
1 parent 762db64 commit eb7d917

File tree

9 files changed

+11
-33
lines changed

9 files changed

+11
-33
lines changed

core/src/main/java/org/bouncycastle/pqc/crypto/hqc/HQCKEMGenerator.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.security.SecureRandom;
44

5+
import org.bouncycastle.crypto.CryptoServicesRegistrar;
56
import org.bouncycastle.crypto.EncapsulatedSecretGenerator;
67
import org.bouncycastle.crypto.SecretWithEncapsulation;
78
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
@@ -11,11 +12,11 @@
1112
public class HQCKEMGenerator
1213
implements EncapsulatedSecretGenerator
1314
{
14-
private final SecureRandom sr;
15+
private final SecureRandom random;
1516

1617
public HQCKEMGenerator(SecureRandom random)
1718
{
18-
this.sr = random;
19+
this.random = CryptoServicesRegistrar.getSecureRandom(random);
1920
}
2021

2122
public SecretWithEncapsulation generateEncapsulated(AsymmetricKeyParameter recipientKey)
@@ -29,7 +30,7 @@ public SecretWithEncapsulation generateEncapsulated(AsymmetricKeyParameter recip
2930
byte[] salt = new byte[key.getParameters().getSALT_SIZE_BYTES()];
3031
byte[] pk = key.getPublicKey();
3132

32-
engine.encaps(u, v, K, pk, salt, sr);
33+
engine.encaps(u, v, K, pk, salt, random);
3334

3435
byte[] cipherText = Arrays.concatenate(u, v, salt);
3536

core/src/main/java/org/bouncycastle/pqc/crypto/ntru/NTRUKEMGenerator.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.security.SecureRandom;
44

5+
import org.bouncycastle.crypto.CryptoServicesRegistrar;
56
import org.bouncycastle.crypto.EncapsulatedSecretGenerator;
67
import org.bouncycastle.crypto.SecretWithEncapsulation;
78
import org.bouncycastle.crypto.digests.SHA3Digest;
@@ -22,19 +23,9 @@ public class NTRUKEMGenerator
2223
{
2324
private final SecureRandom random;
2425

25-
/**
26-
* Constructor
27-
*
28-
* @param random a secure random number generator
29-
*/
3026
public NTRUKEMGenerator(SecureRandom random)
3127
{
32-
if (random == null)
33-
{
34-
throw new NullPointerException("'random' cannot be null");
35-
}
36-
37-
this.random = random;
28+
this.random = CryptoServicesRegistrar.getSecureRandom(random);
3829
}
3930

4031
public SecretWithEncapsulation generateEncapsulated(AsymmetricKeyParameter recipientKey)

core/src/main/java/org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKEMGenerator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.security.SecureRandom;
44

5+
import org.bouncycastle.crypto.CryptoServicesRegistrar;
56
import org.bouncycastle.crypto.EncapsulatedSecretGenerator;
67
import org.bouncycastle.crypto.SecretWithEncapsulation;
78
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
@@ -15,7 +16,7 @@ public class SNTRUPrimeKEMGenerator
1516

1617
public SNTRUPrimeKEMGenerator(SecureRandom random)
1718
{
18-
this.random = random;
19+
this.random = CryptoServicesRegistrar.getSecureRandom(random);
1920
}
2021

2122
@Override

prov/src/main/java/org/bouncycastle/pqc/jcajce/provider/hqc/HQCCipherSpi.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import javax.crypto.spec.SecretKeySpec;
2020
import javax.security.auth.DestroyFailedException;
2121

22-
import org.bouncycastle.crypto.CryptoServicesRegistrar;
2322
import org.bouncycastle.crypto.InvalidCipherTextException;
2423
import org.bouncycastle.crypto.SecretWithEncapsulation;
2524
import org.bouncycastle.crypto.Wrapper;
@@ -154,7 +153,7 @@ protected void engineInit(int opmode, Key key, AlgorithmParameterSpec paramSpec,
154153
if (key instanceof BCHQCPublicKey)
155154
{
156155
wrapKey = (BCHQCPublicKey)key;
157-
kemGen = new HQCKEMGenerator(CryptoServicesRegistrar.getSecureRandom(random));
156+
kemGen = new HQCKEMGenerator(random);
158157
}
159158
else
160159
{

prov/src/main/java/org/bouncycastle/pqc/jcajce/provider/ntru/NTRUCipherSpi.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import javax.crypto.spec.SecretKeySpec;
2020
import javax.security.auth.DestroyFailedException;
2121

22-
import org.bouncycastle.crypto.CryptoServicesRegistrar;
2322
import org.bouncycastle.crypto.InvalidCipherTextException;
2423
import org.bouncycastle.crypto.SecretWithEncapsulation;
2524
import org.bouncycastle.crypto.Wrapper;
@@ -145,7 +144,7 @@ protected void engineInit(int opmode, Key key, AlgorithmParameterSpec paramSpec,
145144
if (key instanceof BCNTRUPublicKey)
146145
{
147146
wrapKey = (BCNTRUPublicKey)key;
148-
kemGen = new NTRUKEMGenerator(CryptoServicesRegistrar.getSecureRandom(random));
147+
kemGen = new NTRUKEMGenerator(random);
149148
}
150149
else
151150
{

prov/src/main/java/org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeCipherSpi.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import javax.crypto.spec.SecretKeySpec;
2020
import javax.security.auth.DestroyFailedException;
2121

22-
import org.bouncycastle.crypto.CryptoServicesRegistrar;
2322
import org.bouncycastle.crypto.InvalidCipherTextException;
2423
import org.bouncycastle.crypto.SecretWithEncapsulation;
2524
import org.bouncycastle.crypto.Wrapper;
@@ -144,7 +143,7 @@ protected void engineInit(int opmode, Key key, AlgorithmParameterSpec paramSpec,
144143
if (key instanceof BCSNTRUPrimePublicKey)
145144
{
146145
wrapKey = (BCSNTRUPrimePublicKey)key;
147-
kemGen = new SNTRUPrimeKEMGenerator(CryptoServicesRegistrar.getSecureRandom(random));
146+
kemGen = new SNTRUPrimeKEMGenerator(random);
148147
}
149148
else
150149
{

prov/src/main/jdk17/org/bouncycastle/pqc/jcajce/provider/hqc/HQCKEMSpi.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@ public EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey, AlgorithmParam
3333
{
3434
throw new InvalidAlgorithmParameterException("HQC can only accept KTSParameterSpec");
3535
}
36-
if (secureRandom == null)
37-
{
38-
secureRandom = new SecureRandom();
39-
}
4036
return new HQCEncapsulatorSpi((BCHQCPublicKey)publicKey, (KTSParameterSpec)spec, secureRandom);
4137
}
4238

prov/src/main/jdk17/org/bouncycastle/pqc/jcajce/provider/ntru/NTRUKEMSpi.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@ public EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey, AlgorithmParam
3333
{
3434
throw new InvalidAlgorithmParameterException("NTRU can only accept KTSParameterSpec");
3535
}
36-
if (secureRandom == null)
37-
{
38-
secureRandom = new SecureRandom();
39-
}
4036
return new NTRUEncapsulatorSpi((BCNTRUPublicKey) publicKey, (KTSParameterSpec) spec, secureRandom);
4137
}
4238

prov/src/main/jdk17/org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeKEMSpi.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,6 @@ public EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey, AlgorithmParam
3030
{
3131
throw new InvalidAlgorithmParameterException("SNTRUPrime can only accept KTSParameterSpec");
3232
}
33-
if (secureRandom == null)
34-
{
35-
secureRandom = new SecureRandom();
36-
}
3733
return new SNTRUPrimeEncapsulatorSpi((BCSNTRUPrimePublicKey) publicKey,(KTSParameterSpec) spec, secureRandom);
3834
}
3935

0 commit comments

Comments
 (0)