mirror of
https://github.com/pezkuwichain/pezkuwi-common.git
synced 2026-04-22 05:38:03 +00:00
27 lines
1.4 KiB
JavaScript
27 lines
1.4 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.encodeAddress = encodeAddress;
|
|
const util_1 = require("@pezkuwi/util");
|
|
const index_js_1 = require("../base58/index.js");
|
|
const decode_js_1 = require("./decode.js");
|
|
const defaults_js_1 = require("./defaults.js");
|
|
const sshash_js_1 = require("./sshash.js");
|
|
function encodeAddress(key, ss58Format = defaults_js_1.defaults.prefix) {
|
|
// decode it, this means we can re-encode an address
|
|
const u8a = (0, decode_js_1.decodeAddress)(key);
|
|
if ((ss58Format < 0) || (ss58Format > 16383 && !ss58Exceptions.includes(ss58Format)) || [46, 47].includes(ss58Format)) {
|
|
throw new Error('Out of range ss58Format specified');
|
|
}
|
|
else if (!defaults_js_1.defaults.allowedDecodedLengths.includes(u8a.length)) {
|
|
throw new Error(`Expected a valid key to convert, with length ${defaults_js_1.defaults.allowedDecodedLengths.join(', ')}`);
|
|
}
|
|
const input = (0, util_1.u8aConcat)(ss58Format < 64
|
|
? [ss58Format]
|
|
: [
|
|
((ss58Format & 0b0000_0000_1111_1100) >> 2) | 0b0100_0000,
|
|
(ss58Format >> 8) | ((ss58Format & 0b0000_0000_0000_0011) << 6)
|
|
], u8a);
|
|
return (0, index_js_1.base58Encode)((0, util_1.u8aConcat)(input, (0, sshash_js_1.sshash)(input).subarray(0, [32, 33].includes(u8a.length) ? 2 : 1)));
|
|
}
|
|
const ss58Exceptions = [29972];
|