parsePartialSignatures function
Parse multisig structure into an array of individual signatures: signature scheme, the actual individual signature, public key and its weight.
Implementation
List<ParsedPartialMultiSigSignature> parsePartialSignatures(MultiSigStruct multisig) {
final sigs = multisig.sigs;
final len = sigs.length;
final res = <ParsedPartialMultiSigSignature>[];
for (int i = 0; i < len; i++) {
final sss = sigs[i].entries.first;
final signatureScheme = sss.key;
final signature = sss.value.cast<int>();
final pkIndex = asIndices(multisig.bitmap)[i];
final pair = multisig.multisigPK.pks[pkIndex];
final pkBytes = pair.pubKey.entries.first.value.cast<int>();
if (signatureScheme == SignatureScheme.MultiSig.name) {
throw ArgumentError("MultiSig is not supported inside MultiSig");
}
final publicKey = publicKeyFromRawBytes(signatureScheme, Uint8List.fromList(pkBytes));
final parsedSign = ParsedPartialMultiSigSignature(
signatureScheme: SignatureScheme.values.byName(signatureScheme),
signature: Uint8List.fromList(signature),
publicKey: publicKey,
weight: pair.weight,
);
res.add(parsedSign);
}
return res;
}