2022-02-04 14:12:00 +11:00
|
|
|
import { keccak256, Message } from "js-sha3";
|
2022-01-13 11:33:26 +11:00
|
|
|
|
2022-02-14 10:50:02 +11:00
|
|
|
/**
|
|
|
|
|
* Convert input to a byte array.
|
|
|
|
|
*/
|
|
|
|
|
export function hexToBytes(hex: string | Uint8Array): Uint8Array {
|
|
|
|
|
if (typeof hex === "string") {
|
|
|
|
|
const _hex = hex.replace(/^0x/i, "");
|
|
|
|
|
const bytes = [];
|
|
|
|
|
for (let c = 0; c < _hex.length; c += 2)
|
|
|
|
|
bytes.push(parseInt(_hex.substring(c, c + 2), 16));
|
|
|
|
|
|
|
|
|
|
return new Uint8Array(bytes);
|
|
|
|
|
}
|
|
|
|
|
return hex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Convert byte array to hex string (no `0x` prefix).
|
|
|
|
|
*/
|
|
|
|
|
export function bytesToHex(bytes: Uint8Array): string {
|
|
|
|
|
const hex = [];
|
|
|
|
|
for (let i = 0; i < bytes.length; i++) {
|
|
|
|
|
const current = bytes[i] < 0 ? bytes[i] + 256 : bytes[i];
|
|
|
|
|
hex.push((current >>> 4).toString(16));
|
|
|
|
|
hex.push((current & 0xf).toString(16));
|
|
|
|
|
}
|
|
|
|
|
return hex.join("");
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-11 17:27:15 +11:00
|
|
|
/**
|
|
|
|
|
* Return Keccak-256 of the input.
|
|
|
|
|
*/
|
2022-02-16 14:08:48 +11:00
|
|
|
export function keccak256Buf(message: Message): Uint8Array {
|
|
|
|
|
return new Uint8Array(keccak256.arrayBuffer(message));
|
2022-01-13 11:33:26 +11:00
|
|
|
}
|