|
|
//+--------------------------------------------------------------------------
//
// Copyright (c) 1997-1999 Microsoft Corporation
//
// File: defpol.cpp
//
// Contents: Default policy module
//
// History:
//
//---------------------------------------------------------------------------
#include "pch.cpp"
#include "tlspol.h"
#include "policy.h"
//---------------------------------------------------------------
//
// Default Policy Module Function.
//
//---------------------------------------------------------------
POLICYSTATUS WINAPI PMInitialize( DWORD dwLicenseServerVersion, // HIWORD is major, LOWORD is minor
LPCTSTR pszCompanyName, LPCTSTR pszProductCode, PDWORD pdwNumProduct, PPMSUPPORTEDPRODUCT* ppszProduct, PDWORD pdwErrCode ) /*++
--*/ { *pdwNumProduct = 0; *ppszProduct = NULL; *pdwErrCode = ERROR_SUCCESS; return POLICY_SUCCESS; } //-------------------------------------------------------
POLICYSTATUS WINAPI PMReturnLicense( PMHANDLE hClient, ULARGE_INTEGER* pLicenseSerialNumber, PPMLICENSETOBERETURN pLicenseTobeReturn, PDWORD pdwLicenseStatus, PDWORD pdwErrCode ) /*++
++*/ {
//
// default return license is always delete old license
// and return license to license pack
//
*pdwLicenseStatus = LICENSE_RETURN_DELETE; *pdwErrCode = ERROR_SUCCESS; return POLICY_SUCCESS; }
//--------------------------------------------------------------
POLICYSTATUS WINAPI PMInitializeProduct( LPCTSTR pszCompanyName, LPCTSTR pszCHCode, LPCTSTR pszTLSCode, PDWORD pdwErrCode ) /*++
++*/ { //
// Initialize internal data here
//
*pdwErrCode = ERROR_SUCCESS; return POLICY_SUCCESS; }
//--------------------------------------------------------------
POLICYSTATUS WINAPI PMUnloadProduct( LPCTSTR pszCompanyName, LPCTSTR pszCHCode, LPCTSTR pszTLSCode, PDWORD pdwErrCode ) /*++
++*/ {
//
// Free all internal data here
//
*pdwErrCode = ERROR_SUCCESS; return POLICY_SUCCESS; }
//--------------------------------------------------------------
void WINAPI PMTerminate() /*++
++*/ {
//
// Free internal data here
//
return; }
//--------------------------------------------------------------
POLICYSTATUS ProcessLicenseRequest( PMHANDLE client, PPMLICENSEREQUEST pbRequest, PPMLICENSEREQUEST* pbAdjustedRequest, PDWORD pdwErrCode ) /*++
++*/ { POLICYSTATUS dwStatus = POLICY_SUCCESS;
*pbAdjustedRequest = pbRequest;
if(pbRequest->dwLicenseType != LICENSETYPE_LICENSE) { dwStatus = POLICY_NOT_SUPPORTED; *pdwErrCode = TLS_E_NOCONCURRENT; }
return dwStatus; }
//--------------------------------------------------------------
POLICYSTATUS ProcessAllocateRequest( PMHANDLE client, DWORD dwSuggestType, PDWORD pdwKeyPackType, PDWORD pdwErrCode ) /*++
Default sequence is always FREE/RETAIL/OPEN/SELECT/TEMPORARY
++*/ { POLICYSTATUS dwStatus = POLICY_SUCCESS;
switch(dwSuggestType) { case LSKEYPACKTYPE_UNKNOWN: *pdwKeyPackType = LSKEYPACKTYPE_FREE; break;
case LSKEYPACKTYPE_FREE: *pdwKeyPackType = LSKEYPACKTYPE_RETAIL; break;
case LSKEYPACKTYPE_RETAIL: *pdwKeyPackType = LSKEYPACKTYPE_OPEN; break;
case LSKEYPACKTYPE_OPEN: *pdwKeyPackType = LSKEYPACKTYPE_SELECT; break;
case LSKEYPACKTYPE_SELECT: //
// No more keypack to look for, instruct license
// server to terminate.
//
*pdwKeyPackType = LSKEYPACKTYPE_UNKNOWN; break;
default:
//
// Instruct License Server to terminate request
//
*pdwKeyPackType = LSKEYPACKTYPE_UNKNOWN; }
*pdwErrCode = ERROR_SUCCESS; return dwStatus; }
//-------------------------------------------------------------
POLICYSTATUS ProcessGenLicenses( PMHANDLE client, PPMGENERATELICENSE pGenLicense, PPMCERTEXTENSION *pCertExtension, PDWORD pdwErrCode ) /*++
++*/ { // No policy extension to return.
*pCertExtension = NULL; *pdwErrCode = ERROR_SUCCESS;
return POLICY_SUCCESS; }
//--------------------------------------------------------------
POLICYSTATUS ProcessComplete( PMHANDLE client, DWORD dwErrCode, PDWORD pdwRetCode ) /*++
++*/ { *pdwRetCode = ERROR_SUCCESS; return POLICY_SUCCESS; }
//--------------------------------------------------------------
POLICYSTATUS WINAPI PMLicenseRequest( PMHANDLE client, DWORD dwProgressCode, PVOID pbProgressData, PVOID* pbNewProgressData, PDWORD pdwErrCode ) /*++
++*/ { POLICYSTATUS dwStatus = POLICY_SUCCESS;
switch( dwProgressCode ) { case REQUEST_NEW: //
// License Server ask to fine tune the request.
//
dwStatus = ProcessLicenseRequest( client, (PPMLICENSEREQUEST) pbProgressData, (PPMLICENSEREQUEST *) pbNewProgressData, pdwErrCode ); break;
case REQUEST_KEYPACKTYPE: //
// License Server ask for the license pack type
//
dwStatus = ProcessAllocateRequest( client, #ifdef _WIN64
PtrToUlong(pbProgressData), #else
(DWORD) pbProgressData, #endif
(PDWORD) pbNewProgressData, pdwErrCode ); break;
case REQUEST_TEMPORARY: //
// License Server ask if temporary license should be issued
//
*(BOOL *)pbNewProgressData = TRUE; *pdwErrCode = ERROR_SUCCESS; break;
case REQUEST_GENLICENSE: //
// License Server ask for certificate extension
//
dwStatus = ProcessGenLicenses( client, (PPMGENERATELICENSE) pbProgressData, (PPMCERTEXTENSION *) pbNewProgressData, pdwErrCode );
break;
case REQUEST_COMPLETE: //
// Request complete
//
dwStatus = ProcessComplete( client, #ifdef _WIN64
PtrToUlong(pbNewProgressData), #else
(DWORD) pbNewProgressData, #endif
pdwErrCode ); break;
case REQUEST_KEYPACKDESC: if(pbNewProgressData != NULL) { *pbNewProgressData = NULL; }
// FALL THRU
default: *pdwErrCode = ERROR_SUCCESS; dwStatus = POLICY_SUCCESS; }
return dwStatus; }
//------------------------------------------------------------------------
POLICYSTATUS ProcessUpgradeRequest( PMHANDLE hClient, PPMUPGRADEREQUEST pUpgrade, PPMLICENSEREQUEST* pbAdjustedRequest, PDWORD pdwRetCode ) /*++
++*/ { *pdwRetCode = ERROR_SUCCESS; *pbAdjustedRequest = pUpgrade->pUpgradeRequest; return POLICY_SUCCESS; }
//------------------------------------------------------------------------
POLICYSTATUS WINAPI PMLicenseUpgrade( PMHANDLE hClient, DWORD dwProgressCode, PVOID pbProgressData, PVOID *ppbReturnData, PDWORD pdwRetCode, DWORD dwIndex ) /*++
++*/ { POLICYSTATUS dwStatus = POLICY_SUCCESS;
switch(dwProgressCode) { case REQUEST_UPGRADE: dwStatus = ProcessUpgradeRequest( hClient, (PPMUPGRADEREQUEST) pbProgressData, (PPMLICENSEREQUEST *) ppbReturnData, pdwRetCode );
break;
case REQUEST_COMPLETE: dwStatus = ProcessComplete( hClient, #ifdef _WIN64
PtrToUlong(pbProgressData), #else
(DWORD) (pbProgressData), #endif
pdwRetCode );
break;
default: //assert(FALSE);
*pdwRetCode = ERROR_SUCCESS; dwStatus = POLICY_SUCCESS; } return dwStatus; }
//------------------------------------------------------------------------
POLICYSTATUS WINAPI PMRegisterLicensePack( PMHANDLE hClient, DWORD dwProgressCode, PVOID pbProgressData, PVOID pbProgressReturnData, PDWORD pdwRetCode ) /*++
Not supported.
--*/ { *pdwRetCode = ERROR_INVALID_FUNCTION; return POLICY_NOT_SUPPORTED; }
|