UNPKG

@fioprotocol/fiojs

Version:

FioJS is a Utility SDK for packing, signing and encryption functionality for the FIO blockchain. It is used by the FIO TypeScript SDK

92 lines 3.11 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.accountHash = void 0; /** * @module AccountName */ var bs58 = __importStar(require("bs58")); var Long = __importStar(require("long")); var PublicKey = require("./ecc").PublicKey; /** * Hashes a public key to a valid FIOIO account name. * * @arg {string} pubkey * @return {string} valid FIOIO account name */ function accountHash(pubkey) { if (!PublicKey.isValid(pubkey, "FIO")) { throw new TypeError("invalid public key"); } pubkey = pubkey.substring("FIO".length, pubkey.length); var decoded58 = bs58.decode(pubkey); var long = shortenKey(decoded58); var output = stringFromUInt64T(long); return output; } exports.accountHash = accountHash; function shortenKey(key) { var res = Long.fromValue(0, true); var temp = Long.fromValue(0, true); var toShift = 0; var i = 1; var len = 0; while (len <= 12) { // assert(i < 33, "Means the key has > 20 bytes with trailing zeroes...") temp = Long.fromValue(key[i], true).and(len == 12 ? 0x0f : 0x1f); if (temp == 0) { i += 1; continue; } if (len == 12) { toShift = 0; } else { toShift = (5 * (12 - len) - 1); } temp = Long.fromValue(temp, true).shiftLeft(toShift); res = Long.fromValue(res, true).or(temp); len += 1; i += 1; } return res; } function stringFromUInt64T(temp) { var charmap = ".12345abcdefghijklmnopqrstuvwxyz".split(""); var str = new Array(13); str[12] = charmap[Long.fromValue(temp, true).and(0x0f)]; temp = Long.fromValue(temp, true).shiftRight(4); for (var i = 1; i <= 12; i++) { var c = charmap[Long.fromValue(temp, true).and(0x1f)]; str[12 - i] = c; temp = Long.fromValue(temp, true).shiftRight(5); } var result = str.join(""); if (result.length > 12) { result = result.substring(0, 12); } return result; } //# sourceMappingURL=accountname.js.map