All files / src/connect/message-signing sign-message.ts

64.28% Statements 9/14
75% Branches 3/4
50% Functions 1/2
58.33% Lines 7/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41  2x   2x 2x   2x 1x                 1x     2x                                          
import { SignatureRequestOptions, SignedOptionsWithOnHandlers } from './types';
import { openSignMessagePopup } from '../popup';
import { Json } from 'micro-stacks/crypto';
import { safeGetPublicKey } from '../common/utils';
import { createWalletJWT } from '../common/create-wallet-jwt';
 
export const generateSignMessagePayload = async (options: SignatureRequestOptions) => {
  const payload: Json = {
    stxAddress: options.stxAddress,
    message: options.message,
    appDetails: options.appDetails ?? null,
    publicKey: safeGetPublicKey(options.privateKey),
    network: options.network as any,
  };
 
  // will sign it or create unsigned JWT
  return createWalletJWT(payload, options.privateKey);
};
 
export const handleSignMessageRequest = async (
  options: SignedOptionsWithOnHandlers<SignatureRequestOptions>
) => {
  try {
    const token = await generateSignMessagePayload({
      message: options.message,
      privateKey: options.privateKey,
      stxAddress: options.stxAddress,
      authOrigin: options.authOrigin,
      appDetails: options.appDetails,
    });
    return openSignMessagePopup({
      token,
      onFinish: options.onFinish,
      onCancel: options.onCancel,
    });
  } catch (e: unknown) {
    console.error(`[micro-stacks] handleSignMessageRequest failed`);
    console.error(e);
  }
};