org.beykery.eth.SecureRandomUtils Maven / Gradle / Ivy
package org.beykery.eth;
import org.web3j.crypto.LinuxSecureRandom;
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.
*/
final class SecureRandomUtils
{
private static final SecureRandom SECURE_RANDOM;
static
{
if (isAndroidRuntime())
{
new LinuxSecureRandom();
}
SECURE_RANDOM = new SecureRandom();
}
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()
{
}
}