protected static void CompareCertificates(X509Certificate2 expected, X509Certificate2 actual, bool allowNull)
{
bool equal = true;
if (expected == null)
{
equal = actual == null;
// accept everything if no expected certificate and nulls are allowed.
if (allowNull)
{
equal = true;
}
}
else if (actual == null)
{
equal = allowNull;
}
else if (!Utils.IsEqual(expected.RawData, actual.RawData))
{
equal = false;
}
if (!equal)
{
throw ServiceResultException.Create(
StatusCodes.BadCertificateInvalid,
"Certificate mismatch. Expecting '{0}'/{1},. Received '{2}'/{3}.",
(expected != null) ? expected.Subject : "(null)",
(expected != null) ? expected.Thumbprint : "(null)",
(actual != null) ? actual.Subject : "(null)",
(actual != null) ? actual.Thumbprint : "(null)");
}
}
#endregion