PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-core/dist/src/api
Просмотр файла: bip32path.js
"use strict";
/**
* @prettier
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.sanitizeLegacyPath = sanitizeLegacyPath;
/**
* BitGoJS includes some custom hand-rolled bip32 derivation logic in `bitcoin.ts`, which sadly
* has numerous bugs.
*
* One of the effects is that the methods accept invalid bip32 paths:
* - the `m` prefix is ignored ('m/0' === '0')
* - path components that cannot be parsed as base-10 numbers are mapped to `0` ('0/x' === '0/0')
* - path components with trailing characters after numerals are accepted, trailing characters
* are ignored ('1x' === '1')
*
* This probably does not cover everything but it should cover most bugs encountered in our code.
*
* This method attempts to convert a "legacy path", which may be invalid, to a standard bip32 path:
* meaning the result should be equivalent to the input path when passed to either our custom
* derivation log or when passed to a standard bip32 library.
*
* @param path - legacy path
* @return string - somewhat sanitized path that can be passed to standard bip32 libraries
*/
function sanitizeLegacyPath(path) {
const parts = path
.split('/')
.filter((p) => p !== '')
.filter((p, i) => i !== 0 || p !== 'm')
.map((p) => {
const hardened = p.slice(-1) === "'";
const v = parseInt(p.slice(0, hardened ? -1 : undefined), 10);
if (Number.isNaN(v)) {
return '0';
}
return String(v) + (hardened ? "'" : '');
});
if (parts.length === 0) {
throw new Error(`empty path`);
}
return parts.join('/');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzJwYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9iaXAzMnBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOztBQXFCSCxnREFrQkM7QUFyQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLElBQVk7SUFDN0MsTUFBTSxLQUFLLEdBQWEsSUFBSTtTQUN6QixLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztTQUN0QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNULE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDckMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0lBRUwsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuXG4vKipcbiAqIEJpdEdvSlMgaW5jbHVkZXMgc29tZSBjdXN0b20gaGFuZC1yb2xsZWQgYmlwMzIgZGVyaXZhdGlvbiBsb2dpYyBpbiBgYml0Y29pbi50c2AsIHdoaWNoIHNhZGx5XG4gKiBoYXMgbnVtZXJvdXMgYnVncy5cbiAqXG4gKiBPbmUgb2YgdGhlIGVmZmVjdHMgaXMgdGhhdCB0aGUgbWV0aG9kcyBhY2NlcHQgaW52YWxpZCBiaXAzMiBwYXRoczpcbiAqIC0gdGhlIGBtYCBwcmVmaXggaXMgaWdub3JlZCAoJ20vMCcgPT09ICcwJylcbiAqIC0gcGF0aCBjb21wb25lbnRzIHRoYXQgY2Fubm90IGJlIHBhcnNlZCBhcyBiYXNlLTEwIG51bWJlcnMgYXJlIG1hcHBlZCB0byBgMGAgKCcwL3gnID09PSAnMC8wJylcbiAqIC0gcGF0aCBjb21wb25lbnRzIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyBhZnRlciBudW1lcmFscyBhcmUgYWNjZXB0ZWQsIHRyYWlsaW5nIGNoYXJhY3RlcnNcbiAqICAgYXJlIGlnbm9yZWQgKCcxeCcgPT09ICcxJylcbiAqXG4gKiBUaGlzIHByb2JhYmx5IGRvZXMgbm90IGNvdmVyIGV2ZXJ5dGhpbmcgYnV0IGl0IHNob3VsZCBjb3ZlciBtb3N0IGJ1Z3MgZW5jb3VudGVyZWQgaW4gb3VyIGNvZGUuXG4gKlxuICogVGhpcyBtZXRob2QgYXR0ZW1wdHMgdG8gY29udmVydCBhIFwibGVnYWN5IHBhdGhcIiwgd2hpY2ggbWF5IGJlIGludmFsaWQsIHRvIGEgc3RhbmRhcmQgYmlwMzIgcGF0aDpcbiAqIG1lYW5pbmcgdGhlIHJlc3VsdCBzaG91bGQgYmUgZXF1aXZhbGVudCB0byB0aGUgaW5wdXQgcGF0aCB3aGVuIHBhc3NlZCB0byBlaXRoZXIgb3VyIGN1c3RvbVxuICogZGVyaXZhdGlvbiBsb2cgb3Igd2hlbiBwYXNzZWQgdG8gYSBzdGFuZGFyZCBiaXAzMiBsaWJyYXJ5LlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gbGVnYWN5IHBhdGhcbiAqIEByZXR1cm4gc3RyaW5nIC0gc29tZXdoYXQgc2FuaXRpemVkIHBhdGggdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHN0YW5kYXJkIGJpcDMyIGxpYnJhcmllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVMZWdhY3lQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IHBhdGhcbiAgICAuc3BsaXQoJy8nKVxuICAgIC5maWx0ZXIoKHApID0+IHAgIT09ICcnKVxuICAgIC5maWx0ZXIoKHAsIGkpID0+IGkgIT09IDAgfHwgcCAhPT0gJ20nKVxuICAgIC5tYXAoKHApID0+IHtcbiAgICAgIGNvbnN0IGhhcmRlbmVkID0gcC5zbGljZSgtMSkgPT09IFwiJ1wiO1xuICAgICAgY29uc3QgdiA9IHBhcnNlSW50KHAuc2xpY2UoMCwgaGFyZGVuZWQgPyAtMSA6IHVuZGVmaW5lZCksIDEwKTtcbiAgICAgIGlmIChOdW1iZXIuaXNOYU4odikpIHtcbiAgICAgICAgcmV0dXJuICcwJztcbiAgICAgIH1cbiAgICAgIHJldHVybiBTdHJpbmcodikgKyAoaGFyZGVuZWQgPyBcIidcIiA6ICcnKTtcbiAgICB9KTtcblxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBlbXB0eSBwYXRoYCk7XG4gIH1cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJy8nKTtcbn1cbiJdfQ==Выполнить команду
Для локальной разработки. Не используйте в интернете!