Sign Message SDK
signMessage allows you to generate a signature on a message.
To sign a message a user / an account would need to have to have been register and authenticated by going through Register using SDK flow.
Once you have registered the user, you can choose one of the below 2 flows
Session-Based Authentication
In order to use this flow, you must Authenticating with SDK first to obtain a JWT. Here is a sample of how to use it
import { Passport } from "@0xpass/passport";
import { WebauthnSigner } from "@0xpass/webauthn-signer";
import { stringToHex } from "viem";
import { Passport } from "@0xpass/passport";
import { WebauthnSigner } from "@0xpass/webauthn-signer";
const signer = new WebauthnSigner({
rpId: window.location.hostname,
rpName: "rpName",
});
const passport = new Passport({
scopeId: "insert_your_scope_id",
signer: signer
});
const userInput {
username: "insert_registered_username_here"
userDisplayName: "insert_registered_user_display_name_here"
}
await passport.setupEncryption();
await passport.authenticate(userInput);
// Generate a signature
const signature = await passport.signMessage(stringToHex("hello world!"));
console.log(signature);
signMessage Parameters
Parameter | Description | Example Values |
---|
| The message you'd like to sign | 68656c6c6f20776f726c64 (hex represenation of "hello world")
|
signMessage Response
A successful response will return the following, a signature of the signed message by the authenticated account.
{
"jsonrpc": "2.0",
"result": "signature_here",
"id": 1
}
Direct Passkey Authentication
Since you will be directly authenticating with Passkeys here, you don't need to go through authentication step. Here is a code sample:
import { Passport } from "@0xpass/passport";
import { WebauthnSigner } from "@0xpass/webauthn-signer";
import { stringToHex } from "viem";
import { Passport } from "@0xpass/passport";
import { WebauthnSigner } from "@0xpass/webauthn-signer";
const signer = new WebauthnSigner({
rpId: window.location.hostname,
rpName: "rpName",
});
const passport = new Passport({
scope_id: "insert_your_scope_id",
signer: signer
allow_sessions: false
});
const userInput {
username: "insert_registered_username_here"
userDisplayName: "insert_registered_user_display_name_here"
}
await passport.setupEncryption();
//This step is different for direct authentication
passport.setUserData(userInput)
// Generate a signature
const signature = await passport.signMessage(stringToHex("hello world!"));
console.log(signature);
signMessage Parameters
Parameter | Description | Example Values |
---|
| The message you'd like to sign | 68656c6c6f20776f726c64 (hex represenation of "hello world")
|
signMessage Response
A successful response will return the following, a signature of the signed message by the authenticated account.
{
"jsonrpc": "2.0",
"result": "signature_here",
"id": 1
}
Last updated