wowok
Version:
Wowok Blockchain TypeScript API
1 lines • 1.41 kB
JavaScript
import{falcon512padded}from'@noble/post-quantum/falcon.js';import{decodeWowPrivateKey,encodeWowPrivateKey,Keypair}from'../../cryptography/keypair.js';import{Falcon512PublicKey}from'./publickey.js';export const DEFAULT_FALCON512_DERIVATION_PATH='m/44\x27/784\x27/0\x27/0\x27/0\x27';export class Falcon512Keypair extends Keypair{['keypair'];constructor(a){super();if(a)this['keypair']=a;else{const b=falcon512padded['keygen']();this['keypair']={'publicKey':b['publicKey'],'secretKey':b['secretKey']};}}['getKeyScheme'](){return'Falcon512';}static['generate'](){const a=falcon512padded['keygen']();return new Falcon512Keypair({'publicKey':a['publicKey'],'secretKey':a['secretKey']});}static['fromSecretKey'](a){if(typeof a==='string'){const b=decodeWowPrivateKey(a);if(b['scheme']!=='Falcon512')throw new Error('Expected\x20a\x20Falcon512\x20keypair,\x20got\x20'+b['scheme']);return new Falcon512Keypair({'publicKey':falcon512padded['getPublicKey'](b['secretKey']),'secretKey':b['secretKey']});}return new Falcon512Keypair({'publicKey':falcon512padded['getPublicKey'](a),'secretKey':a});}['getPublicKey'](){return new Falcon512PublicKey(this['keypair']['publicKey']);}['getSecretKey'](){return encodeWowPrivateKey(this['keypair']['secretKey'],this['getKeyScheme']());}['getRawSecretKey'](){return this['keypair']['secretKey'];}async['sign'](a){return falcon512padded['sign'](a,this['keypair']['secretKey']);}}