signWithPopup
Open a JoyID app popup window to sign message.
Types
function signWithPopup ( request: SignMessageRequest, config?: PopupConfigOptions): Promise<SignMessageResponse>interface SignMessageRequest { /** * The URL of your app that JoyID app should redirect to after authentication */ redirectURL: string /** * name of your app */ name?: string /** * logo of your app */ logo?: string /** * The challenge that was requested to be signed */ challenge: string /** * sign the challenge as a hex data */ isData?: boolean /** * Custom state that will be returned to your app after signing */ state?: any}interface SignMessageResponse { type: 'SignMessage' error?: string data?: SignMessageData}interface SignMessageData { // The public key of the authenticated user pubkey: string /** * The challenge that was requested to be signed */ challenge: string /** * The message that was signed by the authenticator, * Note that the message may not be the original raw message, * but is combined with client data and authenticator data * according to [WebAuthn Spec](https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion). */ message: string /** * The signature of the message that was signed by the authenticator */ signature: string /** * key type of the authenticated user */ keyType: 'main_key' | 'sub_key' | 'main_session_key' | 'sub_session_key' /** * The algorithm of the signature. * corresponds to the `value` field of the [COSE](https://www.iana.org/assignments/cose/cose.xhtml#algorithms) structure */ alg: number /** * The attestation of the signature, * only available when keyType is `main_session_key` or `sub_session_key` */ attestation?: string}interface PopupConfigOptions { /** * Default is 300s */ timeoutInSeconds?: number}
Example
import { SignWithPopup } from '@joyid/core'async function joyidSign() { const request = { redirectURL: 'https://example.com', title: 'Example App', logo: 'https://example.com/logo.png', challenge: 'Sign this message', } const res = await signWithPopup(request) if (res.error != null) { console.error(res.error) } else { // the message has signed, // do something with res.data, it's type safe! }}
Details
- See also: Guide - Sign With Popup with a live demo