742 lines
14 KiB
C
742 lines
14 KiB
C
/*--
|
|
Copyright (C) 2007-2009 Wellbia.com Co., Ltd.
|
|
|
|
Module Name:
|
|
zwave_sdk_client.h
|
|
|
|
Abstract:
|
|
XIGNCODE Client Library Stub Code
|
|
|
|
Author:
|
|
2010-09-16 YoungJin Shin <codewiz@wellbia.com>
|
|
|
|
Environment:
|
|
any
|
|
|
|
Library:
|
|
none
|
|
|
|
--*/
|
|
|
|
#ifndef ZCWAVE_SDK_CLIENT_H
|
|
#define ZCWAVE_SDK_CLIENT_H
|
|
|
|
#include "xtypes.h"
|
|
#include "zcwave_errors.h"
|
|
|
|
#define STUB_NAME L"x3.xem"
|
|
#define STUB_FILE_NAME L"\\" STUB_NAME
|
|
|
|
#define XINLINE __inline
|
|
|
|
#define ZSOPT_USESYSGUARD 0x01
|
|
#define ZSOPT_SHOWSPLASH 0x02
|
|
#define ZSOPT_SHOWTRAY 0x04
|
|
|
|
enum
|
|
{
|
|
XIGNCODE_REQUEST_EXIT = 0x1200
|
|
};
|
|
|
|
enum
|
|
{
|
|
XSC_INTERNAL_STATE_CHANGED = 0x3120
|
|
, XSC_FILE_MODIFIED
|
|
, XSC_VASHJ_LOAD_FAIL
|
|
, XSC_VASHJ_INIT_FAIL
|
|
, XSC_XSG_CONNECT_FAIL
|
|
};
|
|
|
|
|
|
typedef enum _XclioFid
|
|
{
|
|
XclioFidSysEnterA
|
|
, XclioFidSysEnterW
|
|
, XclioFidSysExit
|
|
, XclioFidInit
|
|
, XclioFidCleanup
|
|
, XclioFidProbe
|
|
, XclioFidProbeEx
|
|
, XclioFidCreateCodeBox
|
|
, XclioFidCloseCodeBox
|
|
, XclioFidProbeCodeBox
|
|
, XclioFidProbeCodeBoxEx
|
|
, XclioFidEncrypt
|
|
, XclioFidDecrypt
|
|
, XclioFidRsaCreate
|
|
, XclioFidRsaClose
|
|
, XclioFidRsaSetPublicKey
|
|
, XclioFidRsaSetPrivateKey
|
|
, XclioFidRsaPublicEncrypt
|
|
, XclioFidRsaPublicDecrypt
|
|
, XclioFidRsaPrivateEncrypt
|
|
, XclioFidRsaPrivateDecrypt
|
|
, XclioFidCheck
|
|
, XclioFidRegisterCallback
|
|
, XclioFidRsaGenerateKey
|
|
, XclioFidRsaFreeBuffer
|
|
, XclioFidSetup
|
|
, XclioFidSendCommandVa
|
|
} XclioFid;
|
|
|
|
typedef char *PACKETDATA;
|
|
typedef const char *CPACKETDATA;
|
|
|
|
|
|
typedef xbool (CALLBACK *XigncodeCallback)(ULONG code, ULONG w, PVOID l, PVOID context);
|
|
|
|
typedef void (CALLBACK *ProbeCallback)(xhandle CodeBox
|
|
, CPACKETDATA Packet
|
|
, PACKETDATA Buffer
|
|
, SIZE_T BufferSize
|
|
, PVOID Context);
|
|
|
|
|
|
|
|
|
|
typedef xbool (XCALL *XxxSysEnterAT)(xcstr License, xcstr Dir, xulong Flags);
|
|
|
|
typedef xbool (XCALL *XxxSysEnterWT)(xcwstr License, xcwstr path, xulong opt);
|
|
|
|
typedef xbool (XCALL *XxxSysExitT)();
|
|
|
|
typedef xbool (XCALL *XxxInitT)();
|
|
|
|
typedef xbool (XCALL *XxxCleanupT)();
|
|
|
|
typedef xbool (XCALL *XxxProbeT)(xpcch data, xpch buf, xsize size);
|
|
|
|
typedef xbool (XCALL *XxxProbeExT)(xpcch Packet
|
|
, xsize ReplySize
|
|
, ProbeCallback Callback
|
|
, xpvoid Context);
|
|
|
|
typedef xhandle (XCALL *XxxCreateCodeBoxT)();
|
|
|
|
typedef xbool (XCALL *XxxCloseCodeBoxT)(xhandle h);
|
|
|
|
typedef xbool (XCALL *XxxProbeCodeBoxT)(xhandle h, xpcch data, xpch buf, xsize size);
|
|
|
|
typedef xbool (XCALL *XxxProbeCodeBoxExT)(xhandle h
|
|
, xpcch Packet
|
|
, xsize ReplySize
|
|
, ProbeCallback Callback
|
|
, xpvoid Context);
|
|
|
|
typedef void (XCALL *XxxRegisterCallbackT)(XigncodeCallback cb, xpvoid context);
|
|
|
|
typedef void (XCALL *XxxPumpLoopT)();
|
|
|
|
|
|
typedef xstatus (XCALL *XxxQueryFunctionT)(xpvoid *If, XclioFid Id);
|
|
typedef xbool (XCALL *XxxSendCommandVaT)(xuint cid, va_list ap);
|
|
|
|
typedef xbool (XCALL *XxxEncryptT)
|
|
(
|
|
xpcuch Input
|
|
, xsize InputSize
|
|
, xpcuch Key
|
|
, xsize KeySize
|
|
, xpuch Output
|
|
, xsize OutputSize
|
|
, xsize *Required
|
|
, int Type
|
|
);
|
|
|
|
typedef xbool (XCALL *XxxDecryptT)
|
|
(
|
|
xpcuch Input
|
|
, xsize InputSize
|
|
, xpcuch Key
|
|
, xsize KeySize
|
|
, xpuch Output
|
|
, xsize OutputSize
|
|
, xsize *Required
|
|
, int Type
|
|
);
|
|
|
|
typedef xbool (XCALL *XxxRsaGenerateKeyT)
|
|
(
|
|
xpuch PublicKey
|
|
, xsize PublicKeySize
|
|
, xpuch PrivateKey
|
|
, xsize PrivateKeySize
|
|
, int Nbits
|
|
, int Exponent
|
|
);
|
|
|
|
typedef xbool (XCALL *XxxRsaSetPrivateKeyT)(xhandle H, xpcuch Key, xsize KeySize);
|
|
|
|
typedef xbool (XCALL *XxxRsaSetPublicKeyT)(xhandle H, xpcuch Key, xsize KeySize);
|
|
|
|
typedef xbool (XCALL *XxxRsaPrivateEncryptT)
|
|
(
|
|
xhandle H
|
|
, xpcuch Input
|
|
, xsize InputSize
|
|
, xpuch *Output
|
|
, xsize *OutputSize
|
|
);
|
|
|
|
typedef xbool (XCALL *XxxRsaPrivateDecryptT)
|
|
(
|
|
xhandle H
|
|
, xpcuch Input
|
|
, xsize InputSize
|
|
, xpuch *Output
|
|
, xsize *OutputSize
|
|
);
|
|
|
|
typedef xbool (XCALL *XxxRsaPublicEncryptT)
|
|
(
|
|
xhandle H
|
|
, xpcuch Input
|
|
, xsize InputSize
|
|
, xpuch *Output
|
|
, xsize *OutputSize
|
|
);
|
|
|
|
typedef xbool (XCALL *XxxRsaPublicDecryptT)
|
|
(
|
|
xhandle H
|
|
, xpcuch Input
|
|
, xsize InputSize
|
|
, xpuch *Output
|
|
, xsize *OutputSize
|
|
);
|
|
|
|
typedef xbool (XCALL *XxxRsaCloseT)(xhandle H);
|
|
|
|
typedef xhandle (XCALL *XxxRsaCreateT)();
|
|
|
|
typedef xbool (XCALL *XxxRsaFreeBufferT)(xhandle H, xpuch Buffer);
|
|
|
|
|
|
#define XUID_USER_ACCOUNT 1
|
|
#define XUID_USER_NAME 2
|
|
#define XUID_USER_MAP_POINT 3
|
|
#define XUID_USER_EXTRA 4
|
|
|
|
#define ZCMD_SET_USER_INFO_CALLBACKA 100
|
|
#define ZCMD_SET_USER_INFO_CALLBACKW 200
|
|
#define ZCMD_GET_USER_INFO_CALLBACKA 300
|
|
#define ZCMD_GET_USER_INFO_CALLBACKW 400
|
|
#define ZCMD_GET_USER_INFO_CONTEXTA 500
|
|
#define ZCMD_GET_USER_INFO_CONTEXTW 600
|
|
#define ZCMD_SET_NOTIFICATION_CALLBACK 700
|
|
#define ZCMD_GET_NOTIFICATION_CALLBACK 800
|
|
#define ZCMD_GET_NOTIFICATION_CONTEXT 900
|
|
|
|
typedef
|
|
xstatus
|
|
(XCALL *ZCWAVE_GetUserInfoCallbackAT)(xuint info_id
|
|
, xstr buffer
|
|
, xsize buffer_size
|
|
, xpvoid context);
|
|
|
|
typedef
|
|
xstatus
|
|
(XCALL *ZCWAVE_GetUserInfoCallbackWT)(xuint info_id
|
|
, xwstr buffer
|
|
, xsize buffer_size
|
|
, xpvoid context);
|
|
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
XxxGetProcAddress(xvoid **Address, XclioFid Fid)
|
|
{
|
|
HMODULE Module = GetModuleHandleW(STUB_NAME);
|
|
if(!Module)
|
|
{
|
|
SetLastError(ZCWAVE_E_INVALID_CALL);
|
|
return X_FALSE;
|
|
}
|
|
|
|
XxxQueryFunctionT Q = (XxxQueryFunctionT)(xpvoid) GetProcAddress(Module, MAKEINTRESOURCEA(1));
|
|
if(!Q)
|
|
{
|
|
SetLastError(ZCWAVE_E_INVALID_CALL);
|
|
return X_FALSE;
|
|
}
|
|
|
|
if(!X_SUCCESS(Q(Address, Fid)))
|
|
return X_FALSE;
|
|
|
|
return X_TRUE;
|
|
}
|
|
|
|
XINLINE
|
|
void
|
|
XCALL
|
|
GetXigncodeDirectoryW(xwstr Dir, xsize DirSize, xcwstr InputDir)
|
|
{
|
|
WCHAR *DirMark;
|
|
|
|
if(!InputDir)
|
|
{
|
|
GetModuleFileNameW(X_NULL, Dir, (xulong)(DirSize / sizeof(WCHAR)));
|
|
DirMark = wcsrchr(Dir, X_DIR_MARKW);
|
|
if(DirMark)
|
|
*DirMark = X_EOSW;
|
|
}
|
|
else
|
|
{
|
|
WCHAR *DriveMark = (WCHAR *) wcschr(InputDir, L':');
|
|
if(DriveMark)
|
|
{
|
|
#ifdef _STRSAFE_H_INCLUDED_
|
|
StringCbCopyW(Dir, DirSize, InputDir);
|
|
#else
|
|
lstrcpyW(Dir, InputDir);
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
GetModuleFileNameW(X_NULL, Dir, (xulong)(DirSize / sizeof(WCHAR)));
|
|
DirMark = wcsrchr(Dir, X_DIR_MARKW);
|
|
if(DirMark)
|
|
{
|
|
if(*InputDir == X_DIR_MARKW)
|
|
*DirMark = X_EOSW;
|
|
else
|
|
*(DirMark + 1) = X_EOSW;
|
|
}
|
|
|
|
#ifdef _STRSAFE_H_INCLUDED_
|
|
StringCbCatW(Dir, DirSize, InputDir);
|
|
#else
|
|
lstrcatW(Dir, InputDir);
|
|
#endif
|
|
}
|
|
|
|
if(Dir[lstrlenW(Dir) - 1] == X_DIR_MARKW)
|
|
Dir[lstrlenW(Dir) - 1] = X_EOSW;
|
|
}
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_SysInit()
|
|
{
|
|
return X_TRUE;
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_SysCleanup()
|
|
{
|
|
return X_TRUE;
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_Init()
|
|
{
|
|
XxxInitT XxxInit;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxInit, XclioFidInit))
|
|
return X_FALSE;
|
|
|
|
return XxxInit();
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_Cleanup()
|
|
{
|
|
XxxCleanupT XxxCleanup;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxCleanup, XclioFidCleanup))
|
|
return X_FALSE;
|
|
|
|
return XxxCleanup();
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_Probe(xpcch ReceivedPacket, xpch Buffer, xsize BufferSize)
|
|
{
|
|
XxxProbeT XxxProbe;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxProbe, XclioFidProbe))
|
|
return X_FALSE;
|
|
|
|
return XxxProbe(ReceivedPacket, Buffer, BufferSize);
|
|
}
|
|
|
|
XINLINE
|
|
xhandle
|
|
XCALL
|
|
ZCWAVE_CreateCodeBox()
|
|
{
|
|
XxxCreateCodeBoxT XxxCreateCodeBox;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxCreateCodeBox, XclioFidCreateCodeBox))
|
|
return X_FALSE;
|
|
|
|
return XxxCreateCodeBox();
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_CloseCodeBox(xhandle CodeBox)
|
|
{
|
|
XxxCloseCodeBoxT XxxCloseCodeBox;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxCloseCodeBox, XclioFidCloseCodeBox))
|
|
return X_FALSE;
|
|
|
|
return XxxCloseCodeBox(CodeBox);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_ProbeCodeBox(xhandle CodeBox, xpcch ReceivedPacket, xpch Buffer, xsize BufferSize)
|
|
{
|
|
XxxProbeCodeBoxT XxxProbeCodeBox;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxProbeCodeBox, XclioFidProbeCodeBox))
|
|
return X_FALSE;
|
|
|
|
return XxxProbeCodeBox(CodeBox, ReceivedPacket, Buffer, BufferSize);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_SendCommand(xuint cid, ...)
|
|
{
|
|
va_list ap;
|
|
xbool r;
|
|
XxxSendCommandVaT XxxSendCommandVa;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxSendCommandVa, XclioFidSendCommandVa))
|
|
return X_FALSE;
|
|
|
|
va_start(ap, cid);
|
|
r = XxxSendCommandVa(cid, ap);
|
|
va_end(ap);
|
|
|
|
return r;
|
|
}
|
|
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_SysEnterW(xcwstr License, xcwstr Path, xulong Flags)
|
|
{
|
|
xwch StubPath[MAX_PATH], XigncodeDir[MAX_PATH];
|
|
GetXigncodeDirectoryW(XigncodeDir, sizeof(XigncodeDir), Path);
|
|
|
|
#ifdef _STRSAFE_H_INCLUDED_
|
|
StringCbCopyW(StubPath, sizeof(StubPath), XigncodeDir);
|
|
StringCbCatW(StubPath, sizeof(StubPath), STUB_FILE_NAME);
|
|
#else
|
|
lstrcpyW(StubPath, XigncodeDir);
|
|
lstrcatW(StubPath, STUB_FILE_NAME);
|
|
#endif
|
|
|
|
PVOID Module = LoadLibraryW(StubPath);
|
|
if(!Module)
|
|
{
|
|
return X_FALSE;
|
|
}
|
|
|
|
XxxSysEnterWT XxxSysEnterW;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxSysEnterW, XclioFidSysEnterW))
|
|
{
|
|
return X_FALSE;
|
|
}
|
|
|
|
return XxxSysEnterW(License, XigncodeDir, Flags);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_SysEnterA(xcstr License, xcstr Path, xulong Flags)
|
|
{
|
|
xwch wLicense[80];
|
|
xwch wPathBuffer[MAX_PATH];
|
|
xwstr wPath = X_NULL;
|
|
|
|
MultiByteToWideChar(CP_ACP, 0, License, -1, wLicense, XArraySize(wLicense));
|
|
|
|
if(Path)
|
|
{
|
|
MultiByteToWideChar(CP_ACP, 0, Path, -1, wPathBuffer, XArraySize(wPathBuffer));
|
|
wPath = wPathBuffer;
|
|
}
|
|
|
|
return ZCWAVE_SysEnterW(wLicense, wPath, Flags);
|
|
}
|
|
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_SysExit()
|
|
{
|
|
XxxSysExitT XxxSysExit;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxSysExit, XclioFidSysExit))
|
|
return X_FALSE;
|
|
|
|
xbool R = XxxSysExit();
|
|
|
|
HMODULE Module = GetModuleHandleW(STUB_NAME);
|
|
FreeLibrary(Module);
|
|
return R;
|
|
}
|
|
|
|
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_RegisterCallback(XigncodeCallback Callback, xpvoid Context)
|
|
{
|
|
XxxRegisterCallbackT XxxRegisterCallback;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRegisterCallback, XclioFidRegisterCallback))
|
|
return X_FALSE;
|
|
|
|
XxxRegisterCallback(Callback, Context);
|
|
return X_TRUE;
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_ProbeCodeBoxEx(xhandle CodeBox, xpcch ReceivedPacket, xsize ReplySize, ProbeCallback Callback, xpvoid Context)
|
|
{
|
|
XxxProbeCodeBoxExT XxxProbeCodeBoxEx;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxProbeCodeBoxEx, XclioFidProbeCodeBoxEx))
|
|
return X_FALSE;
|
|
|
|
return XxxProbeCodeBoxEx(CodeBox, ReceivedPacket, ReplySize, Callback, Context);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_ProbeEx(xpcch ReceivedPacket, xsize ReplySize, ProbeCallback Callback, xpvoid Context)
|
|
{
|
|
XxxProbeExT XxxProbeEx;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxProbeEx, XclioFidProbeEx))
|
|
return X_FALSE;
|
|
|
|
return XxxProbeEx(ReceivedPacket, ReplySize, Callback, Context);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_Encrypt
|
|
(
|
|
xpcuch Input
|
|
, xsize InputSize
|
|
, xpcuch Key
|
|
, xsize KeySize
|
|
, xpuch Output
|
|
, xsize OutputSize
|
|
, xsize *Required
|
|
, int Type
|
|
)
|
|
{
|
|
XxxEncryptT XxxEncrypt;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxEncrypt, XclioFidEncrypt))
|
|
return X_FALSE;
|
|
|
|
return XxxEncrypt(Input, InputSize, Key, KeySize, Output, OutputSize, Required, Type);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_Decrypt
|
|
(
|
|
xpcuch Input
|
|
, xsize InputSize
|
|
, xpcuch Key
|
|
, xsize KeySize
|
|
, xpuch Output
|
|
, xsize OutputSize
|
|
, xsize *Required
|
|
, int Type
|
|
)
|
|
{
|
|
XxxDecryptT XxxDecrypt;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxDecrypt, XclioFidDecrypt))
|
|
return X_FALSE;
|
|
|
|
return XxxDecrypt(Input, InputSize, Key, KeySize, Output, OutputSize, Required, Type);
|
|
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_RsaGenerateKey
|
|
(
|
|
xpuch PublicKey
|
|
, xsize PublicKeySize
|
|
, xpuch PrivateKey
|
|
, xsize PrivateKeySize
|
|
, int Nbits
|
|
, int Exponent
|
|
)
|
|
{
|
|
XxxRsaGenerateKeyT XxxRsaGenerateKey;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRsaGenerateKey, XclioFidRsaGenerateKey))
|
|
return X_FALSE;
|
|
|
|
return XxxRsaGenerateKey(PublicKey, PublicKeySize, PrivateKey, PrivateKeySize, Nbits, Exponent);
|
|
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_RsaSetPrivateKey(xhandle H, xpcuch Key, xsize KeySize)
|
|
{
|
|
XxxRsaSetPrivateKeyT XxxRsaSetPrivateKey;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRsaSetPrivateKey, XclioFidRsaSetPrivateKey))
|
|
return X_FALSE;
|
|
|
|
return XxxRsaSetPrivateKey(H, Key, KeySize);
|
|
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_RsaSetPublicKey(xhandle H, xpcuch Key, xsize KeySize)
|
|
{
|
|
XxxRsaSetPublicKeyT XxxRsaSetPublicKey;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRsaSetPublicKey, XclioFidRsaSetPublicKey))
|
|
return X_FALSE;
|
|
|
|
return XxxRsaSetPublicKey(H, Key, KeySize);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_RsaPrivateEncrypt
|
|
(
|
|
xhandle H
|
|
, xpcuch Input
|
|
, xsize InputSize
|
|
, xpuch *Output
|
|
, xsize *OutputSize
|
|
)
|
|
{
|
|
XxxRsaPrivateEncryptT XxxRsaPrivateEncrypt;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRsaPrivateEncrypt, XclioFidRsaPrivateEncrypt))
|
|
return X_FALSE;
|
|
|
|
return XxxRsaPrivateEncrypt(H, Input, InputSize, Output, OutputSize);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_RsaPrivateDecrypt
|
|
(
|
|
xhandle H
|
|
, xpcuch Input
|
|
, xsize InputSize
|
|
, xpuch *Output
|
|
, xsize *OutputSize
|
|
)
|
|
{
|
|
XxxRsaPrivateDecryptT XxxRsaPrivateDecrypt;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRsaPrivateDecrypt, XclioFidRsaPrivateDecrypt))
|
|
return X_FALSE;
|
|
|
|
return XxxRsaPrivateDecrypt(H, Input, InputSize, Output, OutputSize);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_RsaPublicEncrypt
|
|
(
|
|
xhandle H
|
|
, xpcuch Input
|
|
, xsize InputSize
|
|
, xpuch *Output
|
|
, xsize *OutputSize
|
|
)
|
|
{
|
|
XxxRsaPublicEncryptT XxxRsaPublicEncrypt;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRsaPublicEncrypt, XclioFidRsaPublicEncrypt))
|
|
return X_FALSE;
|
|
|
|
return XxxRsaPublicEncrypt(H, Input, InputSize, Output, OutputSize);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_RsaPublicDecrypt
|
|
(
|
|
xhandle H
|
|
, xpcuch Input
|
|
, xsize InputSize
|
|
, xpuch *Output
|
|
, xsize *OutputSize
|
|
)
|
|
{
|
|
XxxRsaPublicDecryptT XxxRsaPublicDecrypt;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRsaPublicDecrypt, XclioFidRsaPublicDecrypt))
|
|
return X_FALSE;
|
|
|
|
return XxxRsaPublicDecrypt(H, Input, InputSize, Output, OutputSize);
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_RsaClose(xhandle H)
|
|
{
|
|
XxxRsaCloseT XxxRsaClose;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRsaClose, XclioFidRsaClose))
|
|
return X_FALSE;
|
|
|
|
return XxxRsaClose(H);
|
|
}
|
|
|
|
XINLINE
|
|
xhandle
|
|
XCALL
|
|
ZCWAVE_RsaCreate()
|
|
{
|
|
XxxRsaCreateT XxxRsaCreate;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRsaCreate, XclioFidRsaCreate))
|
|
return X_FALSE;
|
|
|
|
return XxxRsaCreate();
|
|
}
|
|
|
|
XINLINE
|
|
xbool
|
|
XCALL
|
|
ZCWAVE_RsaFreeBuffer(xhandle H, xpuch Buffer)
|
|
{
|
|
XxxRsaFreeBufferT XxxRsaFreeBuffer;
|
|
if(!XxxGetProcAddress((xpvoid *)&XxxRsaFreeBuffer, XclioFidRsaFreeBuffer))
|
|
return X_FALSE;
|
|
|
|
return XxxRsaFreeBuffer(H, Buffer);
|
|
}
|
|
|
|
#ifdef _UNICODE
|
|
#define ZCWAVE_SysEnter ZCWAVE_SysEnterW
|
|
#else
|
|
#define ZCWAVE_SysEnter ZCWAVE_SysEnterA
|
|
#endif
|
|
|
|
#endif |