1 回答
TA贡献1725条经验 获得超7个赞
总而言之,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);
});
...
添加回答
举报