- Consolidated duplicate UndoManagers to single instance - Fixed connection promise to only resolve on 'connected' status - Fixed WebSocketProvider import (WebsocketProvider) - Added proper doc.destroy() cleanup - Renamed isPresenceInitialized property to avoid conflict Co-Authored-By: Paperclip <noreply@paperclip.ing>
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import { ed25519 } from '@noble/curves/ed25519';
|
|
import type { SolanaSignMessageInput, SolanaSignMessageOutput } from '@solana/wallet-standard-features';
|
|
import { bytesEqual } from './util.js';
|
|
|
|
/**
|
|
* TODO: docs
|
|
*/
|
|
export function verifyMessageSignature({
|
|
message,
|
|
signedMessage,
|
|
signature,
|
|
publicKey,
|
|
}: {
|
|
message: Uint8Array;
|
|
signedMessage: Uint8Array;
|
|
signature: Uint8Array;
|
|
publicKey: Uint8Array;
|
|
}): boolean {
|
|
// TODO: implement https://github.com/solana-labs/solana/blob/master/docs/src/proposals/off-chain-message-signing.md
|
|
return bytesEqual(message, signedMessage) && ed25519.verify(signature, signedMessage, publicKey);
|
|
}
|
|
|
|
/**
|
|
* TODO: docs
|
|
*/
|
|
export function verifySignMessage(input: SolanaSignMessageInput, output: SolanaSignMessageOutput): boolean {
|
|
const {
|
|
message,
|
|
account: { publicKey },
|
|
} = input;
|
|
const { signedMessage, signature } = output;
|
|
return verifyMessageSignature({ message, signedMessage, signature, publicKey: publicKey as Uint8Array });
|
|
}
|