completeRound3 method
Future<MlDsaSigningMessage>
completeRound3({
- required Iterable<
MlDsaSigningMessage> round1Messages, - required Iterable<
MlDsaSigningMessage> round2Messages,
Completes Round3 after collecting Round1 + Round2 wire messages.
Implementation
Future<MlDsaSigningMessage> completeRound3({
required Iterable<MlDsaSigningMessage> round1Messages,
required Iterable<MlDsaSigningMessage> round2Messages,
}) async {
_assertRound1Messages(round1Messages);
_assertRound2Messages(round2Messages);
final hashes = _orderedRound1Hashes(round1Messages);
final reveals = _orderedRound2Reveals(round2Messages);
final wfinals = await mithrilAggregateWfinals(
t: params.t,
n: params.n,
round2Reveals: reveals,
);
final response = await mithrilRound3Party(
t: params.t,
n: params.n,
ceremonySeed: _ceremonySeed.bytes,
partyIdZeroBased: signerIndex - 1,
activePartyIdsZeroBased: activePartyIdsZeroBased,
message: message,
sessionId: sessionId,
round1Hashes: hashes,
round2Reveals: reveals,
wfinals: wfinals,
);
return MlDsaSigningMessage.round3(
params: params,
ceremonyId: ceremonyId,
senderIndex: signerIndex,
sessionId: sessionId,
responseBytes: response,
);
}