INTERNALAUTHENTICATECALLBACK
#include "ltdic.h"
L_UINT32 pEXT_CALLBACK Your_Function(hNet, nChallenge, nResponse, nParameter, pUserData)
HDICOMNET hNet; |
/* handle to an existing DICOM Network */ |
L_UINT64 nChallenge; |
/* challenge code */ |
L_UINT64 *nResponse; |
/* pointer to a variable to be updated */ |
L_UINT64 nParameter; |
/* key */ |
L_VOID * pUserData; |
/* optional pointer to more parameters for the callback */ |
Generates a response code, based on the specified challenge code. This function is available in Medical Suite toolkits.
Parameter |
Description |
hNet |
Handle to an existing DICOM Network. This is the handle returned from the L_DicomCreateNet function. |
nChallenge |
Challenge code received by the callback function. This challenge code will be used in the generation of the response code. This value is similar to a time stamp. |
nResponse |
Pointer to a variable to be updated with the response code generated by the callback function. |
nParameter |
Value that indicates the current mutual authentication key. |
pUserData |
Void pointer that you can use to pass one or more additional parameters that the callback function needs. To use this feature, assign a value to a variable or create a structure that contains as many fields as you need. Then, in this parameter, pass the address of the variable or structure, casting it to L_VOID *. The callback function, which receives the address in its own pUserData parameter, can cast it to a pointer of the appropriate data type to access your variable or structure. If the additional parameters are not needed, you can pass NULL in this parameter. |
Returns
DICOM_SUCCESS |
The generation of the response code was successful. |
<> DICOM_SUCCESS |
The generation of the response code was not successful. |
Required DLLs and Libraries
LTDIC For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application |
See Also
Functions: |
|
Topics: |
|
|
|
|
General Integrated Secure Communication Layer (ISCL) Information |
Example
L_VOID SetCallbacks(HDICOMNET hNet)
{
DICOMNETCALLBACK cb;
//…
//…
cb.pfnGetChallenge = exGetChallengeISCL;
cb.pfnInternalAuthenticate = exInternalAuthenticateISCL;
cb.pfnExternalAuthenticate = exExternalAuthenticateISCL;
L_DicomSetCallback (hNet, &cb);
// Definitions of the ISCL callbacks.
L_UINT32 L_EXPORT exGetChallengeISCL(HDICOMNET hNet, L_UINT64 *nChallenge, L_UINT64 nParameter, L_VOID * pUserData)
{
*nResponse = nChallenge + nParameter;
return 0;
}
L_UINT32 L_EXPORT exInternalAuthenticateISCL (HDICOMNET hNet, L_UINT64 nChallenge, L_UINT64 *nResponse, L_UINT64 nParameter, L_VOID * pUserData)
{
*nResponse = nChallenge + nParameter;
return 0;
}
L_UINT32 L_EXPORT exExternalAuthenticateISCL (HDICOMNET hNet, L_UINT64 nChallenge, L_UINT64 nResponse, L_UINT64 nParameter, L_VOID * pUserData)
{
if (nResponse == nChallenge + nParameter)
return 0;
else
return 1;
}
L_UINT64 GetRandom()
{
L_UINT64 nRet;
nRet = ((L_UINT64)(rand())<<48) + ((L_UINT64)(rand())<<32) + (rand()<<16) + (rand()<<8) + rand();
return nRet;
}