in net/JetBrains.SignatureVerifier/src/Crypt/SignerInfoVerifier.cs [46:103]
public async Task<VerifySignatureResult> VerifyAsync(
[NotNull] SignatureVerificationParams signatureVerificationParams)
{
if (signatureVerificationParams == null)
throw new ArgumentNullException(nameof(signatureVerificationParams));
var certList = _certs.EnumerateMatches(_signer.SignerID).ToList();
if (certList.Count < 1)
{
_logger.Error(Messages.signer_cert_not_found);
return new VerifySignatureResult(VerifySignatureStatus.InvalidSignature)
{ Message = Messages.signer_cert_not_found };
}
var cert = certList[0];
try
{
if (!_signer.Verify(cert))
return new VerifySignatureResult(VerifySignatureStatus.InvalidSignature);
if (signatureVerificationParams.BuildChain)
applySignValidationTime(signatureVerificationParams);
var verifyCounterSignResult =
await verifyCounterSignAsync(signatureVerificationParams);
if (verifyCounterSignResult.NotValid)
return verifyCounterSignResult;
var verifyTimeStampResult = await verifyTimeStampAsync(signatureVerificationParams);
if (verifyTimeStampResult.NotValid)
return verifyTimeStampResult;
var verifyNestedSignsResult = await verifyNestedSignsAsync(signatureVerificationParams);
if (verifyNestedSignsResult.NotValid)
return verifyNestedSignsResult;
if (signatureVerificationParams.BuildChain)
return await buildCertificateChainAsync(cert, _certs, signatureVerificationParams);
return VerifySignatureResult.Valid;
}
catch (CmsException ex)
{
return new VerifySignatureResult(VerifySignatureStatus.InvalidSignature)
{ Message = ex.FlatMessages() };
}
catch (CertificateExpiredException ex)
{
return new VerifySignatureResult(VerifySignatureStatus.InvalidSignature)
{ Message = ex.FlatMessages() };
}
}