Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
signMessage(key: KeyPair, message: string | Buffer): Buffer {
// key.prv actually holds the encoded seed, but we use the prv name to avoid breaking the keypair schema.
// See jsdoc comment in isValidPrv
let seed = key.prv;
if (!this.isValidPrv(seed)) {
throw new Error(`invalid seed: ${seed}`);
}
if (typeof seed === 'string') {
try {
seed = Seed.decode(seed).seed;
} catch (e) {
throw new Error(`could not decode seed: ${seed}`);
}
}
const keyPair = generateAccountFromSeed(seed);
if (!Buffer.isBuffer(message)) {
message = Buffer.from(message);
}
return Buffer.from(NaclWrapper.sign(message, keyPair.sk));
}
!_.has(params.txPrebuild, 'keys[0]') ||
!_.has(params.txPrebuild, 'keys[1]') ||
!_.has(params.txPrebuild, 'keys[2]')
) {
throw new Error('missing public keys parameter to sign transaction');
}
if (!_.isNumber(addressVersion)) {
throw new Error('missing addressVersion parameter to sign transaction');
}
// we need to re-encode our public keys using algosdk's format
const keys = [params.txPrebuild.keys[0], params.txPrebuild.keys[1], params.txPrebuild.keys[2]];
// re-encode sk from our prv (this acts as a seed out of the keychain)
const seed = Seed.decode(prv).seed;
const pair = generateAccountFromSeed(seed);
const sk = pair.sk;
return { txHex, addressVersion, keys, sk, isHalfSigned };
}