Sign message

Wander Injected API signMessage() function

This function allows creating a cryptographic signature for any piece of data for later validation.

Argument
Type
Description

data

ArrayBuffer

The data to generate the signature for

options?

Configuration for the signature

Note: This function requires the SIGNATURE permission.

Note: The options argument is optional, if it is not provided, the extension will use the default signature options (default hash algorithm: SHA-256) to sign the data.

Options

Currently Wander allows you to customize the hash algorithm (SHA-256 by default):

export interface SignMessageOptions {
  hashAlgorithm?: "SHA-256" | "SHA-384" | "SHA-512";
}

Example usage

// connect to the extension
await window.arweaveWallet.connect(["SIGNATURE"]);

// message to be signed
const data = new TextEncoder().encode("The hash of this msg will be signed.");

// create signature
const signature = await window.arweaveWallet.signMessage(data);

// verify signature
const isValidSignature = await window.arweaveWallet.verifyMessage(data, signature);

console.log(`The signature is ${isValidSignature ? "valid" : "invalid"}`);

Verification without Wander

You might encounter situations where you need to verify the signed message against an Wander generated signature, but the extension is not accessible or not installed (for e.g.: server side code, unsupported browser, etc.).

In these cases it is possible to validate the signature by hashing the message (with the algorithm you used when generating the signature through Wander) and verifying that against the Wander signature. This requires the message to be verified, the signature and the wallet's public key. Below is the JavaScript (TypeScript) example implementation with the Web Crypto API, using SHA-256 hashing:

Wander was formerly know as ArConnect. There are some API references that still use ArConnect

Last updated

Was this helpful?