getDRBG function
Implementation
DRBG getDRBG(List<int> msg) {
String nonce = numbers.bytesToHex(msg);
DartRandom rn = new DartRandom(new Random.secure());
var entropy = rn.nextBigInteger(ENT_LEN * 8).toRadixString(16);
if (entropy.length > ENT_LEN * 2) {
entropy = entropy.substring(0, ENT_LEN * 2);
}
var randomPers = rn.nextBigInteger((ENT_LEN) * 8).toRadixString(16);
if (randomPers.length > (ENT_LEN) * 2) {
randomPers = randomPers.substring(0, (ENT_LEN) * 2);
}
var randomPerBytes = numbers.hexToBytes(randomPers);
var pers = []..length = ALG_LEN + ENT_LEN;
pers.fillRange(0, pers.length, 0);
pers.setRange(0, randomPerBytes.length, randomPerBytes);
pers.setRange(ENT_LEN, pers.length, ALG);
return new DRBG(
hash: sha256, entropy: entropy, nonce: nonce, pers: pers.cast<int>());
}