1 line
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1 line
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // ===========================================================================
 | |
| //	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);
 | |
| 
 |