parsePartialSignatures function

List<ParsedPartialMultiSigSignature> parsePartialSignatures(
  1. MultiSigStruct multisig
)

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;
}