in jvm/src/main/kotlin/com/jetbrains/signatureverifier/crypt/SignerInfoVerifier.kt [54:91]
suspend fun VerifyAsync(@NotNull signatureVerificationParams: SignatureVerificationParams): VerifySignatureResult {
val certList = ArrayList(_certs.getMatches(_signer.sID as Selector<X509CertificateHolder>))
if (certList.isEmpty()) {
_logger.Error(Messages.signer_cert_not_found)
return VerifySignatureResult(VerifySignatureStatus.InvalidSignature, Messages.signer_cert_not_found)
}
val cert = certList[0] as X509CertificateHolder
try {
val verifier = JcaSignerInfoVerifierBuilder(JcaDigestCalculatorProviderBuilder().build()).build(cert)
if (!_signer.verify(verifier))
return VerifySignatureResult(VerifySignatureStatus.InvalidSignature)
if (signatureVerificationParams.BuildChain)
applySignValidationTime(signatureVerificationParams)
val verifyCounterSignResult = verifyCounterSignAsync(signatureVerificationParams)
if (verifyCounterSignResult.NotValid)
return verifyCounterSignResult
val verifyTimeStampResult = verifyTimeStampAsync(signatureVerificationParams)
if (verifyTimeStampResult.NotValid)
return verifyTimeStampResult
val verifyNestedSignsResult = verifyNestedSignsAsync(signatureVerificationParams)
if (verifyNestedSignsResult.NotValid)
return verifyNestedSignsResult
if (signatureVerificationParams.BuildChain)
return buildCertificateChainAsync(cert, _certs, signatureVerificationParams)
return VerifySignatureResult.Valid
} catch (ex: CMSException) {
return VerifySignatureResult(VerifySignatureStatus.InvalidSignature, ex.FlatMessages())
} catch (ex: CertificateExpiredException) {
return VerifySignatureResult(VerifySignatureStatus.InvalidSignature, ex.FlatMessages())
}
}