@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
JavaScript
;
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;