Properly validate HD derivation paths
commit9f7f83014e5b7fff795a94ce397881d7fc869d91
authorFang <git@fang.io>
dateThu 19 Dec 2019, 15:11 (7 years ago)
parent7a1be54
src/form/validators.js+2−1
@@ -4,6 +4,7 @@ import {
44 validateNotEmpty,
55 validatePatq,
66 validateMnemonic,
7+ validateHdPath,
78 validatePoint,
89 validateMaximumPatpByteLength,
910 validateOneOf,
@@ -67,7 +68,7 @@ export const buildCheckboxValidator = mustBe =>
6768 ]);
6869export const buildPassphraseValidator = () => buildValidator([]);
6970// TODO: validate hdpath format
70−export const buildHdPathValidator = () => buildValidator([validateNotEmpty]);
71+export const buildHdPathValidator = () => buildValidator([validateHdPath]);
7172export const buildPointValidator = (size = 4, validators = []) =>
7273 buildValidator([
7374 validateNotEmpty,
src/lib/validators.js+4
@@ -24,6 +24,10 @@ const isHexPrefixed = /^0x/;
2424export const validateMnemonic = v =>
2525 !bip39.validateMnemonic(v) && 'This is not a valid mnemonic.';
2626
27+const isHdPath = /^m(\/[0-9]+'?)*$/;
28+export const validateHdPath = v =>
29+ !isHdPath.test(v) && 'Invalid HD derivation path.';
30+
2731// Checks an empty field
2832export const validateNotEmpty = v =>
2933 (v === undefined || v.length === 0) && 'This field is required.';