【发布时间】:2016-08-05 16:38:25
【问题描述】:
我需要使用 BouncyCastle(版本 1.54)在 Scala 中验证分离的 PKCS#7 签名。签名的数据不包含在 PKCS#7 签名中。
PKCS#7 签名使用单个证书执行。
我根据BouncyCastle的Javadoc写了一个简单的函数来验证签名:
def verify(data: File): Boolean = {
val signedData = new CMSSignedData(new CMSProcessableFile(data), Base64.decode(this.value))
val certStore = signedData.getCertificates
val signers = signedData.getSignerInfos.getSigners
val signer = signers.iterator.next
val certs = certStore.getMatches(signer.getSID)
val cert = certs.iterator.next.asInstanceOf[X509CertificateHolder]
signer.verify(new JcaSimpleSignerInfoVerifierBuilder().setProvider("BC").build(cert))
}
当我编译代码时,我得到以下错误:
[error] LogVerifier.scala:26: type mismatch;
[error] found : org.bouncycastle.cms.SignerId
[error] required: org.bouncycastle.util.Selector[?0]
[error] val certs = certStore.getMatches(signer.getSID)
你能帮我解决这个编译问题吗?
提前致谢!
【问题讨论】:
-
事实上,我认为我的问题与我使用Java类型实现具有泛型类型的Java接口的事实有关。我可能会在这个方向上重新表述我的问题,因为它与 PKCS#7 签名无关(即使这是我想要做的)。
标签: scala compiler-errors bouncycastle pkcs#7