Skip to content

Commit 828a3f5

Browse files
committed
Setting for RNG + no strong SR for Salt, PW and IV
1 parent c2b5d2b commit 828a3f5

File tree

25 files changed

+195
-72
lines changed

25 files changed

+195
-72
lines changed

kse/src/main/java/org/kse/KSE.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import org.kse.gui.preferences.data.LanguageItem;
4949
import org.kse.utilities.net.ProxySettingsUpdater;
5050
import org.kse.utilities.os.OperatingSystem;
51+
import org.kse.utilities.rng.RNG;
5152
import org.kse.version.Version;
5253

5354
import com.sun.jna.Library;
@@ -118,6 +119,7 @@ public static void main(String[] args) {
118119
Security.addProvider(BC);
119120

120121
Pkcs12Util.setEncryptionStrength(preferences.getPkcs12EncryptionSetting());
122+
RNG.setType(preferences.getRngTypeSetting());
121123

122124
setProperties(preferences.getProperties());
123125

kse/src/main/java/org/kse/crypto/encryption/AES.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import javax.crypto.spec.SecretKeySpec;
3636

3737
import org.kse.gui.passwordmanager.EncryptionAlgorithm;
38+
import org.kse.utilities.rng.RNG;
3839

3940
/**
4041
* Simplify AES encryption and decryption by wrapping the JCE calls
@@ -133,7 +134,7 @@ public static byte[] decryptAesGcm(byte[] encrData, byte[] iv, SecretKey aesKey)
133134
public static SecretKey generateKey(int keyLength) {
134135
try {
135136
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
136-
keyGen.init(keyLength, SecureRandom.getInstanceStrong());
137+
keyGen.init(keyLength, RNG.newInstanceForLongLivedSecrets());
137138
return keyGen.generateKey();
138139
} catch (NoSuchAlgorithmException e) {
139140
throw new EncryptionException("AES algorithm not available", e);

kse/src/main/java/org/kse/crypto/keypair/KeyPairUtil.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
import org.kse.crypto.ecc.CurveSet;
7676
import org.kse.crypto.ecc.EccUtil;
7777
import org.kse.crypto.ecc.EdDSACurves;
78-
import org.kse.utilities.rng.StrongRNG;
78+
import org.kse.utilities.rng.RNG;
7979

8080
/**
8181
* Provides utility methods relating to asymmetric key pairs.
@@ -114,7 +114,7 @@ public static KeyPair generateKeyPair(KeyPairType keyPairType, int keySize, Prov
114114
}
115115

116116
// Initialise key pair generator with key strength and randomness
117-
keyPairGen.initialize(keySize, StrongRNG.newInstance());
117+
keyPairGen.initialize(keySize, RNG.newInstanceForLongLivedSecrets());
118118

119119
// Generate and return the key pair
120120
return keyPairGen.generateKeyPair();
@@ -139,17 +139,17 @@ public static KeyPair generateECKeyPair(String curveName, Provider provider) thr
139139

140140
if (EdDSACurves.ED25519.jce().equals(curveName) || EdDSACurves.ED448.jce().equals(curveName)) {
141141
keyPairGen = KeyPairGenerator.getInstance(curveName, KSE.BC);
142-
keyPairGen.initialize(new ECGenParameterSpec(curveName), StrongRNG.newInstance());
142+
keyPairGen.initialize(new ECGenParameterSpec(curveName), RNG.newInstanceForLongLivedSecrets());
143143
} else if (CurveSet.ECGOST.getAllCurveNames().contains(curveName)) {
144144
KeyPairType keyPairType = KeyPairType.getGostTypeFromCurve(curveName);
145145
keyPairGen = KeyPairGenerator.getInstance(keyPairType.jce(), KSE.BC);
146-
keyPairGen.initialize(new ECGenParameterSpec(curveName), StrongRNG.newInstance());
146+
keyPairGen.initialize(new ECGenParameterSpec(curveName), RNG.newInstanceForLongLivedSecrets());
147147
} else if (provider != null) {
148148
keyPairGen = KeyPairGenerator.getInstance(KeyPairType.EC.jce(), provider);
149-
keyPairGen.initialize(new ECGenParameterSpec(curveName), StrongRNG.newInstance());
149+
keyPairGen.initialize(new ECGenParameterSpec(curveName), RNG.newInstanceForLongLivedSecrets());
150150
} else {
151151
keyPairGen = KeyPairGenerator.getInstance(KeyPairType.EC.jce(), KSE.BC);
152-
keyPairGen.initialize(new ECGenParameterSpec(curveName), StrongRNG.newInstance());
152+
keyPairGen.initialize(new ECGenParameterSpec(curveName), RNG.newInstanceForLongLivedSecrets());
153153
}
154154

155155
// Generate and return the key pair
@@ -179,7 +179,7 @@ public static KeyPair generateKeyPair(KeyPairType keyPairType, Provider provider
179179
} else {
180180
keyPairGen = KeyPairGenerator.getInstance(keyPairType.jce(), KSE.BC);
181181
}
182-
keyPairGen.initialize(new NamedParameterSpec(keyPairType.jce()), SecureRandom.getInstanceStrong());
182+
keyPairGen.initialize(new NamedParameterSpec(keyPairType.jce()), RNG.newInstanceForLongLivedSecrets());
183183

184184
return keyPairGen.generateKeyPair();
185185
} catch (GeneralSecurityException ex) {

kse/src/main/java/org/kse/crypto/privatekey/MsPvkUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
import org.kse.crypto.keypair.KeyPairUtil;
4848
import org.kse.gui.passwordmanager.Password;
4949
import org.kse.utilities.io.UnsignedUtil;
50-
import org.kse.utilities.rng.StrongRNG;
50+
import org.kse.utilities.rng.RNG;
5151

5252
// @formatter:off
5353
/**
@@ -913,7 +913,7 @@ private static byte[] encryptPrivateKeyBlob(byte[] privateKeyBlob, byte[] rc4Key
913913
}
914914

915915
private static byte[] generate16ByteSalt() {
916-
return StrongRNG.generate(ENCRYPTED_SALT_LENGTH);
916+
return RNG.generate(ENCRYPTED_SALT_LENGTH);
917917
}
918918

919919
private static byte[] getBufferBytes(ByteBuffer bb) {

kse/src/main/java/org/kse/crypto/privatekey/OpenSslPvkUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
import org.kse.utilities.pem.PemAttributes;
6969
import org.kse.utilities.pem.PemInfo;
7070
import org.kse.utilities.pem.PemUtil;
71-
import org.kse.utilities.rng.StrongRNG;
71+
import org.kse.utilities.rng.RNG;
7272

7373
/**
7474
* Provides utility methods relating to OpenSSL (= PKCS#1 for RSA) encoded private keys.
@@ -537,7 +537,7 @@ handle EC structure first (RFC 5915)
537537
}
538538

539539
private static byte[] generateSalt(int size) {
540-
return StrongRNG.generate(size);
540+
return RNG.generate(size);
541541
}
542542

543543
private static byte[] deriveKeyFromPassword(Password password, byte[] salt, int keySize) throws CryptoException {

kse/src/main/java/org/kse/crypto/secretkey/SecretKeyUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import org.kse.KSE;
3333
import org.kse.crypto.CryptoException;
3434
import org.kse.crypto.KeyInfo;
35-
import org.kse.utilities.rng.StrongRNG;
35+
import org.kse.utilities.rng.RNG;
3636

3737
public final class SecretKeyUtil {
3838
private static ResourceBundle res = ResourceBundle.getBundle("org/kse/crypto/secretkey/resources");
@@ -51,7 +51,7 @@ private SecretKeyUtil() {
5151
public static SecretKey generateSecretKey(SecretKeyType secretKeyType, int keySize) throws CryptoException {
5252
try {
5353
KeyGenerator keyGenerator = KeyGenerator.getInstance(secretKeyType.jce(), KSE.BC);
54-
keyGenerator.init(keySize, StrongRNG.newInstance());
54+
keyGenerator.init(keySize, RNG.newInstanceForLongLivedSecrets());
5555

5656
return keyGenerator.generateKey();
5757
} catch (GeneralSecurityException ex) {

kse/src/main/java/org/kse/crypto/signing/JarSigner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
import org.kse.crypto.CryptoException;
7474
import org.kse.crypto.digest.DigestType;
7575
import org.kse.crypto.digest.DigestUtil;
76-
import org.kse.utilities.rng.StrongRNG;
76+
import org.kse.utilities.rng.RNG;
7777

7878
/**
7979
* Class provides functionality to sign JAR files.
@@ -685,7 +685,7 @@ private static byte[] createSignatureBlock(byte[] toSign, PrivateKey privateKey,
685685
Collections.addAll(certList, certificateChain);
686686

687687
DigestCalculatorProvider digCalcProv = new JcaDigestCalculatorProviderBuilder().setProvider(KSE.BC).build();
688-
JcaContentSignerBuilder csb = new JcaContentSignerBuilder(signatureType.jce()).setSecureRandom(StrongRNG.newInstance());
688+
JcaContentSignerBuilder csb = new JcaContentSignerBuilder(signatureType.jce()).setSecureRandom(RNG.newInstanceForLongLivedSecrets());
689689
if (provider != null) {
690690
csb.setProvider(provider);
691691
}

kse/src/main/java/org/kse/crypto/signing/TimeStampingClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.bouncycastle.tsp.TimeStampToken;
4646
import org.bouncycastle.util.encoders.Base64;
4747
import org.kse.crypto.digest.DigestType;
48+
import org.kse.utilities.rng.RNG;
4849

4950
public class TimeStampingClient {
5051

@@ -127,7 +128,7 @@ public void checkClientTrusted(X509Certificate[] certs, String authType) {
127128
@Override
128129
public void checkServerTrusted(X509Certificate[] certs, String authType) {
129130
}
130-
} }, new java.security.SecureRandom());
131+
} }, RNG.newInstanceDefault());
131132
} catch (NoSuchAlgorithmException | KeyManagementException e) {
132133
throw new IOException(e);
133134
}

kse/src/main/java/org/kse/gui/actions/PreferencesAction.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737

3838
import com.formdev.flatlaf.FlatLaf;
3939
import com.formdev.flatlaf.extras.FlatAnimatedLafChange;
40+
import org.kse.utilities.rng.RNG;
4041

4142
/**
4243
* Action to show preferences.
@@ -110,6 +111,9 @@ public void showPreferences() {
110111
preferences.setPkcs12EncryptionSetting(dPreferences.getPkcs12EncryptionSetting());
111112
Pkcs12Util.setEncryptionStrength(preferences.getPkcs12EncryptionSetting());
112113

114+
preferences.setRngTypeSetting(dPreferences.getRngTypeSetting());
115+
RNG.setType(preferences.getRngTypeSetting());
116+
113117
preferences.setLookAndFeelClass(dPreferences.getLookFeelInfo().getClassName());
114118
preferences.setLookAndFeelDecorated(dPreferences.getLookFeelDecoration());
115119

kse/src/main/java/org/kse/gui/actions/VerifyCertificateAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import java.security.KeyStoreException;
3636
import java.security.NoSuchAlgorithmException;
3737
import java.security.NoSuchProviderException;
38-
import java.security.SecureRandom;
3938
import java.security.Security;
4039
import java.security.SignatureException;
4140
import java.security.cert.CertPath;
@@ -96,6 +95,7 @@
9695
import org.kse.gui.error.Problem;
9796
import org.kse.utilities.StringUtils;
9897
import org.kse.utilities.history.KeyStoreHistory;
98+
import org.kse.utilities.rng.RNG;
9999

100100
public class VerifyCertificateAction extends KeyStoreExplorerAction {
101101

@@ -241,7 +241,7 @@ private static OCSPReq makeOcspRequest(X509Certificate caCert, X509Certificate c
241241
gen.addRequest(certId);
242242
if (includeNonce) {
243243
byte[] nonce = new byte[16];
244-
new SecureRandom().nextBytes(nonce);
244+
RNG.newInstanceDefault().nextBytes(nonce);
245245
ExtensionsGenerator extGen = new ExtensionsGenerator();
246246
extGen.addExtension(OCSPObjectIdentifiers.id_pkix_ocsp_nonce, false, new DEROctetString(nonce));
247247
gen.setRequestExtensions(extGen.generate());

0 commit comments

Comments
 (0)