@ledgerhq/hw-app-algorand
Version:
Ledger Hardware Wallet Algorand Application API
24 lines • 866 B
JavaScript
import nacl from "tweetnacl";
import base32 from "hi-base32";
import sha512 from "js-sha512";
const PUBLIC_KEY_LENGTH = nacl.sign.publicKeyLength;
const ALGORAND_ADDRESS_LENGTH = 58;
const ALGORAND_CHECKSUM_BYTE_LENGTH = 4;
export const encodeAddress = (address) => {
const checksum = sha512.sha512_256
.array(address)
.slice(PUBLIC_KEY_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, PUBLIC_KEY_LENGTH);
const addr = base32.encode(concatArrays(address, checksum));
return addr.toString().slice(0, ALGORAND_ADDRESS_LENGTH);
};
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