[英]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.