verifySignature method

  1. @override
Future<SignatureVerification> verifySignature(
  1. Uint8List message,
  2. Uint8List signature, {
  3. required IntentScope intentScope,
  4. String? address,
})
override

Verify a user signature (Ed25519 / secp / multisig / zkLogin) over message under the given intentScope. signature is the serialized signature bytes.

Implementation

@override
Future<SignatureVerification> verifySignature(
  Uint8List message,
  Uint8List signature, {
  required IntentScope intentScope,
  String? address,
}) async {
  // PersonalMessage is verified over BCS vector<u8>; TransactionData is raw.
  final value = intentScope == IntentScope.personalMessage
      ? Uint8List.fromList(
          SuiBcs.VECTOR(SuiBcs.U8).serialize(message).toBytes())
      : message;
  final req = VerifySignatureRequest(
    message: Bcs(name: _intentName(intentScope), value: value),
    signature:
        UserSignature(bcs: Bcs(name: 'UserSignature', value: signature)),
    address: address,
  );
  final bytes =
      await _call(_sigVerify, 'VerifySignature', req.writeToBuffer());
  final resp = VerifySignatureResponse.fromBuffer(bytes);
  return SignatureVerification(
    isValid: resp.isValid,
    reason: resp.hasReason() ? resp.reason : null,
  );
}