Moving micasa 1.5 trunk to Novell forge.
This commit is contained in:
601
c_micasadk/sscs_win_calls.c
Normal file
601
c_micasadk/sscs_win_calls.c
Normal file
@@ -0,0 +1,601 @@
|
||||
/**************************************************************************
|
||||
* %name: sscs_win_calls.c %
|
||||
* %instance: security_2 %
|
||||
* %version: 1 %
|
||||
* %created_by: cameron %
|
||||
* %date_modified: Tue Apr 05 20:41:03 2005 %
|
||||
***************************************************************************
|
||||
*
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "nsscs_idk.h"
|
||||
#include "sscs_lldefs.h"
|
||||
#include "sscs_cache.h"
|
||||
|
||||
#define INITGUID
|
||||
#include <objbase.h>
|
||||
//#include "walletdef.h"
|
||||
#include "sscs_win_secretstoredef.h"
|
||||
|
||||
static PIVerifiedAccessSS pIAccess = NULL;
|
||||
static PISecretStore pISecretStore = NULL;
|
||||
|
||||
/* ######################################################################## */
|
||||
/* ############################### STUBS HERE ############################# */
|
||||
/* ######################################################################## */
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheOpenSecretStore
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
void * sscs_CacheOpenSecretStore
|
||||
(
|
||||
void *secretStoreID,
|
||||
unsigned long ssFlags,
|
||||
void *reserved
|
||||
)
|
||||
{ /* beginning of the call */
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status;
|
||||
SCHANDLE *hSC = malloc(sizeof(SCHANDLE));
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
CoInitialize(NULL);
|
||||
status = CoCreateInstance(
|
||||
(REFCLSID)&CLSID_SecretStoreClientService,
|
||||
NULL,
|
||||
CLSCTX_SERVER,
|
||||
(REFIID)&IID_VerifyAccessSS_1,
|
||||
(void **)&pIAccess);
|
||||
|
||||
|
||||
if (status == NC_STATUS_SUCCESS)
|
||||
{
|
||||
status = pIAccess->lpVtbl->QuerySecureInterface(
|
||||
pIAccess,
|
||||
GetModuleHandle(NULL),
|
||||
(PGUID)&IID_SSCS,
|
||||
(void **)&pISecretStore);
|
||||
|
||||
|
||||
pIAccess->lpVtbl->Release(pIAccess);
|
||||
|
||||
}
|
||||
else if(status == REGDB_E_CLASSNOTREG)
|
||||
{
|
||||
OutputDebugString("SecretStore: Class not Registered");
|
||||
}
|
||||
else if (status == CLASS_E_NOAGGREGATION )
|
||||
{
|
||||
OutputDebugString("SecretStore: Class no aggregation");
|
||||
}
|
||||
else if (status == E_NOINTERFACE)
|
||||
{
|
||||
OutputDebugString("SecretStore: No Interface");
|
||||
}
|
||||
|
||||
if (status != NC_STATUS_SUCCESS)
|
||||
{
|
||||
CoUninitialize();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheOpenSecretStore (
|
||||
pISecretStore,
|
||||
secretStoreID,
|
||||
ssFlags,
|
||||
hSC,
|
||||
NULL
|
||||
);
|
||||
|
||||
if (status != NC_STATUS_SUCCESS)
|
||||
{
|
||||
CoUninitialize();
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
return((void*)hSC);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheOpenSecretStore
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheCloseSecretStore
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_CacheCloseSecretStore
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
void *reserved
|
||||
)
|
||||
{ /* beginning of the call */
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheCloseSecretStore (
|
||||
pISecretStore,
|
||||
0,
|
||||
ssFlags,
|
||||
reserved);
|
||||
|
||||
pISecretStore->lpVtbl->Release(pISecretStore);
|
||||
CoUninitialize();
|
||||
|
||||
return status;
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheCloseSecretStore
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheRemoveSecretStore
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_CacheRemoveSecretStore
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
void *reserved
|
||||
)
|
||||
{ /* beginning of the call */
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheRemoveSecretStore (
|
||||
pISecretStore,
|
||||
&hSC,
|
||||
ssFlags,
|
||||
reserved);
|
||||
|
||||
return status;
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheRemoveSecretStore
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheEnumerateKeychainIDs
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_CacheEnumerateKeychainIDs
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
SSCS_SRCH_KEY_T *searchKey,
|
||||
SSCS_KEYCHAIN_ID_LIST_T *kcIDList,
|
||||
void *reserved
|
||||
)
|
||||
{ /* beginning of the call */
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheEnumerateKeyChainIDs (
|
||||
pISecretStore,
|
||||
0,
|
||||
ssFlags,
|
||||
searchKey,
|
||||
kcIDList,
|
||||
reserved);
|
||||
|
||||
return status;
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheEnumerateKeychainIDs
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheAddKeychain
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_CacheAddKeychain
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
SSCS_KEYCHAIN_ID_T *keyChainID,
|
||||
void *reserved
|
||||
)
|
||||
{ /* beginning of the call */
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status = 0;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheAddKeyChain(
|
||||
pISecretStore,
|
||||
0, // session
|
||||
ssFlags, // flags
|
||||
keyChainID, // keychainID
|
||||
reserved);
|
||||
|
||||
return(status);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheAddKeychain
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheRemoveKeychain
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_CacheRemoveKeychain
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
SSCS_KEYCHAIN_ID_T *keyChainID,
|
||||
void *reserved
|
||||
)
|
||||
{
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status = 0;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheRemoveKeyChain(
|
||||
pISecretStore,
|
||||
0, // session
|
||||
ssFlags, // flags
|
||||
keyChainID, // keychainID
|
||||
reserved);
|
||||
|
||||
return(status);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheRemoveKeychain
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheEnumerateSecretIDs
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_CacheEnumerateSecretIDs
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
SSCS_KEYCHAIN_ID_T *keyChainID,
|
||||
SSCS_SRCH_KEY_T *searchKey,
|
||||
SSCS_SECRET_ID_LIST_T *secretIDList,
|
||||
void *reserved
|
||||
)
|
||||
{
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status = 0;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheEnumerateSecretIDs(
|
||||
pISecretStore,
|
||||
0, // session
|
||||
ssFlags, // flags
|
||||
keyChainID, // keychainID
|
||||
searchKey,
|
||||
secretIDList,
|
||||
reserved);
|
||||
|
||||
return(status);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheEnumerateSecretIDs
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheReadSecret
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_CacheReadSecret
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
SSCS_KEYCHAIN_ID_T *keyChainID,
|
||||
SSCS_SECRET_ID_T *secredID,
|
||||
SSCS_SECRET_T *secretData,
|
||||
SSCS_PASSWORD_T *epPassword,
|
||||
unsigned int *bytesRequired,
|
||||
void *reserved
|
||||
)
|
||||
{
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status = 0;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheReadSecret(
|
||||
pISecretStore,
|
||||
0, // session
|
||||
ssFlags, // flags
|
||||
keyChainID, // keychainID
|
||||
secredID,
|
||||
secretData,
|
||||
epPassword,
|
||||
bytesRequired,
|
||||
reserved);
|
||||
|
||||
return(status);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheReadSecret
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheWriteSecret
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_CacheWriteSecret
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
SSCS_KEYCHAIN_ID_T *keyChainID,
|
||||
SSCS_SECRET_ID_T *secredID,
|
||||
SSCS_SECRET_T *secretData,
|
||||
SSCS_PASSWORD_T *epPassword,
|
||||
void *reserved
|
||||
)
|
||||
{
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status = 0;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheWriteSecret(
|
||||
pISecretStore,
|
||||
0, // session
|
||||
ssFlags, // flags
|
||||
keyChainID, // keychainID
|
||||
secredID,
|
||||
secretData,
|
||||
epPassword,
|
||||
reserved);
|
||||
|
||||
return(status);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheWriteSecret
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheRemoveSecret
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_CacheRemoveSecret
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
SSCS_KEYCHAIN_ID_T *keyChainID,
|
||||
SSCS_SECRET_ID_T *secredID,
|
||||
SSCS_PASSWORD_T *epPassword,
|
||||
void *reserved
|
||||
)
|
||||
{
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status = 0;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheRemoveSecret(
|
||||
pISecretStore,
|
||||
0, // session
|
||||
ssFlags, // flags
|
||||
keyChainID, // keychainID
|
||||
secredID,
|
||||
epPassword,
|
||||
reserved);
|
||||
|
||||
return(status);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheRemoveSecret
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_CacheGetSecretStoreInfo
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_CacheGetSecretStoreInfo
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
SSCS_SECRETSTORE_INFO_T *ssInfo,
|
||||
void *reserved
|
||||
)
|
||||
{
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status = 0;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheGetSecretStoreInfo(
|
||||
pISecretStore,
|
||||
0, // session
|
||||
ssFlags, // flags
|
||||
ssInfo, //
|
||||
reserved);
|
||||
|
||||
return(status);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_CacheGetSecretStoreInfo
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_GetKeychainInfo
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_GetKeychainInfo
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
SSCS_KEYCHAIN_ID_T *keyChainID,
|
||||
SSCS_KEYCHAIN_INFO_T *kcInfo,
|
||||
void *reserved
|
||||
)
|
||||
{
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status = 0;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->CacheGetKeychainInfo(
|
||||
pISecretStore,
|
||||
0, // session
|
||||
ssFlags, // flags
|
||||
keyChainID, //
|
||||
kcInfo,
|
||||
reserved);
|
||||
|
||||
return(status);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_GetKeychainInfo
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_LockCache
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_LockCache
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
void *reserved
|
||||
)
|
||||
{
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status = 0;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->LockCache(
|
||||
pISecretStore,
|
||||
0, // session
|
||||
ssFlags, // flags
|
||||
reserved);
|
||||
|
||||
return(status);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_LockCache
|
||||
|
||||
|
||||
/*
|
||||
* NAME - sscs_UnlockCache
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
*
|
||||
*/
|
||||
int sscs_UnlockCache
|
||||
(
|
||||
void *ssHandle,
|
||||
unsigned long ssFlags,
|
||||
SSCS_PASSCODE_T *passcode,
|
||||
void *reserved
|
||||
)
|
||||
{
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
NCSTATUS status = 0;
|
||||
SCHANDLE hSC = (SCHANDLE)ssHandle;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
status = pISecretStore->lpVtbl->UnLockCache(
|
||||
pISecretStore,
|
||||
0, // session
|
||||
ssFlags, // flags
|
||||
passcode,
|
||||
reserved);
|
||||
|
||||
return(status);
|
||||
|
||||
/* ############################### CODE ENDS HERE ############################# */
|
||||
} //* sscs_UnlockCache
|
||||
|
||||
|
||||
Reference in New Issue
Block a user