mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2025-02-22 23:08:07 +01:00
75 lines
No EOL
2.6 KiB
JavaScript
75 lines
No EOL
2.6 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.decodeBc32Data = exports.encodeBc32Data = exports.encodeSegwitAddress = exports.decodeSegwitAddress = exports.Bech32Version = void 0;
|
|
var bech32_1 = __importDefault(require("./bech32"));
|
|
var Bech32Version;
|
|
(function (Bech32Version) {
|
|
Bech32Version[Bech32Version["Origin"] = 1] = "Origin";
|
|
Bech32Version[Bech32Version["bis"] = 2] = "bis";
|
|
})(Bech32Version = exports.Bech32Version || (exports.Bech32Version = {}));
|
|
var convertBits = function (data, fromBits, toBits, pad) {
|
|
var acc = 0;
|
|
var bits = 0;
|
|
var ret = [];
|
|
var maxv = (1 << toBits) - 1;
|
|
for (var p = 0; p < data.length; ++p) {
|
|
var value = data[p];
|
|
if (value < 0 || value >> fromBits !== 0) {
|
|
return null;
|
|
}
|
|
acc = (acc << fromBits) | value;
|
|
bits += fromBits;
|
|
while (bits >= toBits) {
|
|
bits -= toBits;
|
|
ret.push((acc >> bits) & maxv);
|
|
}
|
|
}
|
|
if (pad) {
|
|
if (bits > 0) {
|
|
ret.push((acc << (toBits - bits)) & maxv);
|
|
}
|
|
}
|
|
else if (bits >= fromBits || (acc << (toBits - bits)) & maxv) {
|
|
return null;
|
|
}
|
|
return ret;
|
|
};
|
|
exports.decodeSegwitAddress = function (hrp, addr) {
|
|
var dec = bech32_1.default.decode(addr);
|
|
if (dec === null || dec.hrp !== hrp || dec.data.length < 1 || dec.data[0] > 16) {
|
|
return null;
|
|
}
|
|
var res = convertBits(Uint8Array.from(dec.data.slice(1)), 5, 8, false);
|
|
if (res === null || res.length < 2 || res.length > 40) {
|
|
return null;
|
|
}
|
|
if (dec.data[0] === 0 && res.length !== 20 && res.length !== 32) {
|
|
return null;
|
|
}
|
|
return { version: dec.data[0], program: res };
|
|
};
|
|
exports.encodeSegwitAddress = function (hrp, version, program) {
|
|
var ret = bech32_1.default.encode(hrp, [version].concat(convertBits(program, 8, 5, true)), Bech32Version.Origin);
|
|
if (exports.decodeSegwitAddress(hrp, ret) === null) {
|
|
return null;
|
|
}
|
|
return ret;
|
|
};
|
|
exports.encodeBc32Data = function (hex) {
|
|
var data = Buffer.from(hex, 'hex');
|
|
return bech32_1.default.encode(null, convertBits(data, 8, 5, true), Bech32Version.bis);
|
|
};
|
|
exports.decodeBc32Data = function (data) {
|
|
var result = bech32_1.default.decode(data);
|
|
if (result) {
|
|
var res = convertBits(Buffer.from(result.data), 5, 8, false);
|
|
return Buffer.from(res).toString('hex');
|
|
}
|
|
else {
|
|
return null;
|
|
}
|
|
};
|
|
//# sourceMappingURL=index.js.map
|