AptosMultiEd25519Signature.fromStruct constructor

AptosMultiEd25519Signature.fromStruct(
  1. Map<String, dynamic> json
)

Implementation

factory AptosMultiEd25519Signature.fromStruct(Map<String, dynamic> json) {
  final List<int> signature = json.asBytes("signature");
  if ((signature.length - AptosConstants.bitmapLength) %
          CryptoSignerConst.ed25519SignatureLength !=
      0) {
    throw DartAptosPluginException(
        "Invalid MultiEd25519 signature bytes length.",
        details: {"length": signature.length});
  }
  final signatureLength = (signature.length - AptosConstants.bitmapLength) ~/
      CryptoSignerConst.ed25519SignatureLength;
  return AptosMultiEd25519Signature(
      signatures: List.generate(signatureLength, (i) {
        final index = i * CryptoSignerConst.ed25519SignatureLength;
        return AptosEd25519Signature(signature.sublist(
            index, index + CryptoSignerConst.ed25519SignatureLength));
      }),
      bitmap: signature.sublist(
          signatureLength * CryptoSignerConst.ed25519SignatureLength));
}