UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

1 lines 951 B
import{fromBase64,toBase64}from'../_deps/bcs/index.js';import{bcs}from'../bcs/index.js';import{parseSerializedKeypairSignature}from'./publickey.js';import{SIGNATURE_FLAG_TO_SCHEME,SIGNATURE_SCHEME_TO_FLAG}from'./signature-scheme.js';export function toSerializedSignature({signature:a,signatureScheme:b,publicKey:c}){if(!c)throw new Error('`publicKey`\x20is\x20required');const d=c['toRawBytes'](),e=new Uint8Array(0x1+a['length']+d['length']);return e['set']([SIGNATURE_SCHEME_TO_FLAG[b]]),e['set'](a,0x1),e['set'](d,0x1+a['length']),toBase64(e);}export function parseSerializedSignature(a){const b=fromBase64(a),c=SIGNATURE_FLAG_TO_SCHEME[b[0x0]];switch(c){case'MultiSig':const d=bcs['MultiSig']['parse'](b['slice'](0x1));return{'serializedSignature':a,'signatureScheme':'MultiSig','multisig':d,'bytes':b,'signature':undefined};case'Falcon512':return parseSerializedKeypairSignature(a);default:throw new Error('Unsupported\x20signature\x20scheme');}}