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

164 lines
3.4 KiB
C

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1997.
//
// File: cryptkey.h
//
// Contents: Functions that are used to pack and unpack different messages
//
// Classes:
//
// Functions:
//
// History: 12-23-97 v-sbhatt Created
//
//----------------------------------------------------------------------------
#ifndef _CRYPTKEY_H_
#define _CRYPTKEY_H_
//
// Generic CryptSystem structure to be used for all cryptographic operations
//
typedef struct _CryptSystem
{
DWORD dwCryptState; //State in which the system is in
DWORD dwSignatureAlg; //Signature AlgID
DWORD dwKeyExchAlg; //KeyExchAlgID
DWORD dwSessKeyAlg; //Symmetric Key ALg
DWORD dwMACAlg; //MAC algID
UCHAR rgbClientRandom[LICENSE_RANDOM]; //Client Random
UCHAR rgbServerRandom[LICENSE_RANDOM]; //ServerRandom
UCHAR rgbPreMasterSecret[LICENSE_PRE_MASTER_SECRET]; //Place for pms and ms
UCHAR rgbMACSaltKey[LICENSE_MAC_WRITE_KEY];
UCHAR rgbSessionKey[LICENSE_SESSION_KEY];
}CryptSystem, *PCryptSystem;
#define CRYPT_SYSTEM_STATE_INITIALIZED 0x00000000
#define CRYPT_SYSTEM_STATE_PRE_MASTER_SECRET 0x00000001
#define CRYPT_SYSTEM_STATE_MASTER_SECRET 0x00000002
#define CRYPT_SYSTEM_STATE_SESSION_KEY 0x00000003
#define CRYPT_SYSTEM_STATE_MAC_DONE 0x00000004
#ifdef __cplusplus
extern "C" {
#endif
LICENSE_STATUS
CALL_TYPE
LicenseSetPreMasterSecret(
PCryptSystem pCrypt,
PUCHAR pPreMasterSecret
);
LICENSE_STATUS
CALL_TYPE
LicenseBuildMasterSecret(
PCryptSystem pSystem
);
LICENSE_STATUS
CALL_TYPE
LicenseMakeSessionKeys(
PCryptSystem pCrypt,
DWORD dwReserved
);
LICENSE_STATUS
CALL_TYPE
LicenseVerifyServerCert(
PHydra_Server_Cert pCert
);
LICENSE_STATUS
CALL_TYPE
LicenseGenerateMAC(
PCryptSystem pCrypt,
PBYTE pbData,
DWORD cbData,
PBYTE pbMACData
);
LICENSE_STATUS
CALL_TYPE
LicenseEnvelopeData(
PBYTE pbPublicKey,
DWORD cbPublicKey,
PBYTE pbData,
DWORD cbData,
PBYTE pbEnvelopedData,
DWORD *cbEnvelopedData
);
LICENSE_STATUS
CALL_TYPE
LicenseDecryptEnvelopedData(
PBYTE pbPrivateKey,
DWORD cbPrivateKey,
PBYTE pbEnvelopedData,
DWORD cbEnvelopedData,
PBYTE pbData,
DWORD *pcbData );
LICENSE_STATUS
CALL_TYPE
LicenseEncryptSessionData(
PCryptSystem pCrypt,
PBYTE pbData,
DWORD cbData
);
LICENSE_STATUS
CALL_TYPE
LicenseDecryptSessionData(
PCryptSystem pCrypt,
PBYTE pbData,
DWORD cbData
);
//Temporarily declared and defined in Cryptkey.h and .c
LICENSE_STATUS
CALL_TYPE
GenerateClientHWID(
PHWID phwid
);
LICENSE_STATUS
CALL_TYPE
LicenseEncryptHwid(
PHWID pHwid,
PDWORD pcbEncryptedHwid,
PBYTE pEncryptedHwid,
DWORD cbSecretKey,
PBYTE pSecretKey );
LICENSE_STATUS
CALL_TYPE
LicenseDecryptHwid(
PHWID pHwid,
DWORD cbEncryptedHwid,
PBYTE pEncryptedHwid,
DWORD cbSecretKey,
PBYTE pSecretKey );
LICENSE_STATUS
CALL_TYPE
UnpackHydraServerCertificate(
PBYTE pbMessage,
DWORD cbMessage,
PHydra_Server_Cert pCanonical );
#ifdef __cplusplus
}
#endif
#endif //_CRYPTKEY_H_