/*----------------------------------------------------------------------------- * Copyright (C) Microsoft Corporation, 1995 - 1996. * All rights reserved. * * Owner :ramas * Date :5/03/97 * description : Main Crypto functions for TLS1 *----------------------------------------------------------------------------*/ #ifndef _TLS1KEY_H_ #define _TLS1KEY_H_ SP_STATUS SPBuildTls1FinalFinish(PSPContext pContext, PSPBuffer pBuffer, BOOL fClient); SP_STATUS Tls1ComputeMac( PSPContext pContext, BOOL fReadMac, PSPBuffer pClean, CHAR cContentType, PBYTE pbMac, DWORD cbMac); void Tls1BuildMasterKeys( PSPContext pContext, PUCHAR pbPreMaster, DWORD cbPreMaster ); SP_STATUS Tls1MakeMasterKeyBlock(PSPContext pContext); SP_STATUS Tls1MakeWriteSessionKeys(PSPContext pContext); SP_STATUS Tls1MakeReadSessionKeys(PSPContext pContext); #define TLS1_LABEL_SERVER_WRITE_KEY "server write key" #define TLS1_LABEL_CLIENT_WRITE_KEY "client write key" #define CB_TLS1_WRITEKEY 16 #define TLS1_LABEL_MASTERSECRET "master secret" #define CB_TLS1_MASTERSECRET 13 #define TLS1_LABEL_KEYEXPANSION "key expansion" #define CB_TLS1_KEYEXPANSION 13 #define TLS1_LABEL_IVBLOCK "IV block" #define CB_TLS1_IVBLOCK 8 #define TLS1_LABEL_CLIENTFINISHED "client finished" #define TLS1_LABEL_SERVERFINISHED "server finished" #define CB_TLS1_LABEL_FINISHED 15 #define CB_TLS1_VERIFYDATA 12 #define TLS1_LABEL_EAP_KEYS "client EAP encryption" #define CB_TLS1_LABEL_EAP_KEYS 21 #define CBMD5DIGEST 16 #define CBSHADIGEST 20 #define CBBLOCKSIZE 64 //same for MD5 and SHA #define CHIPAD 0x36 #define CHOPAD 0x5c static VOID ComputeTls1ExportIV( PSPContext pContext, BOOL fClientWriteIV, PBYTE pbIV, PDWORD pcbIV); BOOL PRF( PBYTE pbSecret, DWORD cbSecret, PBYTE pbLabel, DWORD cbLabel, PBYTE pbSeed, DWORD cbSeed, PBYTE pbKeyOut, //Buffer to copy the result... DWORD cbKeyOut //# of bytes of key length they want as output. ); #endif //_TLS1KEY_H_