ksjsb/tools/jose_encrypt_raw.js
2026-07-30 20:25:56 +08:00

18 lines
823 B
JavaScript

// Jose.$encrypt 任意明文字符串(不做JSON包装). 用于 form-encode payload.
// CLI: node tools/jose_encrypt_raw.js '<plaintext-string>' -> stdout: base64 verifyParam
const { makeBox, primeBox } = require("./jose_encrypt.js");
const vm = require("vm");
const plaintext = process.argv[2];
if (plaintext === undefined) { console.error("usage: jose_encrypt_raw.js '<plaintext>'"); process.exit(2); }
const box = makeBox(); primeBox(box);
box.__done = null; box.__out = null;
vm.runInContext(`__enc(${JSON.stringify(plaintext)});`, box);
const t0 = Date.now();
const iv = setInterval(() => {
if (box.__done !== null || Date.now() - t0 > 5000) {
clearInterval(iv);
if (box.__done !== "ok") { console.error(box.__out || "ERR:timeout"); process.exit(1); }
process.stdout.write(box.__out || "");
}
}, 5);