You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.9 KiB
69 lines
1.9 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1996 - 1999
|
|
//
|
|
// File: certprov.cpp
|
|
//
|
|
// Contents: Microsoft Internet Security Authenticode Policy Provider
|
|
//
|
|
// Functions: SoftpubDefCertInit
|
|
//
|
|
// History: 02-Oct-1997 pberkman created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#include "global.hxx"
|
|
|
|
HRESULT WINAPI SoftpubDefCertInit(CRYPT_PROVIDER_DATA *pProvData)
|
|
{
|
|
if (!(pProvData->padwTrustStepErrors) ||
|
|
(pProvData->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_WVTINIT] != ERROR_SUCCESS))
|
|
{
|
|
return(S_FALSE);
|
|
}
|
|
|
|
if (!(_ISINSTRUCT(CRYPT_PROVIDER_DATA, pProvData->cbStruct, pszUsageOID)))
|
|
{
|
|
pProvData->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_INITPROV] = ERROR_INVALID_PARAMETER;
|
|
return(S_FALSE);
|
|
}
|
|
|
|
HRESULT hr;
|
|
GUID gAuthenticode = WINTRUST_ACTION_GENERIC_VERIFY_V2;
|
|
CRYPT_PROVIDER_FUNCTIONS sAuthenticodePfns;
|
|
|
|
//
|
|
// fill in the Authenticode Functions
|
|
//
|
|
memset(&sAuthenticodePfns, 0x00, sizeof(CRYPT_PROVIDER_FUNCTIONS));
|
|
sAuthenticodePfns.cbStruct = sizeof(CRYPT_PROVIDER_FUNCTIONS);
|
|
|
|
if (!(WintrustLoadFunctionPointers(&gAuthenticode, &sAuthenticodePfns)))
|
|
{
|
|
pProvData->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_INITPROV] = TRUST_E_PROVIDER_UNKNOWN;
|
|
return(S_FALSE);
|
|
}
|
|
|
|
hr = S_OK;
|
|
|
|
if (sAuthenticodePfns.pfnInitialize)
|
|
{
|
|
hr = sAuthenticodePfns.pfnInitialize(pProvData);
|
|
}
|
|
|
|
//
|
|
// assign our usage
|
|
//
|
|
if (pProvData->pWintrustData)
|
|
{
|
|
if (pProvData->pWintrustData->pPolicyCallbackData)
|
|
{
|
|
pProvData->pszUsageOID = (char *)pProvData->pWintrustData->pPolicyCallbackData;
|
|
}
|
|
}
|
|
|
|
return(hr);
|
|
}
|
|
|