//+--------------------------------------------------------------------------- // // Microsoft Windows Terminal Server // Copyright (C) Microsoft Corporation, 1989 - 1998. // // File: lscsp.h // // Contents: Header file for License Server CSP routine // //---------------------------------------------------------------------------- #ifndef __LSCSP__ #define __LSCSP__ #include "license.h" //----------------------------------------------------------------------------- // // The types of CSP data that can be retrieved and stored // // LsCspInfo_Certificate - The proprietory certificate // LsCspInfo_X509Certificate - The X509 certificate // LsCspInfo_PublicKey - The public key in the proprietory certificate // LsCspInfo_PrivateKey - The private key corresponding to the proprietory certificate // LsCspInfo_X509CertPrivateKey - The private key corresponding to the X509 certificate // LsCspInfo_X509CertID - The X509 certificate ID // //----------------------------------------------------------------------------- typedef enum { LsCspInfo_Certificate, LsCspInfo_X509Certificate, LsCspInfo_PublicKey, LsCspInfo_PrivateKey, LsCspInfo_X509CertPrivateKey, LsCspInfo_X509CertID } LSCSPINFO, FAR *LPLSCSPINFO; //----------------------------------------------------------------------------- // // Terminal server registry keys and values // //----------------------------------------------------------------------------- #define HYDRA_CERT_REG_KEY \ "System\\CurrentControlSet\\Services\\TermService\\Parameters" #define HYDRA_CERTIFICATE_VALUE "Certificate" #define HYDRA_X509_CERTIFICATE "X509 Certificate" #define HYDRA_X509_CERT_ID "X509 Certificate ID" // L$ means only readable from the local machine #define PUBLIC_KEY_NAME \ L"L$HYDRAENCKEY_3a6c88f4-80a7-4b9e-971b-c81aeaa4f943" #define PRIVATE_KEY_NAME \ L"L$HYDRAENCKEY_28ada6da-d622-11d1-9cb9-00c04fb16e75" #define X509_CERT_PRIVATE_KEY_NAME \ L"L$HYDRAENCKEY_dd2d98db-2316-11d2-b414-00c04fa30cc4" #define X509_CERT_PUBLIC_KEY_NAME \ L"L$HYDRAENCPUBLICKEY_dd2d98db-2316-11d2-b414-00c04fa30cc4" //----------------------------------------------------------------------------- // // Function Prototypes // //----------------------------------------------------------------------------- #ifdef __cplusplus extern "C" { #endif LICENSE_STATUS LsCsp_GetServerData( LSCSPINFO Info, LPBYTE pBlob, LPDWORD pdwBlobLen ); LICENSE_STATUS LsCsp_SetServerData( LSCSPINFO Info, LPBYTE pBlob, DWORD dwBlobLen ); LICENSE_STATUS LsCsp_NukeServerData( LSCSPINFO Info ); BOOL LsCsp_DecryptEnvelopedData( CERT_TYPE CertType, LPBYTE pbEnvelopeData, DWORD cbEnvelopeData, LPBYTE pbData, LPDWORD pcbData ); BOOL LsCsp_EncryptEnvelopedData( LPBYTE pbData, DWORD cbData, LPBYTE pbEnvelopedData, LPDWORD pcbEnvelopedData); LICENSE_STATUS LsCsp_Initialize( void ); VOID LsCsp_Exit( void ); BOOL LsCsp_UseBuiltInCert( void ); LICENSE_STATUS LsCsp_InstallX509Certificate( LPVOID lpParam ); LICENSE_STATUS LsCsp_EncryptHwid( PHWID pHwid, LPBYTE pbEncryptedHwid, LPDWORD pcbEncryptedHwid ); LICENSE_STATUS LsCsp_StoreSecret( TCHAR * ptszKeyName, BYTE * pbKey, DWORD cbKey ); LICENSE_STATUS LsCsp_RetrieveSecret( TCHAR * ptszKeyName, PBYTE pbKey, DWORD * pcbKey ); #ifdef __cplusplus } #endif #endif