nonceHash static method

BigInt nonceHash({
  1. required List<int> rand,
  2. required List<int> publicKey,
  3. required List<int> aggPk,
  4. required int i,
  5. required List<int> messagePrefix,
  6. required List<int> extraIn,
})

Implementation

static BigInt nonceHash(
    {required List<int> rand,
    required List<int> publicKey,
    required List<int> aggPk,
    required int i,
    required List<int> messagePrefix,
    required List<int> extraIn}) {
  assert(publicKey.length == EcdsaKeysConst.pubKeyCompressedByteLen,
      "invalid public key length");
  assert(aggPk.length <= MuSig2Const.xOnlyBytesLength,
      "Invalid xonly agg key bytes.");
  final bytes = DynamicByteTracker();
  bytes.add(rand);
  bytes.add([publicKey.length]);
  bytes.add(publicKey);
  bytes.add([aggPk.length]);
  bytes.add(aggPk);
  bytes.add(messagePrefix);
  bytes.add(IntUtils.toBytes(extraIn.length, length: 4));
  bytes.add(extraIn);
  bytes.add(IntUtils.toBytes(i, length: 1));
  return BigintUtils.fromBytes(
      P2TRUtils.taggedHash(MuSig2Const.nonceDomain, bytes.toBytes()));
}