VerifyCertificateDelegate Delegate (original) (raw)

Syntax

Parameters

sender

The source of the event.

e

Additional event data that contains event data.

Example

using Leadtools; using Leadtools.Dicom.Scu; using Leadtools.Dicom.Scu.Common; using Leadtools.Dicom; using Leadtools.Dicom.Common.DataTypes; using Leadtools.Dicom.Common.DataTypes.Status; public void MoveSeriesSecure() { DicomEngine.Startup(); DicomNet.Startup(); QueryRetrieveScu retrieveSeriesSecure = new QueryRetrieveScu(); FindQuery query = new FindQuery(); DicomScp scp = new DicomScp(); // // Change these parameters to reflect the calling AETitle. // retrieveSeriesSecure.AETitle = "T20_CLIENT64"; retrieveSeriesSecure.HostPort = 1030; retrieveSeriesSecure.HostAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork); retrieveSeriesSecure.UseSecureHost = true; // SCU host is secure retrieveSeriesSecure.SecureHostSettings = new DicomOpenSslContextCreationSettings(DicomSslMethodType.SslV23, @"C:\Certificates\ca.pem", DicomOpenSslVerificationFlags.None, 9, DicomOpenSslOptionsFlags.AllBugWorkarounds); // // Change these parameters to reflect the called AETitle (server). // scp.AETitle = "L20_PACS_SCP64"; scp.Port = 534; scp.Timeout = 60; scp.PeerAddress = IPAddress.Parse("192.168.5.102"); scp.Secure = false; // SCP is unsecure retrieveSeriesSecure.BeforeCMove += new BeforeCMoveDelegate(retrieveSeriesSecure_BeforeCMove); retrieveSeriesSecure.Moved += new MovedDelegate(retrieveSeriesSecure_Moved); retrieveSeriesSecure.AfterCMove += new AfterCMoveDelegate(retrieveSeriesSecure_AfterCMove); retrieveSeriesSecure.HostReady += RetrieveSeriesSecure_HostReady; retrieveSeriesSecure.AfterSecureLinkReady += RetrieveSeriesSecure_AfterSecureLinkReady; retrieveSeriesSecure.Move(scp, string.Empty, "1.2.840.114257.3.6.5.41964868", "1.2.840.114257.3.6.5.5.4214471"); retrieveSeriesSecure.VerifyCertificate += RetrieveSeriesSecure_VerifyCertificate; DicomNet.Shutdown(); DicomEngine.Shutdown(); } private void RetrieveSeriesSecure_VerifyCertificate(object sender, VerifyCertificateEventArgs e) { if (e != null) { Console.WriteLine("VerifyCertificate\n", e.CertificateString); if (e.ErrorException.Code != DicomSecurityCertificateExceptionCode.Success) { Console.WriteLine(e.ErrorException.Message); } } } private void RetrieveSeriesSecure_AfterSecureLinkReady(object sender, AfterSecureLinkReadyEventArgs e) { DicomNet net = (DicomNet)sender; if (net != null) { if (e.Error != DicomExceptionCode.Success) { ClientSecureLinkReadyException exception = new ClientSecureLinkReadyException("Secure handshake (TLS) failed.", e.Error); Console.WriteLine("Secure handshake (TLS) failed: code{0}", exception.Code); throw exception; } } } private void RetrieveSeriesSecure_HostReady(object sender, HostReadyEventArgs e) { DicomConnection host = e.ScpHost; if (host != null) { Console.WriteLine("HostReady: Host AETitle:{0} Host Port:{1}", e.ScpHost.AETitle, e.ScpHost.HostPort); if (host.SecurityMode == DicomNetSecurityMode.Tls) { host.PrivateKeyPassword += Host_PrivateKeyPassword; host.SetTlsClientCertificate(@"C:\Certificates\client.pem", DicomTlsCertificateType.Pem, @"C:\Certificates\client.pem"); host.PrivateKeyPassword -= Host_PrivateKeyPassword; host.SetTlsCipherSuiteByIndex(0, 0); host.SetTlsCipherSuiteByIndex(0, DicomTlsCipherSuiteType.DheRsaWithDesCbcSha); host.SetTlsCipherSuiteByIndex(1, DicomTlsCipherSuiteType.DheRsaWith3DesEdeCbcSha); host.SetTlsCipherSuiteByIndex(2, DicomTlsCipherSuiteType.DheRsaAes256Sha); host.SetTlsCipherSuiteByIndex(3, DicomTlsCipherSuiteType.RsaWithAes128CbcSha); host.SetTlsCipherSuiteByIndex(4, DicomTlsCipherSuiteType.RsaWith3DesEdeCbcSha); host.SetTlsCipherSuiteByIndex(5, DicomTlsCipherSuiteType.DheRsaWithAes128GcmSha256); host.SetTlsCipherSuiteByIndex(6, DicomTlsCipherSuiteType.EcdheRsaWithAes128GcmSha256); host.SetTlsCipherSuiteByIndex(7, DicomTlsCipherSuiteType.DheRsaWithAes256GcmSha384); host.SetTlsCipherSuiteByIndex(8, DicomTlsCipherSuiteType.EcdheRsaWithAes256GcmSha384); } } } private void Host_PrivateKeyPassword(object sender, PrivateKeyPasswordEventArgs e) { e.PrivateKeyPassword = "test"; } void retrieveSeriesSecure_BeforeCMove(object sender, BeforeCMoveEventArgs e) { Console.WriteLine("Before CMove"); } void retrieveSeriesSecure_Moved(object sender, MovedEventArgs e) { Console.WriteLine(e.Patient.Name.Full); Console.WriteLine(e.Study.AccessionNumber); Console.WriteLine(e.Series.Number); Console.WriteLine(e.Instance.SOPInstanceUID); Console.WriteLine("=========================================="); } void retrieveSeriesSecure_AfterCMove(object sender, AfterCMoveEventArgs e) { Console.WriteLine("After CMove"); Console.WriteLine("\t{0} Completed", e.Completed); Console.WriteLine("\t{0} Failed", e.Failed); Console.WriteLine("\t{0} Warning", e.Warning); Console.WriteLine("\tStatus: {0}", e.Status); if (e.Status != DicomCommandStatusType.Success) { string statusAllString = e.StatusAll.ToString(StatusFormatFlags.IgnoreStatus, "\n", "\t"); Console.WriteLine(statusAllString); } }