133 lines
4.9 KiB
C++
133 lines
4.9 KiB
C++
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
//
|
||
|
// Copyright (C) Microsoft Corporation, 1996 - 1999
|
||
|
//
|
||
|
// File: emailprv.cpp
|
||
|
//
|
||
|
// Contents: Microsoft Internet Security Authenticode Policy Provider
|
||
|
//
|
||
|
// Functions: EmailRegisterServer
|
||
|
// EmailUnregisterServer
|
||
|
// EmailCertCheckProv
|
||
|
// EmailFinalProv
|
||
|
//
|
||
|
// History: 18-Sep-1997 pberkman created
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
#include "global.hxx"
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// EmailRegisterServer
|
||
|
//----------------------------------------------------------------------------
|
||
|
// Register the Email provider
|
||
|
//
|
||
|
|
||
|
STDAPI EmailRegisterServer(void)
|
||
|
{
|
||
|
GUID gProv = EMAIL_ACTIONID_VERIFY;
|
||
|
BOOL fRet;
|
||
|
CRYPT_REGISTER_ACTIONID sRegAID;
|
||
|
CRYPT_PROVIDER_REGDEFUSAGE sDefUsage;
|
||
|
|
||
|
fRet = TRUE;
|
||
|
|
||
|
//
|
||
|
// set the usages we want
|
||
|
//
|
||
|
memset(&sDefUsage, 0x00, sizeof(CRYPT_PROVIDER_REGDEFUSAGE));
|
||
|
|
||
|
sDefUsage.cbStruct = sizeof(CRYPT_PROVIDER_REGDEFUSAGE);
|
||
|
sDefUsage.pgActionID = &gProv;
|
||
|
sDefUsage.pwszDllName = SP_POLICY_PROVIDER_DLL_NAME;
|
||
|
sDefUsage.pwszLoadCallbackDataFunctionName = "SoftpubLoadDefUsageCallData";
|
||
|
sDefUsage.pwszFreeCallbackDataFunctionName = "SoftpubFreeDefUsageCallData";
|
||
|
|
||
|
fRet &= WintrustAddDefaultForUsage(szOID_PKIX_KP_EMAIL_PROTECTION, &sDefUsage);
|
||
|
|
||
|
//
|
||
|
// set our provider
|
||
|
//
|
||
|
memset(&sRegAID, 0x00, sizeof(CRYPT_REGISTER_ACTIONID));
|
||
|
|
||
|
sRegAID.cbStruct = sizeof(CRYPT_REGISTER_ACTIONID);
|
||
|
|
||
|
// Authenticode initialization provider
|
||
|
sRegAID.sInitProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
|
||
|
sRegAID.sInitProvider.pwszDLLName = SP_POLICY_PROVIDER_DLL_NAME;
|
||
|
sRegAID.sInitProvider.pwszFunctionName = SP_INIT_FUNCTION;
|
||
|
|
||
|
// Authenticode object provider
|
||
|
sRegAID.sObjectProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
|
||
|
sRegAID.sObjectProvider.pwszDLLName = SP_POLICY_PROVIDER_DLL_NAME;
|
||
|
sRegAID.sObjectProvider.pwszFunctionName = SP_OBJTRUST_FUNCTION;
|
||
|
|
||
|
// Authenticode signature provider
|
||
|
sRegAID.sSignatureProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
|
||
|
sRegAID.sSignatureProvider.pwszDLLName = SP_POLICY_PROVIDER_DLL_NAME;
|
||
|
sRegAID.sSignatureProvider.pwszFunctionName = SP_SIGTRUST_FUNCTION;
|
||
|
|
||
|
// wintrust's certificate provider
|
||
|
sRegAID.sCertificateProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
|
||
|
sRegAID.sCertificateProvider.pwszDLLName = WT_PROVIDER_DLL_NAME; // set to wintrust.dll
|
||
|
sRegAID.sCertificateProvider.pwszFunctionName = WT_PROVIDER_CERTTRUST_FUNCTION; // use wintrust's standard!
|
||
|
|
||
|
// custom cert check due to different CTL usages
|
||
|
sRegAID.sCertificatePolicyProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
|
||
|
sRegAID.sCertificatePolicyProvider.pwszDLLName = SP_POLICY_PROVIDER_DLL_NAME;
|
||
|
//TBDTBD sRegAID.sCertificatePolicyProvider.pwszFunctionName = HTTPS_CHKCERT_FUNCTION;
|
||
|
|
||
|
// custom final ...
|
||
|
sRegAID.sFinalPolicyProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
|
||
|
sRegAID.sFinalPolicyProvider.pwszDLLName = SP_POLICY_PROVIDER_DLL_NAME;
|
||
|
//TBDTBD sRegAID.sFinalPolicyProvider.pwszFunctionName = HTTPS_FINALPOLICY_FUNCTION;
|
||
|
|
||
|
// Authenticode cleanup -- we don't store any data.
|
||
|
sRegAID.sCleanupProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
|
||
|
sRegAID.sCleanupProvider.pwszDLLName = SP_POLICY_PROVIDER_DLL_NAME;
|
||
|
sRegAID.sCleanupProvider.pwszFunctionName = SP_CLEANUPPOLICY_FUNCTION;
|
||
|
|
||
|
fRet &= WintrustAddActionID(&gProv, 0, &sRegAID);
|
||
|
|
||
|
return((fRet) ? S_OK : S_FALSE);
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// DllUnregisterServer
|
||
|
//----------------------------------------------------------------------------
|
||
|
// unregisters email provider
|
||
|
//
|
||
|
|
||
|
STDAPI HTTPSUnregisterServer(void)
|
||
|
{
|
||
|
GUID gProv = EMAIL_ACTIONID_VERIFY;
|
||
|
|
||
|
WintrustRemoveActionID(&gProv);
|
||
|
|
||
|
return(S_OK);
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Exported functions for wintrust
|
||
|
//
|
||
|
|
||
|
BOOL WINAPI EmailCheckCertProv(CRYPT_PROVIDER_DATA *pProvData, DWORD idxSigner,
|
||
|
BOOL fCounterSignerChain, DWORD idxCounterSigner)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
HRESULT WINAPI HTTPSFinalProv(CRYPT_PROVIDER_DATA *pProvData)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Local Functions
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////
|