blockchainethereumsmart-contractssoliditytutorialdappweb3ethtruffleweb3jstransactionsigntransactionsignaturesign-datasignpublickeyprivatekeyethereum-identityencryptioncipher
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
15 lines
868 B
15 lines
868 B
import { Transaction } from '@ethereumjs/tx';
|
|
import { publicKeyByPrivateKey } from './public-key-by-private-key';
|
|
import { toAddress as addressByPublicKey } from './public-key';
|
|
export function signTransaction(rawTx, privateKey) {
|
|
var txOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
// check if privateKey->address matches rawTx.from
|
|
var publicKey = publicKeyByPrivateKey(privateKey);
|
|
var address = addressByPublicKey(publicKey);
|
|
if (address != rawTx.from) throw new Error('EthCrypto.signTransaction(): rawTx.from does not match the address of the privateKey');
|
|
var privateKeyBuffer = Buffer.from(privateKey.replace(/^.{2}/g, ''), 'hex');
|
|
var tx = Transaction.fromTxData(rawTx, txOptions);
|
|
var signedTx = tx.sign(privateKeyBuffer);
|
|
var serializedTx = signedTx.serialize().toString('hex');
|
|
return serializedTx;
|
|
} |