private void ReportErrorOnRemoteCertificate(IMessagingMessage originalMessage, X509Certificate2 certificate, CertificateErrors error) { string errorCode; string description; EventId id; switch (error) { case CertificateErrors.None: // no error case CertificateErrors.Missing: // if the certificate is missing, it's because we don't know where it came from // and have no idea where to send an error message return; case CertificateErrors.StartDate: errorCode = "transport:expired-certificate"; description = "Invalid start date"; id = EventIds.RemoteCertificateStartDate; break; case CertificateErrors.EndDate: errorCode = "transport:expired-certificate"; description = "Invalid end date"; id = EventIds.RemoteCertificateEndDate; break; case CertificateErrors.Usage: errorCode = "transport:invalid-certificate"; description = "Invalid usage"; id = EventIds.RemoteCertificateUsage; break; case CertificateErrors.Revoked: errorCode = "transport:revoked-certificate"; description = "Certificate has been revoked"; id = EventIds.RemoteCertificateRevocation; break; case CertificateErrors.RevokedUnknown: errorCode = "transport:revoked-certificate"; description = "Unable to determine revocation status"; id = EventIds.RemoteCertificateRevocation; break; default: // since the value is bitcoded errorCode = "transport:invalid-certificate"; description = "More than one error with certificate"; id = EventIds.RemoteCertificate; break; } var additionalInformation = (error != CertificateErrors.Missing) || (error != CertificateErrors.None) ? new[] { certificate.Subject, certificate.Thumbprint } : new string[] { }; Core.ReportErrorToExternalSender(Logger, id, originalMessage, errorCode, description, additionalInformation); }
private void ReportErrorOnLocalCertificate(IMessagingMessage originalMessage, X509Certificate2 certificate, CertificateErrors error, bool removeMessage) { string description; EventId id; switch (error) { case CertificateErrors.None: return; // no error case CertificateErrors.StartDate: description = "Invalid start date"; id = EventIds.LocalCertificateStartDate; break; case CertificateErrors.EndDate: description = "Invalid end date"; id = EventIds.LocalCertificateEndDate; break; case CertificateErrors.Usage: description = "Invalid usage"; id = EventIds.LocalCertificateUsage; break; case CertificateErrors.Revoked: description = "Certificate has been revoked"; id = EventIds.LocalCertificateRevocation; break; case CertificateErrors.RevokedUnknown: description = "Unable to determine revocation status"; id = EventIds.LocalCertificateRevocation; break; case CertificateErrors.Missing: description = "Certificate is missing"; id = EventIds.LocalCertificate; break; default: // since the value is bitcoded description = "More than one error with certificate"; id = EventIds.LocalCertificate; break; } Logger.LogError(id, null, "Description: {Description} Subject: {Subject} Thumbprint: {Thumbprint}", description, certificate?.Subject, certificate?.Thumbprint); if (removeMessage) { ServiceBusCore.RemoveMessageFromQueueAfterError(Logger, originalMessage); } }