Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

111 lines
3.4 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1995.
//
// File: context.h
//
// Contents:
//
// Classes:
//
// Functions:
//
// History: 8-08-95 RichardW Created
//
//----------------------------------------------------------------------------
#define PCT_CONTEXT_MAGIC '!Tcp'
#define CONTEXT_KEY_SIZE 16
// data needed by the context during authentication. This will be
// freed when the handshake is over.
// zombie session states
#define PCT_DEAD_ZOMBIE 0
#define PCT_LIVE_ZOMBIE 1
// auth data
typedef struct _PctAuthContext {
PPctCredential pCred; // points to private data
PctSessionId SessionId;
PctSessionId ConnectionId;
PCheckSumBuffer pVerifyPrelude; // running hash to calc VP
CipherSpec CipherType;
HashSpec HashType;
ExchSpec ExchType;
PVOID pCertificate; // points to cracked cert
DWORD CertLen; // length of raw certificate
PUCHAR pRawCert[CERT_SIZE]; // points to raw certificate
DWORD cbClHello; // length of client hello message
PUCHAR pClHello; // points to client hello message
DWORD ZombieJuju; // indicates zombie session state
SessCacheItem ZombieSession; // points to session to restart
UCHAR Challenge[PCT_CHALLENGE_SIZE];
UCHAR MasterKey[MASTER_KEY_SIZE];
UCHAR KeyArgs[MASTER_KEY_SIZE];
DWORD dwClearLen;
UCHAR ClearKey[MASTER_KEY_SIZE];
} PctAuthContext, *PPctAuthContext;
typedef struct _PctContext {
DWORD Magic; // tags structure
PSTR pszName; // points to target name
DWORD Flags;
DWORD Type;
DWORD ContextAttr;
SECURITY_STATUS Error; // error to carry forward
PPctAuthContext pAuthData; // points to temp auth data
DWORD KeySize;
UCHAR ReadMACKey[CONTEXT_KEY_SIZE];
UCHAR WriteMACKey[CONTEXT_KEY_SIZE];
PCryptoSystem pSystem;
PCheckSumFunction pCheck;
PStateBuffer pReadState; // keying struct for readkey
PStateBuffer pWriteState; // keying struct for writekey
PCheckSumBuffer ReadMACState;
PCheckSumBuffer WriteMACState;
PCheckSumBuffer InitMACState;
DWORD ReadCounter;
DWORD WriteCounter;
} PctContext, * PPctContext;
typedef struct csel {
CipherSpec Spec;
CryptoSystem *System;
} CipherSelect;
typedef struct hsel {
HashSpec Spec;
CheckSumFunction *System;
} HashSelect;
#define CONTEXT_FLAG_HELLO 0x00000001
#define CONTEXT_FLAG_OUTBOUND 0x00000002
#define CONTEXT_FLAG_KEY 0x00000004
#define CONTEXT_FLAG_VERIFY 0x00000008
#define CONTEXT_FLAG_BLOCK 0x00000010 // if we negotiated to a block cipher
#define CONTEXT_FLAG_FINISH 0x00000020
#define CONTEXT_FLAG_ERRMODE 0x00000040 // if we are just faking success
PPctContext
PctpValidateContextHandle(
PCtxtHandle phContext);