//**************************************************************************** // // 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 // // 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