@ledgerhq/hw-app-algorand
Version:
Ledger Hardware Wallet Algorand Application API
31 lines • 1.27 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.encodeAddress = void 0;
const tweetnacl_1 = __importDefault(require("tweetnacl"));
const hi_base32_1 = __importDefault(require("hi-base32"));
const js_sha512_1 = __importDefault(require("js-sha512"));
const PUBLIC_KEY_LENGTH = tweetnacl_1.default.sign.publicKeyLength;
const ALGORAND_ADDRESS_LENGTH = 58;
const ALGORAND_CHECKSUM_BYTE_LENGTH = 4;
const encodeAddress = (address) => {
const checksum = js_sha512_1.default.sha512_256
.array(address)
.slice(PUBLIC_KEY_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, PUBLIC_KEY_LENGTH);
const addr = hi_base32_1.default.encode(concatArrays(address, checksum));
return addr.toString().slice(0, ALGORAND_ADDRESS_LENGTH);
};
exports.encodeAddress = encodeAddress;
function concatArrays(...arrs) {
const size = arrs.reduce((sum, arr) => sum + arr.length, 0);
const c = new Uint8Array(size);
let offset = 0;
for (let i = 0; i < arrs.length; i++) {
c.set(arrs[i], offset);
offset += arrs[i].length;
}
return c;
}
//# sourceMappingURL=utils.js.map