1 回答

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
總而言之,gpg 的默認(rèn)操作模式在簽名時(shí)使用非文本模式,而 OpenPGP.js 似乎默認(rèn)為文本模式(至少以此處使用的方式)。添加--textmode
到 gpg 命令行允許 OpenPGP.js 驗(yàn)證簽名,從而解決問題。
如果不需要文本模式,也可以從文件中讀取二進(jìn)制數(shù)據(jù):
...
? ? let msg_data = fs.readFileSync(path + "index.html", null);
? ? let sig_data = fs.readFileSync(path + "index.html.sig", null);
? ? let pubkey_data = fs.readFileSync(path + "pubkey.asc", 'utf8');
? ? let msg = await openpgp.message.fromBinary(msg_data);
? ? let sig = await openpgp.signature.read(sig_data);
? ? let pubkey = await openpgp.key.readArmored(pubkey_data);
? ? openpgp.verify({
? ? ? ? message: msg,
? ? ? ? signature: sig,
? ? ? ? publicKeys: pubkey.keys
? ? }).then(function(verified) {
? ? ? ? console.log(verified);
? ? });
...
添加回答
舉報(bào)