suspend fun VerifyAsync()

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())
    }
  }