com.xwc1125.chain5j.crypto.SecureRandomUtils Maven / Gradle / Ivy
package com.xwc1125.chain5j.crypto;
import java.security.SecureRandom;
/**
* Utility class for working with SecureRandom implementation.
*
* This is to address issues with SecureRandom on Android. For more information, refer to the
* following issue.
*/
public final class SecureRandomUtils {
private static final SecureRandom SECURE_RANDOM;
static {
if (isAndroidRuntime()) {
new LinuxSecureRandom();
}
SECURE_RANDOM = new SecureRandom();
}
public static SecureRandom secureRandom() {
return SECURE_RANDOM;
}
// Taken from BitcoinJ implementation
// https://github.com/bitcoinj/bitcoinj/blob/3cb1f6c6c589f84fe6e1fb56bf26d94cccc85429/core/src/main/java/org/bitcoinj/core/Utils.java#L573
private static int isAndroid = -1;
static boolean isAndroidRuntime() {
if (isAndroid == -1) {
final String runtime = System.getProperty("java.runtime.name");
isAndroid = (runtime != null && runtime.equals("Android Runtime")) ? 1 : 0;
}
return isAndroid == 1;
}
private SecureRandomUtils() { }
}