getDRBG function

DRBG getDRBG(
  1. List<int> msg
)

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>());
}