Overview
DynamicEvmWalletClient::signMessage signs raw bytes using EIP-191 (personal_sign) and returns a 0x-prefixed r || s || v signature (65 bytes / 130 hex chars). Message signing is commonly used for authentication, nonce verification, and data integrity checks.
The SDK also exposes an off-chain verifier — DynamicEvmWalletClient.verifyMessageSignature(...) — for recovering the signer locally without any MPC or network I/O.
Prerequisites
Basic Message Signing
The Java SDK is stateless — every sign call requireswalletProperties and externalServerKeyShares. Load both from where you persisted them at wallet creation time.
signature is a 0x-prefixed hex string — pass it directly to any EIP-191 verifier (web3j, ethers, viem, etc).
Verifying the signer locally
Because the signature is standard EIP-191, you can recover the signer with the SDK’s static helper — no MPC ceremony, no network I/O:verifyMessageSignature hashes the message via EIP-191, recovers the signer address from (r || s || v), and compares it case-insensitively to accountAddress. Returns false on any structural failure (bad length, bad recovery, mismatch).