import { getHomeDirOrDie, hexStringToUint8Array, uint8ArrayToHexString, } from "https://global.hatter.ink/script/get/@6/deno-commons-mod.ts"; const COMMONS_LOCAL_ENCRYPT_TINY_ENCRYPT_MASTER_KEY_FILE = getHomeDirOrDie() + "/.cache/commons-local-encrypt-tiny-encrypt-master-key"; interface TinyEncryptSimpleDecryptObject { code: number; result: string; } async function loadMasterKey(): Promise { const masterKeyContent = Deno.readTextFileSync( COMMONS_LOCAL_ENCRYPT_TINY_ENCRYPT_MASTER_KEY_FILE, ); const command = new Deno.Command("tiny-encrypt", { args: ["simple-decrypt", "--value", masterKeyContent], }); const { code, stdout, stderr } = command.outputSync(); if (code !== 0) { console.error(`Execute command tiny-encrypt simple-decrypt failed: code: ${code} stdout: ${new TextDecoder().decode(stdout)} stderr: ${new TextDecoder().decode(stderr)}`); throw new Error(`Decrypt master key failed, code: ${code}`); } const tinyEncryptSimpleDecryptObject = JSON.parse( new TextDecoder().decode(stdout), ) as TinyEncryptSimpleDecryptObject; if (tinyEncryptSimpleDecryptObject.code !== 0) { throw new Error( `Decrypt master key failed, response code: ${tinyEncryptSimpleDecryptObject.code}`, ); } return hexStringToUint8Array(tinyEncryptSimpleDecryptObject.result); } async function main() { // TODO ... console.log(uint8ArrayToHexString(await loadMasterKey())); } await main();