public void AddCRL(X509CRL crl)
{
if (crl == null)
{
throw new ArgumentNullException("crl");
}
X509Certificate2 issuer = null;
X509Certificate2Collection certificates = null;
Task.Run( async () => certificates = await Enumerate()).Wait();
foreach (X509Certificate2 certificate in certificates)
{
if (Utils.CompareDistinguishedName(certificate.Subject, crl.Issuer))
{
if (crl.VerifySignature(certificate, false))
{
issuer = certificate;
break;
}
}
}
if (issuer == null)
{
throw new ServiceResultException(StatusCodes.BadCertificateInvalid, "Could not find issuer of the CRL.");
}
StringBuilder builder = new StringBuilder();
builder.Append(m_directory.FullName);
builder.Append(Path.DirectorySeparatorChar + "crl" + Path.DirectorySeparatorChar);
builder.Append(GetFileName(issuer));
builder.Append(".crl");
FileInfo fileInfo = new FileInfo(builder.ToString());
if (!fileInfo.Directory.Exists)
{
fileInfo.Directory.Create();
}
File.WriteAllBytes(fileInfo.FullName, crl.RawData);
}