UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

1 lines 2.41 kB
import{fromBase64}from'../_deps/bcs/index.js';import{parseSerializedSignature,SIGNATURE_FLAG_TO_SCHEME}from'../cryptography/index.js';import{Falcon512PublicKey}from'../keypairs/falcon512/publickey.js';export async function verifySignature(a,b,c){const d=await parseSignature(b);if(!await d['publicKey']['verify'](a,d['serializedSignature']))throw new Error('Signature\x20is\x20not\x20valid\x20for\x20the\x20provided\x20data');if(c?.['address']&&!d['publicKey']['verifyAddress'](c['address']))throw new Error('Signature\x20is\x20not\x20valid\x20for\x20the\x20provided\x20address');return d['publicKey'];}export async function verifyPersonalMessageSignature(a,b,c){const d=await parseSignature(b);if(!await d['publicKey']['verifyPersonalMessage'](a,d['serializedSignature']))throw new Error('Signature\x20is\x20not\x20valid\x20for\x20the\x20provided\x20message');if(c?.['address']&&!d['publicKey']['verifyAddress'](c['address']))throw new Error('Signature\x20is\x20not\x20valid\x20for\x20the\x20provided\x20address');return d['publicKey'];}export async function verifyTransactionSignature(a,b,c){const d=await parseSignature(b);if(!await d['publicKey']['verifyTransaction'](a,d['serializedSignature']))throw new Error('Signature\x20is\x20not\x20valid\x20for\x20the\x20provided\x20Transaction');if(c?.['address']&&!d['publicKey']['verifyAddress'](c['address']))throw new Error('Signature\x20is\x20not\x20valid\x20for\x20the\x20provided\x20address');return d['publicKey'];}async function parseSignature(a){const b=parseSerializedSignature(a);if(b['signatureScheme']==='MultiSig'){const {MultiSigPublicKey:d}=await import('../multisig/publickey.js');return{...b,'publicKey':new d(b['multisig']['multisig_pk'])};}const c=publicKeyFromRawBytes(b['signatureScheme'],b['publicKey']);return{...b,'publicKey':c};}export function publicKeyFromRawBytes(a,b,c){let d;switch(a){case'MultiSig':throw new Error('Use\x20parseSignature()\x20for\x20MultiSig\x20public\x20keys');case'Falcon512':d=new Falcon512PublicKey(b);break;default:throw new Error('Unsupported\x20signature\x20scheme\x20'+a);}if(c?.['address']&&!d['verifyAddress'](c['address']))throw new Error('Public\x20key\x20bytes\x20do\x20not\x20match\x20the\x20provided\x20address');return d;}export function publicKeyFromWowBytes(a,b){const c=typeof a==='string'?fromBase64(a):a,d=SIGNATURE_FLAG_TO_SCHEME[c[0x0]];return publicKeyFromRawBytes(d,c['slice'](0x1),b);}