An abstract class that specifies Transport Layer Security (TLS) settings used by an SCU to connect securely to an SCP.
public abstract class BaseClient Public MustInherit Class BaseClient public:ref class BaseClient abstract
The following SCU classes derive from the BaseClient abstract class, so all members of the BaseClient class are included in these classes:
Any of the above SCU classes can connect to an SCP that is accepting secure Transport Layer Security (TLS) by specifying the following properties:
This example uses all members from the BaseClient to connect securely (TLS) to an SCP that is accepting secure connections.
using LeadtoolsExamples.Common;using Leadtools;using Leadtools.Codecs;using Leadtools.Dicom;using Leadtools.Dicom.Scu.Common;using Leadtools.ImageProcessing;using Leadtools.Dicom.AddIn.Common;using Leadtools.Dicom.Scu;using Leadtools.Medical.Workstation.Client;using Leadtools.Medical.Workstation.Client.Local;using Leadtools.Medical.Workstation.Client.Pacs;// public void QueryPACSSecure(){// Leadtools.Examples.Support.SetLicense();AeInfo clientInfo = new AeInfo();DicomScp scpInfo = new DicomScp();clientInfo.Address = Dns.GetHostName(); //local machineclientInfo.AETitle = "L20_CLIENT64";clientInfo.Port = 1030;scpInfo.AETitle = "L20_PACS_SCP64";scpInfo.PeerAddress = IPAddress.Parse("192.168.5.101");scpInfo.Port = 534;scpInfo.Timeout = 30;scpInfo.Secure = true;PacsQueryClient client = new PacsQueryClient(clientInfo, scpInfo);client.EnableLog = true;client.LogFileName = Path.Combine(LEAD_VARS.ImagesDir, "DicomLog.txt");// Set client security settingsDicomOpenSslContextCreationSettings settings = new DicomOpenSslContextCreationSettings(DicomSslMethodType.SslV23,Path.Combine(LEAD_VARS.CertificatesDir, "ca.pem"),DicomOpenSslVerificationFlags.None,9,DicomOpenSslOptionsFlags.AllBugWorkarounds);client.OpenSslContextCreationSettings = settings;client.ClientCertificate = Path.Combine(LEAD_VARS.CertificatesDir, "client.pem");client.ClientCertificateKey = Path.Combine(LEAD_VARS.CertificatesDir, "client.pem");client.ClientCertificateKeyPassword = "test";client.ClientCertificateType = DicomTlsCertificateType.Pem;client.CipherSuiteList.Add(DicomTlsCipherSuiteType.EcdheRsaWithAes128GcmSha256);PerformClientQuery(client);}public void PerformClientQuery(QueryClient client){FindQuery studiesQuery = new FindQuery();DicomDataSet[] studies = client.FindStudies(studiesQuery);if (studies.Length > 0){DicomDataSet study = studies[0];FindQuery seriesQuery = new FindQuery();seriesQuery.StudyInstanceUID = study.GetValue<string>(DicomTag.StudyInstanceUID, string.Empty);DicomDataSet[] series = client.FindSeries(seriesQuery);foreach (DicomDataSet seriesDS in series){FindQuery imagesQuery = new FindQuery();imagesQuery.SeriesInstanceUID = seriesDS.GetValue<string>(DicomTag.SeriesInstanceUID, string.Empty);DicomDataSet[] images = client.FindImages(imagesQuery);foreach (DicomDataSet instance in images){Console.WriteLine("SOPInstanceUID: {0}", instance.GetValue<string>(DicomTag.SOPInstanceUID, string.Empty));Console.WriteLine("SeriesInstanceUID: {0}", instance.GetValue<string>(DicomTag.SeriesInstanceUID, string.Empty));Console.WriteLine("StudyInstanceUID: {0}", instance.GetValue<string>(DicomTag.StudyInstanceUID, string.Empty));}}}}static class LEAD_VARS{public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";}
Imports LeadtoolsExamples.CommonImports LeadtoolsImports Leadtools.CodecsImports Leadtools.DicomImports Leadtools.Dicom.Scu.CommonImports Leadtools.ImageProcessingImports Leadtools.Dicom.AddIn.CommonImports Leadtools.Dicom.ScuImports Leadtools.Medical.Workstation.ClientImports Leadtools.Medical.Workstation.Client.LocalImports Leadtools.Medical.Workstation.Client.Pacs' Public Sub QueryPACSSecure()' Leadtools.Examples.Support.SetLicense();Dim clientInfo As New AeInfo()Dim scpInfo As New DicomScp()clientInfo.Address = Dns.GetHostName() 'local machineclientInfo.AETitle = "L20_CLIENT64"clientInfo.Port = 1030scpInfo.AETitle = "L20_PACS_SCP64"scpInfo.PeerAddress = IPAddress.Parse("192.168.5.101")scpInfo.Port = 534scpInfo.Timeout = 30scpInfo.Secure = TrueDim client As New PacsQueryClient(clientInfo, scpInfo)client.EnableLog = Trueclient.LogFileName = Path.Combine(LEAD_VARS.ImagesDir, "DicomLog.txt")' Set client security settingsDim settings As New DicomOpenSslContextCreationSettings(DicomSslMethodType.SslV23, Path.Combine(LEAD_VARS.CertificatesDir, "ca.pem"), DicomOpenSslVerificationFlags.None, 9, DicomOpenSslOptionsFlags.AllBugWorkarounds)client.OpenSslContextCreationSettings = settingsclient.ClientCertificate = Path.Combine(LEAD_VARS.CertificatesDir, "client.pem")client.ClientCertificateKey = Path.Combine(LEAD_VARS.CertificatesDir, "client.pem")client.ClientCertificateKeyPassword = "test"client.ClientCertificateType = DicomTlsCertificateType.Pemclient.CipherSuiteList.Add(DicomTlsCipherSuiteType.EcdheRsaWithAes128GcmSha256)PerformClientQuery(client)End SubPublic Sub PerformClientQuery(ByVal client As QueryClient)Dim studiesQuery As New FindQuery()Dim studies() As DicomDataSet = client.FindStudies(studiesQuery)If studies.Length > 0 ThenDim study As DicomDataSet = studies(0)Dim seriesQuery As New FindQuery()seriesQuery.StudyInstanceUID = study.GetValue(Of String)(DicomTag.StudyInstanceUID, String.Empty)Dim series() As DicomDataSet = client.FindSeries(seriesQuery)For Each seriesDS As DicomDataSet In seriesDim imagesQuery As New FindQuery()imagesQuery.SeriesInstanceUID = seriesDS.GetValue(Of String)(DicomTag.SeriesInstanceUID, String.Empty)Dim images() As DicomDataSet = client.FindImages(imagesQuery)For Each instance As DicomDataSet In imagesConsole.WriteLine("SOPInstanceUID: {0}", instance.GetValue(Of String)(DicomTag.SOPInstanceUID, String.Empty))Console.WriteLine("SeriesInstanceUID: {0}", instance.GetValue(Of String)(DicomTag.SeriesInstanceUID, String.Empty))Console.WriteLine("StudyInstanceUID: {0}", instance.GetValue(Of String)(DicomTag.StudyInstanceUID, String.Empty))Next instanceNext seriesDSEnd IfEnd SubPublic NotInheritable Class LEAD_VARSPublic Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"End Class
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
