package im.actor.runtime.generic;
import java.math.BigInteger;
import java.security.SecureRandom;
import im.actor.runtime.RandomRuntime;
/**
* Created by ex3ndr on 07.08.15.
*/
public class GenericRandomProvider implements RandomRuntime {
private final SecureRandom random = new SecureRandom();
@Override
public byte[] randomBytes(int length) {
byte[] res = new byte[length];
synchronized (random) {
random.nextBytes(res);
}
return res;
}
@Override
public int randomInt(int maxValue) {
synchronized (random) {
return random.nextInt(maxValue);
}
}
@Override
public void nextBytes(byte[] data) {
synchronized (random) {
random.nextBytes(data);
}
}
@Override
public long randomLong() {
synchronized (random) {
return random.nextLong();
}
}
@Override
public BigInteger generateBigInteger(int numBits) {
return new BigInteger(numBits, random);
}
@Override
public BigInteger generateBigInteger(int numBits, int certanity) {
return new BigInteger(numBits, certanity, random);
}
}