mirror of
https://github.com/trezor/trezor-wallet
synced 2024-11-28 03:08:30 +00:00
fixed address validation
added checksum validation if address contains any uppercase letter
This commit is contained in:
parent
c9b9359e70
commit
93b70c1f0a
@ -13,6 +13,7 @@ import { initialState } from 'reducers/SendFormReducer';
|
|||||||
import { findToken } from 'reducers/TokensReducer';
|
import { findToken } from 'reducers/TokensReducer';
|
||||||
import { findDevice, getPendingAmount, getPendingNonce } from 'reducers/utils';
|
import { findDevice, getPendingAmount, getPendingNonce } from 'reducers/utils';
|
||||||
import * as stateUtils from 'reducers/utils';
|
import * as stateUtils from 'reducers/utils';
|
||||||
|
import { validateAddress } from 'utils/ethUtils';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
Dispatch,
|
Dispatch,
|
||||||
@ -345,32 +346,19 @@ export const validation = (props: Props): void => {
|
|||||||
if (state.untouched) return;
|
if (state.untouched) return;
|
||||||
// valid address
|
// valid address
|
||||||
if (state.touched.address) {
|
if (state.touched.address) {
|
||||||
/* if (state.address.length < 1) {
|
const addressError = validateAddress(state.address);
|
||||||
errors.address = 'Address is not set';
|
if (addressError) {
|
||||||
} else if (!EthereumjsUtil.isValidAddress(state.address)) {
|
errors.address = addressError;
|
||||||
errors.address = 'Address is not valid';
|
}
|
||||||
} else {
|
|
||||||
// address warning or info are set in addressValidation ThunkAction
|
|
||||||
// do not override this
|
|
||||||
if (state.warnings.address) {
|
|
||||||
warnings.address = state.warnings.address;
|
|
||||||
} else if (state.infos.address) {
|
|
||||||
infos.address = state.infos.address;
|
|
||||||
}
|
|
||||||
} */
|
|
||||||
|
|
||||||
/* eslint (no-lonely-if) */
|
// address warning or info may be set in addressValidation ThunkAction
|
||||||
if (state.address.length < 1) {
|
// do not override them
|
||||||
errors.address = 'Address is not set';
|
if (state.warnings.address) {
|
||||||
} else if (!EthereumjsUtil.isValidAddress(state.address)) {
|
|
||||||
errors.address = 'Address is not valid';
|
|
||||||
} else if (state.warnings.address) {
|
|
||||||
// address warning or info are set in addressValidation ThunkAction
|
|
||||||
// do not override this
|
|
||||||
warnings.address = state.warnings.address;
|
warnings.address = state.warnings.address;
|
||||||
if (state.infos.address) {
|
}
|
||||||
infos.address = state.infos.address;
|
|
||||||
}
|
if (state.infos.address) {
|
||||||
|
infos.address = state.infos.address;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* @flow */
|
/* @flow */
|
||||||
|
|
||||||
import BigNumber from 'bignumber.js';
|
import BigNumber from 'bignumber.js';
|
||||||
|
import EthereumjsUtil from 'ethereumjs-util';
|
||||||
|
|
||||||
export const decimalToHex = (dec: number): string => new BigNumber(dec).toString(16);
|
export const decimalToHex = (dec: number): string => new BigNumber(dec).toString(16);
|
||||||
|
|
||||||
@ -28,4 +29,16 @@ export const strip = (str: string): string => {
|
|||||||
return padLeftEven(str);
|
return padLeftEven(str);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const calcGasPrice = (price: BigNumber, limit: string): string => price.times(limit).toString();
|
export const calcGasPrice = (price: BigNumber, limit: string): string => price.times(limit).toString();
|
||||||
|
|
||||||
|
export const validateAddress = (address: string): ?string => {
|
||||||
|
const hasUpperCase = new RegExp('^(.*[A-Z].*)$');
|
||||||
|
if (address.length < 1) {
|
||||||
|
return 'Address is not set';
|
||||||
|
} else if (!EthereumjsUtil.isValidAddress(address)) {
|
||||||
|
return 'Address is not valid';
|
||||||
|
} else if (address.match(hasUpperCase) && !EthereumjsUtil.isValidChecksumAddress(address)) {
|
||||||
|
return 'Address is not a valid checksum';
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user