//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1996 - 1999 // // File: provider.cpp // // Contents: Microsoft Internet Security Trust Provider // // Functions: WintrustAddProvider // WintrustRemoveProvider // // History: 30-May-1997 pberkman created // //-------------------------------------------------------------------------- #include "global.hxx" #include "cryptreg.h" static void inline MySetRegProvider( GUID *pgActionID, WCHAR *pwszRegKey, WCHAR *pwszDLLName, WCHAR *pwszFuncName, BOOL *pfRet, DWORD *pdwErr ) { BOOL fRet; fRet = SetRegProvider(pgActionID, pwszRegKey, pwszDLLName, pwszFuncName); if (!fRet && *pfRet) { *pfRet = FALSE; *pdwErr = GetLastError(); } } BOOL WINAPI WintrustAddActionID(IN GUID *pgActionID, IN DWORD fdwFlags, IN CRYPT_REGISTER_ACTIONID *psProvInfo) { if (!(psProvInfo) || !(WVT_IS_CBSTRUCT_GT_MEMBEROFFSET(CRYPT_REGISTER_ACTIONID, psProvInfo->cbStruct, sTestPolicyProvider))) { SetLastError(ERROR_INVALID_PARAMETER); return(FALSE); } BOOL fRet; DWORD dwErr; fRet = TRUE; dwErr = 0; MySetRegProvider(pgActionID, REG_INIT_PROVIDER_KEY, psProvInfo->sInitProvider.pwszDLLName, psProvInfo->sInitProvider.pwszFunctionName, &fRet, &dwErr); MySetRegProvider(pgActionID, REG_OBJTRUST_PROVIDER_KEY, psProvInfo->sObjectProvider.pwszDLLName, psProvInfo->sObjectProvider.pwszFunctionName, &fRet, &dwErr); MySetRegProvider(pgActionID, REG_SIGTRUST_PROVIDER_KEY, psProvInfo->sSignatureProvider.pwszDLLName, psProvInfo->sSignatureProvider.pwszFunctionName, &fRet, &dwErr); MySetRegProvider(pgActionID, REG_CERTTRUST_PROVIDER_KEY, psProvInfo->sCertificateProvider.pwszDLLName, psProvInfo->sCertificateProvider.pwszFunctionName, &fRet, &dwErr); MySetRegProvider(pgActionID, REG_CERTPOL_PROVIDER_KEY, psProvInfo->sCertificatePolicyProvider.pwszDLLName, psProvInfo->sCertificatePolicyProvider.pwszFunctionName, &fRet, &dwErr); MySetRegProvider(pgActionID, REG_FINALPOL_PROVIDER_KEY, psProvInfo->sFinalPolicyProvider.pwszDLLName, psProvInfo->sFinalPolicyProvider.pwszFunctionName, &fRet, &dwErr); MySetRegProvider(pgActionID, REG_TESTPOL_PROVIDER_KEY, psProvInfo->sTestPolicyProvider.pwszDLLName, psProvInfo->sTestPolicyProvider.pwszFunctionName, &fRet, &dwErr); // this member was added 7/23/1997 pberkman if (WVT_IS_CBSTRUCT_GT_MEMBEROFFSET(CRYPT_REGISTER_ACTIONID, psProvInfo->cbStruct, sCleanupProvider)) { MySetRegProvider(pgActionID, REG_CLEANUP_PROVIDER_KEY, psProvInfo->sCleanupProvider.pwszDLLName, psProvInfo->sCleanupProvider.pwszFunctionName, &fRet, &dwErr); } if (!fRet && (fdwFlags & WT_ADD_ACTION_ID_RET_RESULT_FLAG)) { SetLastError(dwErr); return FALSE; } else { return TRUE; } } BOOL WINAPI WintrustRemoveActionID(IN GUID *pgActionID) { RemoveRegProvider(pgActionID, REG_INIT_PROVIDER_KEY); RemoveRegProvider(pgActionID, REG_OBJTRUST_PROVIDER_KEY); RemoveRegProvider(pgActionID, REG_SIGTRUST_PROVIDER_KEY); RemoveRegProvider(pgActionID, REG_CERTTRUST_PROVIDER_KEY); RemoveRegProvider(pgActionID, REG_CERTPOL_PROVIDER_KEY); RemoveRegProvider(pgActionID, REG_FINALPOL_PROVIDER_KEY); RemoveRegProvider(pgActionID, REG_TESTPOL_PROVIDER_KEY); RemoveRegProvider(pgActionID, REG_CLEANUP_PROVIDER_KEY); return(TRUE); }