Ejemplo n.º 1
0
        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);
            }
        }