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