Leaked source code of windows server 2003
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.
 
 
 
 
 
 

184 lines
4.0 KiB

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1999 - 1999
//
// File: certif.cpp
//
//--------------------------------------------------------------------------
#include "stdafx.h"
#include "csprop.h"
#include "ciinit.h"
#define __dwFILE__ __dwFILE_CERTMMC_CERTIF_CPP__
FNCIGETPROPERTY PropCIGetProperty;
FNCISETPROPERTY PropCISetProperty;
FNCIGETEXTENSION PropCIGetExtension;
FNCISETPROPERTY PropCISetExtension;
FNCIENUMSETUP PropCIEnumSetup;
FNCIENUMNEXT PropCIEnumNext;
FNCIENUMCLOSE PropCIEnumClose;
SERVERCALLBACKS ThunkedCallbacks =
{
PropCIGetProperty, // FNCIGETPROPERTY *pfnGetProperty;
PropCISetProperty, // FNCISETPROPERTY *pfnSetProperty;
PropCIGetExtension, // FNCIGETEXTENSION *pfnGetExtension;
PropCISetExtension, // FNCISETEXTENSION *pfnSetExtension;
PropCIEnumSetup, // FNCIENUMSETUP *pfnEnumSetup;
PropCIEnumNext, // FNCIENUMNEXT *pfnEnumNext;
PropCIEnumClose, // FNCIENUMCLOSE *pfnEnumClose;
};
CertSvrCA* g_pCA = NULL;
HRESULT ThunkServerCallbacks(CertSvrCA* pCA)
{
HRESULT hr = S_OK;
static BOOL fInitialized = FALSE;
if (!fInitialized)
{
fInitialized = TRUE;
// initialize certif.dll
hr = CertificateInterfaceInit(
&ThunkedCallbacks,
sizeof(ThunkedCallbacks));
}
g_pCA = pCA;
return hr;
}
HRESULT
PropCIGetProperty(
IN LONG, // Context
IN DWORD Flags,
IN WCHAR const *pwszPropertyName,
OUT VARIANT *pvarPropertyValue)
{
HRESULT hr;
if (NULL != pvarPropertyValue)
{
VariantInit(pvarPropertyValue);
}
if (NULL == pwszPropertyName || NULL == pvarPropertyValue)
{
hr = E_POINTER;
_JumpError(hr, error, "NULL parm");
}
hr = E_INVALIDARG;
if ((PROPCALLER_MASK & Flags) != PROPCALLER_POLICY &&
(PROPCALLER_MASK & Flags) != PROPCALLER_EXIT)
{
_JumpError(hr, error, "Flags: Invalid caller");
}
// Special, hard-coded properties we need to support
if (0 == LSTRCMPIS(pwszPropertyName, wszPROPCATYPE))
{
ENUM_CATYPES caType = g_pCA->GetCAType();
hr = myUnmarshalVariant(
Flags,
sizeof(DWORD),
(PBYTE)&caType,
pvarPropertyValue);
_JumpIfError(hr, error, "myUnmarshalVariant");
}
else if (0 == LSTRCMPIS(pwszPropertyName, wszPROPUSEDS))
{
BOOL fUseDS = g_pCA->FIsUsingDS();
hr = myUnmarshalVariant(
Flags,
sizeof(BOOL),
(PBYTE)&fUseDS,
pvarPropertyValue);
_JumpIfError(hr, error, "myUnmarshalVariant");
}
else
{
hr = CERTSRV_E_PROPERTY_EMPTY;
}
error:
return(myHError(hr));
}
HRESULT
PropCISetProperty(
IN LONG, // Context
IN DWORD, // Flags
IN WCHAR const *, // pwszPropertyName
IN VARIANT const * /* pvarPropertyValue */ )
{
return E_NOTIMPL;
}
HRESULT
PropCIGetExtension(
IN LONG, // Context
IN DWORD, // Flags
IN WCHAR const *, // pwszExtensionName
OUT DWORD *, // pdwExtFlags
OUT VARIANT * /* pvarValue */ )
{
return E_NOTIMPL;
}
HRESULT
PropCISetExtension(
IN LONG, // Context
IN DWORD, // Flags
IN WCHAR const *, // pwszExtensionName
IN DWORD, // ExtFlags
IN VARIANT const * /* pvarValue */ )
{
return E_NOTIMPL;
}
HRESULT
PropCIEnumSetup(
IN LONG, // Context
IN LONG, // Flags
IN OUT CIENUM * /* pciEnum */ )
{
return E_NOTIMPL;
}
HRESULT PropCIEnumNext(
IN OUT CIENUM *, // pciEnum
OUT BSTR * /* pstrPropertyName */ )
{
return E_NOTIMPL;
}
HRESULT
PropCIEnumClose(
IN OUT CIENUM * /* pciEnum */ )
{
return E_NOTIMPL;
}