simulate static method
Future<({MlDsaPublicKey publicKey, List<MlDsaShare> shares})>
simulate(
- ThresholdParams params, {
- Uint8List? ceremonyId,
- List<
String> ? participantIds, - String? mithrilBridgePath,
In-process C1 simulation via Mithril RSS keygen (Tier 2).
Returns simulated MlDsaShare values that reference a shared ceremony seed — suitable for tests until distributed lattice DKG ships.
Implementation
static Future<
({
List<MlDsaShare> shares,
MlDsaPublicKey publicKey,
})> simulate(
ThresholdParams params, {
Uint8List? ceremonyId,
List<String>? participantIds,
String? mithrilBridgePath,
}) async {
if (params.scheme != SchemeId.mlDsa44ThresholdV1) {
throw SchemeNotImplemented(
'M2 Mithril bridge supports mlDsa44ThresholdV1 only; got ${params.scheme}',
);
}
final cid = ceremonyId ?? generateCeremonyId();
final ids = participantIds ??
[for (var i = 1; i <= params.n; i++) 'officer$i'];
final keygen = await mithrilKeygen(
t: params.t,
n: params.n,
executablePath: mithrilBridgePath,
);
final publicKey = MlDsaPublicKey.create(
params: params,
ceremonyId: cid,
publicKeyBytes: keygen.publicKey,
);
final shares = <MlDsaShare>[];
for (var i = 0; i < params.n; i++) {
shares.add(
MlDsaShare.simulate(
params: params,
ceremonyId: cid,
participantId: ids[i],
index: i + 1,
ceremonySeed: keygen.ceremonySeed,
),
);
}
return (shares: shares, publicKey: publicKey);
}