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