UNPKG

@bcpros/crypto-wallet-core

Version:

A multi-currency support library for address derivation, private key creation, and transaction creation

53 lines 2.15 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.XrpValidation = void 0; var bitcore_lib_1 = __importDefault(require("@bcpros/bitcore-lib")); var base_x_1 = __importDefault(require("base-x")); var RIPPLE_ALPHABET = 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz'; var XrpValidation = (function () { function XrpValidation() { } XrpValidation.prototype.validateAddress = function (_network, address) { var RippleAddressRegex = new RegExp(/^r[rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz]{27,35}$/); if (!address.match(RippleAddressRegex)) { return false; } var base58 = (0, base_x_1.default)(RIPPLE_ALPHABET); var buffer = new Buffer(base58.decode(address)); var prefix = buffer.slice(0, 1); var data = buffer.slice(1, -4); var hash = Buffer.concat([prefix, data]); hash = bitcore_lib_1.default.crypto.Hash.sha256(hash); hash = bitcore_lib_1.default.crypto.Hash.sha256(hash); var checksum = buffer.slice(-4).reduce(function (acc, check, index) { if (check !== hash[index]) { return 0; } else return acc || 1; }); if (checksum === 0) { return false; } return true; }; XrpValidation.prototype.validateUri = function (addressUri) { if (!addressUri) { return false; } var address = this.extractAddress(addressUri); var ripplePrefix = /ripple/i.exec(addressUri); return !!ripplePrefix && this.validateAddress('livenet', address); }; XrpValidation.prototype.extractAddress = function (data) { var prefix = /^[a-z]+:/i; var params = /([\?\&](amount|dt)=(\d+([\,\.]\d+)?))+/i; return data.replace(prefix, '').replace(params, ''); }; return XrpValidation; }()); exports.XrpValidation = XrpValidation; //# sourceMappingURL=index.js.map