diff --git a/web3.js/src/account.js b/web3.js/src/account.js index 05e53a89c8..a0df039979 100644 --- a/web3.js/src/account.js +++ b/web3.js/src/account.js @@ -38,6 +38,6 @@ export class Account { * The **unencrypted** secret key for this account */ get secretKey(): Buffer { - return this._keypair.secretKey; + return toBuffer(this._keypair.secretKey); } } diff --git a/web3.js/src/publickey.js b/web3.js/src/publickey.js index d448c4782f..c5573fa079 100644 --- a/web3.js/src/publickey.js +++ b/web3.js/src/publickey.js @@ -113,7 +113,7 @@ export class PublicKey { Buffer.from('ProgramDerivedAddress'), ]); let hash = await sha256(new Uint8Array(buffer)); - let publicKeyBytes = new BN(hash, 16).toArray(null, 32); + let publicKeyBytes = new BN(hash, 16).toArray(undefined, 32); if (is_on_curve(publicKeyBytes)) { throw new Error(`Invalid seeds, address must fall off the curve`); } diff --git a/web3.js/src/secp256k1-program.js b/web3.js/src/secp256k1-program.js index 51d213c2bc..325fea2873 100644 --- a/web3.js/src/secp256k1-program.js +++ b/web3.js/src/secp256k1-program.js @@ -183,13 +183,20 @@ export class Secp256k1Program { static createInstructionWithPrivateKey( params: CreateSecp256k1InstructionWithPrivateKeyParams, ): TransactionInstruction { - const {privateKey, message} = params; + const {privateKey: pkey, message} = params; assert( - privateKey.length === PRIVATE_KEY_BYTES, - `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${privateKey.length} bytes`, + pkey.length === PRIVATE_KEY_BYTES, + `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${pkey.length} bytes`, ); + let privateKey; + if (Array.isArray(pkey)) { + privateKey = Uint8Array.from(pkey); + } else { + privateKey = pkey; + } + try { const publicKey = publicKeyCreate(privateKey, false).slice(1); // throw away leading byte const messageHash = Buffer.from( diff --git a/web3.js/src/transaction.js b/web3.js/src/transaction.js index b0f7b636f2..e79475cd46 100644 --- a/web3.js/src/transaction.js +++ b/web3.js/src/transaction.js @@ -11,6 +11,7 @@ import {PublicKey} from './publickey'; import {Account} from './account'; import * as shortvec from './util/shortvec-encoding'; import type {Blockhash} from './blockhash'; +import {toBuffer} from './util/to-buffer'; /** * @typedef {string} TransactionSignature @@ -522,7 +523,7 @@ export class Transaction { const signData = message.serialize(); signers.forEach(signer => { const signature = nacl.sign.detached(signData, signer.secretKey); - this._addSignature(signer.publicKey, signature); + this._addSignature(signer.publicKey, toBuffer(signature)); }); }