// =========================================================================== // UAMNetwork.h © 1998 Microsoft Corp. All rights reserved. // =========================================================================== #pragma once #include "UAMUtils.h" #define kDDPPacketLength 576 //The size of one packet #define kAFPIconSize 128 //Black & white icons are 128 bytes // //Pascal style strings used to determine supported UAMs. // #define PSTR_AFPVersion22 "\pAFP2.2" #define PSTR_AFPVersionOfChoice "\pAFPVersion 2.1" #define PSTR_ClearTextLogin "\pCleartxt Passwrd" #define PSTR_GuestLogin "\pNo User Authent" #define PSTR_EncryptedLogin1_0 "\pMicrosoft V1.0" #define PSTR_EncryptedLogin2_0 "\pMS2.0" #define kOneWayEncryptedArgSize 16 #define kServerChallengeMaxLen 8 #define kServerChallengeExtCharMapTableSize 128 #define kStartingExtendedCharValue 0x80 #define kIllegalMappedExtChar 0xFF #define UAM_USERNAMELEN 33 #define UAM_CLRTXTPWDLEN 14 #define UAM_ENCRYPTEDPWLEN 32 // //Mac's time is based from January 1, 1904 while a server's is based on the //year 2000. Below is the difference between the two for conversion and a //macro to make life easier. // #define NUM_SECS_FROM_1904_TO_2000 3029529600 #define LOCAL_TIME(serverTime) (NUM_SECS_FROM_1904_TO_2000 + serverTime) typedef unsigned char PassWord[8]; // //Struct for accessing server info after a ASPGetStatus call. This is the //header information provided from the call. See Inside Appletalk p. 13-95/97 // typedef struct { short machineTypeOffset; short afpVersionOffset; short supportedUAMOffset; short volumeIconOffset; short serverFlags; }ServerInfoReplyBlock, *ServerInfoReplyBlockP; //FPGetSrvrInfo() server flags bit values typedef enum { kSupportsCopyFile = 0x1, kSupportsChngPswd = 0x2, kDontAllowSavePwd = 0x4, kSupportsSrvrMsgs = 0x8, kSupportsSrvrSig = 0x10, kSupportsTCPIP = 0x20, kSupportsSrvrNotification = 0x40 }ServerStatusReplyFlags; // //Enums for supported UAMs on the server. // enum { kGuestSupported = 0x1, kClearTxtSupported = 0x2, kMSUAMSupported = 0x4, kMSUAM_V2_Supported = 0x8 }; // //The reply block returned when using MSUAM. // typedef struct _MSUAMLoginReplyBlock { char serverChallenge[kServerChallengeMaxLen]; char serverExtCharMapTable[kServerChallengeExtCharMapTableSize]; }MSUAMLoginReplyBlock; // //Prototypes for UAMNetwork live here. // void UAM_GetSupportedUAMS(ServerInfoReplyBlockP inReplyInfo, long *ioSupported); Boolean UAM_MapCharactersIntoHostSet(char *szTarg, char *mappingTbl); void UAM_CryptEncrypt(char *inClearPassword, char *inServerChallenge, char *outEncryptPW); void UAM_DoublePasswordEncrypt(char *inCPPassword, char *inCPKeyPass, char *outDest);