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_UINT64 * nResponse; L_UINT64 GetRandom() { L_UINT64 nRet; nRet = ((L_UINT64)(rand())<<48) + ((L_UINT64)(rand())<<32) + (rand()<<16) + (rand()<<8) + rand(); return nRet; } // Definitions of the ISCL callbacks. L_UINT32 EXT_CALLBACK exGetChallengeISCL(HDICOMNET hNet, L_UINT64 *nChallenge, L_UINT64 nParameter, L_VOID * pUserData) { UNREFERENCED_PARAMETER(pUserData); UNREFERENCED_PARAMETER(hNet); nResponse = nChallenge + nParameter; return 0; } L_UINT32 EXT_CALLBACK exInternalAuthenticateISCL (HDICOMNET hNet, L_UINT64 nChallenge, L_UINT64 *nResponse, L_UINT64 nParameter, L_VOID * pUserData) { UNREFERENCED_PARAMETER(pUserData); UNREFERENCED_PARAMETER(hNet); *nResponse = nChallenge + nParameter; return 0; } L_UINT32 EXT_CALLBACK exExternalAuthenticateISCL (HDICOMNET hNet, L_UINT64 nChallenge, L_UINT64 nResponse, L_UINT64 nParameter, L_VOID * pUserData) { UNREFERENCED_PARAMETER(pUserData); UNREFERENCED_PARAMETER(hNet); if (nResponse == nChallenge + nParameter) return 0; else return 1; } L_INT InternalAuthenticateCBExample(HDICOMNET hNet) { DICOMNETCALLBACK cb; //… //… cb.pfnGetChallenge = exGetChallengeISCL; cb.pfnInternalAuthenticate = exInternalAuthenticateISCL; cb.pfnExternalAuthenticate = exExternalAuthenticateISCL; L_DicomSetCallback (hNet, &cb); return DICOM_SUCCESS; }