derivePath method
Implementation
Bip32 derivePath(String path) {
final regex = RegExp(r"^(m\/)?(\d+'?\/)*\d+'?$");
if (!regex.hasMatch(path)) {
throw ArgumentError('Expected BIP32 Path');
}
var splitPath = path.split('/');
if (splitPath[0] == 'm') {
if (parentFingerprint != 0) {
throw ArgumentError('Expected master, got child');
}
splitPath = splitPath.sublist(1);
}
return splitPath.fold(this, (Bip32 prevHd, String indexStr) {
int index;
if (indexStr.substring(indexStr.length - 1) == "'") {
index = int.parse(indexStr.substring(0, indexStr.length - 1));
return prevHd.deriveHardened(index);
} else {
index = int.parse(indexStr);
return prevHd.derive(index);
}
});
}