如何使用另一个证书验证一个证书

时间:2014-09-30 09:19:03

标签: java encryption certificate x509certificate x509

我有两个x509Certificates

X509Certificate a;
X509Certificate b;

我想用a的公钥验证b的签名,其中a是b的发行者。

到目前为止我所拥有的是:

 public static boolean verify(String algorithm, byte[] content, byte[] signature, X509Certificate certificate) {
  try {
     Signature s = Signature.getInstance(algorithm, PROVIDER);
     s.initVerify(certificate);
     s.update(content);
     return s.verify(signature);
  } catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException e) {
     throw new IllegalArgumentException(e);
  }

}

我调用方法:

 verify(a.getSigAlgName(), a.getSignature(), b.getSignature(), b);

但是这总是假的???

请问,请帮助我理解上面方法顶点(..)返回总是错误的原因。

编辑:

X509Certificate有方法验证(公钥)。

1 个答案:

答案 0 :(得分:1)

  

想用a的公钥解密b的内容:

不,你不会。证书未加密。

您真正想要做的是验证证书,该证书通过其公钥完成,可以从证书本身或从同一公钥的第二个来源获得。< / p>

使用不同证书的公钥进行验证并不合理。

在任何情况下,X509Certificate都已包含足够的verify()方法。