[英]XML Digital Signature validation
我正在嘗試驗證XML簽名。
根據本教程進行的驗證工作正常。
但是我也嘗試了第二種方法。 為了使用Signature類的verify方法進行驗證 ,我從xml文件中提取了簽名和證書,並且執行了以下操作:
public static boolean checkSignedFile(byte[] data, byte[] sigToVerify,
byte[] cert, String algorithm) throws CertificateException,
NoSuchAlgorithmException, InvalidKeyException, SignatureException {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate c = (Certificate) cf
.generateCertificate(new ByteArrayInputStream(cert));
PublicKey pk = c.getPublicKey();
Signature sig;
boolean verifies = false;
sig = Signature.getInstance(algorithm);
sig.initVerify(pk);
sig.update(data);
verifies = sig.verify(sigToVerify);
return verifies;
}
結果是錯誤的。 簽名未驗證。 可能是什么原因呢?
您不能像這樣驗證XMLDsig。 這行不通。 簽名不是通過原始XML計算的。 它必須經過規范化,摘要化等。
您用於data[]
什么? 為正確起見,您幾乎必須重寫XMLDsig庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.