1 回答

TA貢獻1725條經驗 獲得超8個贊
總而言之,gpg 的默認操作模式在簽名時使用非文本模式,而 OpenPGP.js 似乎默認為文本模式(至少以此處使用的方式)。添加--textmode
到 gpg 命令行允許 OpenPGP.js 驗證簽名,從而解決問題。
如果不需要文本模式,也可以從文件中讀取二進制數據:
...
? ? 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);
? ? });
...
添加回答
舉報