#include "ltdic.h"
L_LTDIC_API L_UINT32 L_DicomSetClientCertificateTLS(hNet, pszPathToCertificateFile, nCertType, pszPathToKeyFile)
HDICOMNET hNet; |
handle to an existing DICOM Network |
L_TCHAR *pszPathToCertificateFile; |
path to the file that contains the certificate |
L_UINT32 nCertType; |
certificate type |
L_TCHAR *pszPathToKeyFile; |
path to the file containing the private key |
Sets a certificate for the client.
Parameter | Description | |
hNet | Handle to an existing DICOM Network. This is the handle returned from the L_DicomCreateNet function. | |
pszPathToCertificateFile | Character string that contains the path to the file that contains the certificate. | |
nCertType | Flag that indicates whether the certificate is binary or text. Possible values are: | |
Value | Meaning | |
L_TLS_FILETYPE_PEM | Text certificate. | |
L_TLS_FILETYPE_ASN1 | Binary certificate. | |
pszPathToKeyFile | Character string that contains the path to the file containing the private key. This parameter is used if the private key is available in raw mode. |
DICOM_SUCCESS |
The function was successful. |
<>DICOM_SUCCESS |
An error occurred. Refer to the Return Codes. |
Usual size for RSA key is 512 and 1024 bits. There are no known export restrictions.
The nCertType can take values L_TLS_FILETYPE_PEM (text certificate) or L_TLS_FILETYPE_ASN1 (binary certificate).
Required DLLs and Libraries
For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application |
Win32, x64.
Functions: |
|
Topics: |
|
|
|
|
|
|
#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName
L_INT EXT_CALLBACK exPrivateKeyPasswordServer(
HDICOMNET hNet,
L_TCHAR *pszPassword,
L_INT nSize,
L_INT rwFlag,
L_VOID *pUserData)
{
UNREFERENCED_PARAMETER(pUserData);
UNREFERENCED_PARAMETER(rwFlag);
UNREFERENCED_PARAMETER(nSize);
UNREFERENCED_PARAMETER(hNet);
LPCTSTR pszMyPassword= TEXT("test");
// copy the private key password into the pszPassword buffer, and return the length
lstrcpy(pszPassword, pszMyPassword);
return lstrlen(pszMyPassword);
}
L_INT DicomSetClientCertificateTLSExample(L_VOID)
{
/* start the network */
L_INT nRet = L_DicomStartUp();
if (nRet != DICOM_SUCCESS)
return nRet;
/* set the temporary file path */
HDICOMNET hNet = L_DicomCreateNet(MAKE_IMAGE_PATH(TEXT("")), DICOM_SECURE_TLS);
// Set up so the private key password callback gets called
DICOMNETCALLBACKEXT CallbackExt;
memset(&CallbackExt, 0, sizeof(DICOMNETCALLBACKEXT));
CallbackExt.uStructSize = sizeof(DICOMNETCALLBACKEXT);
CallbackExt.pfnPrivateKeyPassword = exPrivateKeyPasswordServer;
CallbackExt.pUserDataPrivateKeyPassword = NULL;
L_DicomSetCallbackExt(hNet, &CallbackExt);
nRet = L_DicomSetClientCertificateTLS(hNet,MAKE_IMAGE_PATH(TEXT("Client.pem")), L_TLS_FILETYPE_PEM, NULL);
if (nRet != DICOM_SUCCESS)
return nRet;
L_TCHAR strMsg[64] = {0};
wsprintf(strMsg, TEXT("Loaded client certificate, result is %s"), nRet?TEXT("Error"):TEXT("Success"));
MessageBox(NULL, strMsg, TEXT(""), MB_OK);
/*
do some network communication here
*/
/* ... */
/* Free the object */
L_DicomFreeNet(hNet);
/* shut down the network */
L_DicomShutDown();
return DICOM_SUCCESS;
}
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET