import { sm2 } from 'sm-crypto-v2'; export const signer = (privateKey: Uint8Array) => { return { async sign({ data }: { data: Uint8Array | string }) { const signatureHex = sm2.doSignature( data, sm2.arrayToHex(Array.from(privateKey)) ); return new Uint8Array(Buffer.from(signatureHex, 'hex')); }, }; }; export const verifier = (publicKey: Uint8Array) => { return { async verify({ data, signature, }: { data: Uint8Array | string; signature: Uint8Array; }) { return sm2.doVerifySignature( data, sm2.arrayToHex(Array.from(signature)), sm2.arrayToHex(Array.from(publicKey)) ); }, }; };