1
我正在開發一個簡單的Java代碼,使用BouncyCastle v1.51打開PGP公鑰並驗證其中包含的簽名。 目前,我可以加載公鑰並遍歷所有簽名。但是,即使我使用與生成簽名的私鑰相對應的公鑰來檢驗簽名,驗證總是返回「false」。PGP,驗證證書上的簽名
這是我的代碼:
try {
PGPPublicKey pkey = PGPEncryptionUtils.readPublicKey(new FileInputStream(new File(HOME_DIR + "to_verify")));
Iterator it = pkey.getSignatures();
PGPPublicKey signing_key = PGPEncryptionUtils.readPublicKey(
new FileInputStream(new File(HOME_DIR + "my_public_key")));
while (it.hasNext()) {
PGPSignature sig = (PGPSignature) it.next();
sig.init(new JcaPGPContentVerifierBuilderProvider().setProvider("BC"), signing_key);
// Here I'd expect to see at least a "true".
println(sig.verify());
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (PGPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
爲readPublicKey
的代碼是從這裏取:https://github.com/damico/OpenPgp-BounceCastle-Example/blob/master/src/org/jdamico/bc/openpgp/utils/PgpHelper.java。
我在做什麼錯? 謝謝!
你正試圖驗證一種特殊的簽名,認證。 BouncyCastla有一個[專用於驗證認證的功能](https://www.bouncycastle.org/docs/pgdocs1.5on/org/bouncycastle/openpgp/PGPSignature.html#verifyCertification(org.bouncycastle.openpgp.PGPPublicKey)),但我沒有任何使用它的經驗。你可能想看看這個。 –