Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-11-20 06:50:09 +01:00
Don't use a blocking algorithm for generating keys on unix-like systems
This should fix GeyserMC/Floodgate#125
Dieser Commit ist enthalten in:
Ursprung
677a8d68f6
Commit
5c12dc8e15
@ -29,7 +29,9 @@ package org.geysermc.floodgate.crypto;
|
|||||||
import javax.crypto.KeyGenerator;
|
import javax.crypto.KeyGenerator;
|
||||||
import javax.crypto.SecretKey;
|
import javax.crypto.SecretKey;
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
public final class AesKeyProducer implements KeyProducer {
|
public final class AesKeyProducer implements KeyProducer {
|
||||||
public static int KEY_SIZE = 128;
|
public static int KEY_SIZE = 128;
|
||||||
@ -38,7 +40,7 @@ public final class AesKeyProducer implements KeyProducer {
|
|||||||
public SecretKey produce() {
|
public SecretKey produce() {
|
||||||
try {
|
try {
|
||||||
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
|
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
|
||||||
keyGenerator.init(KEY_SIZE, SecureRandom.getInstanceStrong());
|
keyGenerator.init(KEY_SIZE, getSecureRandom());
|
||||||
return keyGenerator.generateKey();
|
return keyGenerator.generateKey();
|
||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
throw new RuntimeException(exception);
|
throw new RuntimeException(exception);
|
||||||
@ -53,4 +55,14 @@ public final class AesKeyProducer implements KeyProducer {
|
|||||||
throw new RuntimeException(exception);
|
throw new RuntimeException(exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SecureRandom getSecureRandom() throws NoSuchAlgorithmException {
|
||||||
|
// use Windows-PRNG for windows (default impl is SHA1PRNG)
|
||||||
|
// default impl for unix-like systems is NativePRNG.
|
||||||
|
if (System.getProperty("os.name").toLowerCase(Locale.ROOT).contains("win")) {
|
||||||
|
return SecureRandom.getInstance("Windows-PRNG");
|
||||||
|
} else {
|
||||||
|
return new SecureRandom();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren