mirror of https://github.com/lianthony/NT4.0
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
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);
|