mirror of
https://github.com/status-im/MyCrypto.git
synced 2025-01-27 11:24:46 +00:00
616928c085
* Update TODO comments & Remove old TODO comments * Fix undefined bityRate pair * Fix any props in TODO * Add HashRouter * Update publicPath * Revert "Update publicPath" This reverts commit 1ab9068df4d570cf50bc4f2fcd97bd775e9aa768. * Use HashRouter only if site is downloaded * Update conditions for router * Update asset paths & Change publicPath in production * Remove hoist-non-react-statistics * Revert "Remove hoist-non-react-statistics" This reverts commit abc017a3f3ca1a00bebdd9201f0d18770581d8c5. * Add hoist-non-react-statics as dev depencency * Initial tests * Lock hoist-non-react-statics version * Add webpack-include-assets & favicon-webpack plugins * Add env var BUILD_DOWNLOADABLE * Remove dll from prod build * Speed up rebuild times * Change var to const * lodash tree-shacking finagling * Make app aware of its serving location * Fix failing test * Remove downloadable plugin * Merge hash-router and get build working * Add missing package. * Make app aware of its serving location * Revert "Make app aware of its serving location" This reverts commit 8dae3b399e0392272cde25d45443391f6fb6594e. * Revert "Remove downloadable plugin" * Move AutoDLLPlugin to be in dev only * Remove require HtmlWebpackIncludeAssetsPlugin * Remove extra file added * Bring config up to date with webpack 2 rules, add multi threading and proper cache busting * Fix favicons package from freezing build process * Make exclude rules more simple * update freezer webpack config * Move webpack multithreading to full source map dev builds only * update freezer webpack config (#687) * Add HtmlWebpackIncludeAssetsPlugin
74 lines
2.3 KiB
TypeScript
74 lines
2.3 KiB
TypeScript
import BN from 'bn.js';
|
|
import EthTx from 'ethereumjs-tx';
|
|
import { addHexPrefix } from 'ethereumjs-util';
|
|
import { stripHexPrefixAndLower, padLeftEven } from 'libs/values';
|
|
import TrezorConnect from 'vendor/trezor-connect';
|
|
import { DeterministicWallet } from './deterministic';
|
|
|
|
import { getTransactionFields } from 'libs/transaction';
|
|
import mapValues from 'lodash/mapValues';
|
|
|
|
import { IFullWallet } from '../IWallet';
|
|
|
|
export class TrezorWallet extends DeterministicWallet implements IFullWallet {
|
|
public signRawTransaction(tx: EthTx): Promise<Buffer> {
|
|
return new Promise((resolve, reject) => {
|
|
const { chainId, ...strTx } = getTransactionFields(tx);
|
|
// stripHexPrefixAndLower identical to ethFuncs.getNakedAddress
|
|
const cleanedTx = mapValues(mapValues(strTx, stripHexPrefixAndLower), padLeftEven);
|
|
|
|
(TrezorConnect as any).ethereumSignTx(
|
|
// Args
|
|
this.getPath(),
|
|
cleanedTx.nonce,
|
|
cleanedTx.gasPrice,
|
|
cleanedTx.gasLimit,
|
|
cleanedTx.to,
|
|
cleanedTx.value,
|
|
cleanedTx.data,
|
|
chainId,
|
|
// Callback
|
|
result => {
|
|
if (!result.success) {
|
|
return reject(Error(result.error));
|
|
}
|
|
|
|
// TODO: Explain what's going on here? Add tests? Adapted from:
|
|
// https://github.com/kvhnuke/etherwallet/blob/v3.10.2.6/app/scripts/uiFuncs.js#L24
|
|
const txToSerialize = {
|
|
...tx,
|
|
v: addHexPrefix(new BN(result.v).toString(16)),
|
|
r: addHexPrefix(result.r),
|
|
s: addHexPrefix(result.s)
|
|
};
|
|
const eTx = new EthTx(txToSerialize);
|
|
const serializedTx = eTx.serialize();
|
|
resolve(serializedTx);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
public signMessage = () => Promise.reject(new Error('Signing via Trezor not yet supported.'));
|
|
|
|
// works, but returns a signature that can only be verified with a Trezor device
|
|
/*
|
|
public signMessage = (message: string): Promise<string> => {
|
|
return new Promise((resolve, reject) => {
|
|
(TrezorConnect as any).ethereumSignMessage(
|
|
this.getPath(),
|
|
message,
|
|
response => {
|
|
if (response.success) {
|
|
resolve(addHexPrefix(response.signature))
|
|
} else{
|
|
console.error(response.error)
|
|
reject(response.error)
|
|
}
|
|
}
|
|
)
|
|
})
|
|
}
|
|
*/
|
|
}
|