|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: memory.cpp
//
// Contents: Microsoft Internet Security Trust Provider
//
// Functions: WVTNew
// WVTDelete
// WVTAddStore
// WVTAddSigner
// WVTAddCertContext
// WVTAddPrivateData
//
// History: 07-Jun-1997 pberkman created
//
//--------------------------------------------------------------------------
#include "global.hxx"
// PFN_CPD_MEM_ALLOC
void *WVTNew(DWORD cbSize) { void *pvRet;
pvRet = (void *)new char[cbSize];
if (!(pvRet)) { assert(pvRet); SetLastError(ERROR_NOT_ENOUGH_MEMORY); }
return(pvRet); }
// PFN_CPD_MEM_FREE
void WVTDelete(void *pvMem) { DELETE_OBJECT(pvMem); }
// PFN_CPD_ADD_STORE
BOOL WVTAddStore(CRYPT_PROVIDER_DATA *pProvData, HCERTSTORE hStore) { HCERTSTORE hStoreDup;
hStoreDup = CertDuplicateStore(hStore);
return(AddToStoreChain(hStoreDup, &pProvData->chStores, &pProvData->pahStores)); }
// PFN_CPD_ADD_SGNR
BOOL WVTAddSigner(CRYPT_PROVIDER_DATA *pProvData, BOOL fCounterSigner, DWORD idxSigner, CRYPT_PROVIDER_SGNR *pSngr2Add) { if (fCounterSigner) { if (idxSigner > pProvData->csSigners) { return(FALSE); }
return(AddToSignerChain(pSngr2Add, &pProvData->pasSigners[idxSigner].csCounterSigners, &pProvData->pasSigners[idxSigner].pasCounterSigners)); }
return(AddToSignerChain(pSngr2Add, &pProvData->csSigners, &pProvData->pasSigners)); }
// PFN_CPD_ADD_CERT
BOOL WVTAddCertContext(CRYPT_PROVIDER_DATA *pProvData, DWORD idxSigner, BOOL fCounterSigner, DWORD idxCounterSigner, PCCERT_CONTEXT pCert) { CRYPT_PROVIDER_CERT sCert;
if (idxSigner > pProvData->csSigners) { return(FALSE); }
memset(&sCert, 0x00, sizeof(CRYPT_PROVIDER_CERT)); sCert.cbStruct = sizeof(CRYPT_PROVIDER_CERT);
sCert.pCert = CertDuplicateCertificateContext(pCert);
if (fCounterSigner) { if (idxCounterSigner > pProvData->pasSigners[idxSigner].csCounterSigners) { return(FALSE); } return(AddToCertChain(&sCert, &pProvData->pasSigners[idxSigner].pasCounterSigners[idxCounterSigner].csCertChain, &pProvData->pasSigners[idxSigner].pasCounterSigners[idxCounterSigner].pasCertChain)); }
return(AddToCertChain(&sCert, &pProvData->pasSigners[idxSigner].csCertChain, &pProvData->pasSigners[idxSigner].pasCertChain)); }
// PFN_CPD_ADD_PRIVDATA
BOOL WVTAddPrivateData(CRYPT_PROVIDER_DATA *pProvData, CRYPT_PROVIDER_PRIVDATA *psPrivData2Add) { return(AllocateNewChain(sizeof(CRYPT_PROVIDER_PRIVDATA), psPrivData2Add, &pProvData->csProvPrivData, (void **)&pProvData->pasProvPrivData, psPrivData2Add->cbStruct)); }
|