windows-nt/Source/XPSP1/NT/termsrv/common/license/inc/lscsp.h
2020-09-26 16:20:57 +08:00

160 lines
3.5 KiB
C

//+---------------------------------------------------------------------------
//
// 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