import { verify as secpVerify, Signature } from '@noble/secp256k1'; import { sha256 } from '@noble/hashes/sha256'; import { hexToBytes } from '@noble/hashes/utils'; /** * Verify secp256k1 signature over message (hash-nonce). * Message is hashed with SHA-256 before verification. */ export function verifySignature(message, signatureHex, publicKeyHex) { try { const msgHash = sha256(message); const sig = Signature.fromCompact(hexToBytes(signatureHex)); const pub = hexToBytes(publicKeyHex); return secpVerify(sig, msgHash, pub); } catch { return false; } }