UNPKG

@harmoniclabs/plu-ts-onchain

Version:

An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript

48 lines (47 loc) 1.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.irHashFromHex = exports.irHashToHex = exports.equalIrHash = exports.isIRHash = exports.hashIrData = void 0; var crypto_1 = require("@harmoniclabs/crypto"); var uint8array_utils_1 = require("@harmoniclabs/uint8array-utils"); function hashIrData(data) { var hash8 = (0, crypto_1.blake2b_128)(data); return new Uint32Array(hash8.buffer); } exports.hashIrData = hashIrData; function isIRHash(hash) { return ( // most of the time we are checking an undefined value // we just shortcut here hash !== undefined && hash instanceof Uint32Array && hash.length === 4); } exports.isIRHash = isIRHash; function equalIrHash(a, b) { return ( // a instanceof Uint32Array && // b instanceof Uint32Array && // a.length === 4 && // b.length === 4 && a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]); } exports.equalIrHash = equalIrHash; function irHashToHex(hash) { return (0, uint8array_utils_1.toHex)(new Uint8Array(hash.buffer)); } exports.irHashToHex = irHashToHex; function irHashFromHex(hex) { if (hex.length !== 32 && !/^[0-9a-fA-F]$/.test(hex)) { throw new Error("invalid hex string for IRHash"); } return new Uint32Array([ parseInt(hex.slice(0, 8), 16), parseInt(hex.slice(8, 16), 16), parseInt(hex.slice(16, 24), 16), parseInt(hex.slice(24, 32), 16) ]); } exports.irHashFromHex = irHashFromHex;