combineMlDsaFromWire function

Future<Uint8List> combineMlDsaFromWire({
  1. required MlDsaPublicKey publicKey,
  2. required Uint8List message,
  3. required Iterable<MlDsaSigningMessage> round2Messages,
  4. required Iterable<MlDsaSigningMessage> round3Messages,
  5. required List<int> activePartyIdsZeroBased,
  6. String? mithrilBridgePath,
})

Combines Round2 + Round3 wire dirs into an ML-DSA signature.

Implementation

Future<Uint8List> combineMlDsaFromWire({
  required MlDsaPublicKey publicKey,
  required Uint8List message,
  required Iterable<MlDsaSigningMessage> round2Messages,
  required Iterable<MlDsaSigningMessage> round3Messages,
  required List<int> activePartyIdsZeroBased,
  String? mithrilBridgePath,
}) async {
  final active = [...activePartyIdsZeroBased]..sort();
  final reveals = _orderedPayloads(round2Messages, active, MlDsaWireKind.round2);
  final responses = _orderedPayloads(round3Messages, active, MlDsaWireKind.round3);
  final wfinals = await mithrilAggregateWfinals(
    t: publicKey.params.t,
    n: publicKey.params.n,
    round2Reveals: reveals,
    executablePath: mithrilBridgePath,
  );
  return mithrilCombineWire(
    t: publicKey.params.t,
    n: publicKey.params.n,
    publicKey: publicKey.bytes,
    message: message,
    wfinals: wfinals,
    round3Responses: responses,
    executablePath: mithrilBridgePath,
  );
}