18 lines
823 B
JavaScript
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);
|