Windows-Server-2003/net/inc/rasfmsub.h

142 lines
3.5 KiB
C
Raw Normal View History

2024-08-04 01:28:15 +02:00
//****************************************************************************
//
// Microsoft Remote Access Service
//
// Copyright (C) Microsoft Corporation
//
// Description: This file contains all structure and constant definitions for
// the subauthentication package used by ARAP, MD5 and SFM
//
//****************************************************************************
#ifndef _RASSFMSUBAUTH_
#define _RASSFMSUBAUTH_
//
// Get id for our subauthentication package - MSV1_0_SUBAUTHENTICATION_DLL_RAS
//
#include <ntmsv1_0.h>
//
// Defines for those protocols that need subauthentication at the PDC
//
enum RAS_SUBAUTH_PROTO
{
RAS_SUBAUTH_PROTO_ARAP = 1,
RAS_SUBAUTH_PROTO_MD5CHAP = 2,
RAS_SUBAUTH_PROTO_MD5CHAP_EX = 3,
RAS_SUBAUTH_PROTO_UNKNOWN = 99
};
typedef enum RAS_SUBAUTH_PROTO RAS_SUBAUTH_PROTO;
typedef struct _RAS_SUBAUTH_INFO
{
RAS_SUBAUTH_PROTO ProtocolType;
DWORD DataSize;
UCHAR Data[1];
} RAS_SUBAUTH_INFO, *PRAS_SUBAUTH_INFO;
#define CHAP_RESPONSE_SIZE 16
//
// The RAS_SUBAUTH_INFO 'Data' for ProtocolType RAS_SUBAUTH_PROTO_MD5CHAP.
//
typedef struct
_MD5CHAP_SUBAUTH_INFO
{
// The packet sequence number of the challenge sent to peer. PPP CHAP
// includes this in the hashed information.
//
UCHAR uchChallengeId;
// The challenge sent to peer.
//
UCHAR uchChallenge[ 16 ];
// The challenge response received from peer.
//
UCHAR uchResponse[CHAP_RESPONSE_SIZE];
}
MD5CHAP_SUBAUTH_INFO;
//
// The RAS_SUBAUTH_INFO 'Data' for ProtocolType RAS_SUBAUTH_PROTO_MD5CHAP_EX.
//
typedef struct _MD5CHAP_EX_SUBAUTH_INFO
{
// The packet sequence number of the challenge sent to peer. PPP CHAP
// includes this in the hashed information.
//
UCHAR uchChallengeId;
// The challenge response received from peer.
//
UCHAR uchResponse[CHAP_RESPONSE_SIZE];
// The challenge sent to peer.
//
UCHAR uchChallenge[ 1 ];
} MD5CHAP_EX_SUBAUTH_INFO;
#define MAX_ARAP_USER_NAMELEN 32
#define MAX_MAC_PWD_LEN 8
#define ARAP_SUBAUTH_LOGON_PKT 1
#define ARAP_SUBAUTH_CHGPWD_PKT 2
#define SFM_SUBAUTH_CHGPWD_PKT 3
#define SFM_SUBAUTH_LOGON_PKT 4
#define SFM_2WAY_SUBAUTH_LOGON_PKT ARAP_SUBAUTH_LOGON_PKT
typedef struct _ARAP_CHALLENGE
{
DWORD high;
DWORD low;
} ARAP_CHALLENGE, *PARAP_CHALLENGE;
typedef struct _ARAP_SUBAUTH_REQ
{
DWORD PacketType;
union
{
struct
{
DWORD fGuestLogon;
DWORD NTChallenge1;
DWORD NTChallenge2;
DWORD MacResponse1;
DWORD MacResponse2;
DWORD MacChallenge1;
DWORD MacChallenge2;
DWORD NTResponse1;
DWORD NTResponse2;
LARGE_INTEGER PasswdCreateDate;
LARGE_INTEGER PasswdExpireDate;
} Logon;
struct
{
WCHAR UserName[MAX_ARAP_USER_NAMELEN+1];
UCHAR OldMunge[MAX_ARAP_USER_NAMELEN+1];
UCHAR NewMunge[MAX_ARAP_USER_NAMELEN+1];
} ChgPwd;
};
} ARAP_SUBAUTH_REQ, *PARAP_SUBAUTH_REQ;
//
// NOTE: make sure this structure size doesn't exceed 16 because of our
// workaround in using SessionKey of MSV1_0_VALIDATION_INFO structure
//
typedef struct _ARAP_SUBAUTH_RESP
{
DWORD Result;
ARAP_CHALLENGE Response;
} ARAP_SUBAUTH_RESP, *PARAP_SUBAUTH_RESP;
#endif