feat: updates
This commit is contained in:
45
libraries/deno-teencrypt-mod.ts
Normal file
45
libraries/deno-teencrypt-mod.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
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<Uint8Array> {
|
||||
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();
|
||||
Reference in New Issue
Block a user