fb4e22ac1b6ddfb09abceab2ed91b9dc625c365b
1 /* $Cambridge: exim/src/src/auths/auth-spa.h,v 1.2 2004/12/29 10:55:58 ph10 Exp $ */
3 /*************************************************
4 * Exim - an Internet mail transport agent *
5 *************************************************/
8 * This file provides the necessary methods for authenticating with
9 * Microsoft's Secure Password Authentication.
11 * All the code used here was torn by Marc Prud'hommeaux out of the
12 * Samba project (by Andrew Tridgell, Jeremy Allison, and others).
15 /* December 2004: The spa_base64_to_bits() function has no length checking in
16 it. I have added a check. PH */
18 /* It seems that some systems have existing but different definitions of some
19 of the following types. I received a complaint about "int16" causing
20 compilation problems. So I (PH) have renamed them all, to be on the safe side.
22 typedef signed short int16;
23 typedef unsigned short uint16;
24 typedef unsigned uint32;
25 typedef unsigned char uint8;
28 typedef signed short int16x
;
29 typedef unsigned short uint16x
;
30 typedef unsigned uint32x
;
31 typedef unsigned char uint8x
;
46 uint8x challengeData
[8];
48 SPAStrHeader emptyString
;
69 SPAStrHeader lmResponse
;
70 SPAStrHeader ntResponse
;
74 SPAStrHeader sessionKey
;
80 #define spa_request_length(ptr) (((ptr)->buffer - (uint8x*)(ptr)) + (ptr)->bufIndex)
82 void spa_bits_to_base64 (unsigned char *, const unsigned char *, int);
83 int spa_base64_to_bits(char *, int, const char *);
84 void spa_build_auth_response (SPAAuthChallenge
*challenge
,
85 SPAAuthResponse
*response
, char *user
, char *password
);
86 void spa_build_auth_request (SPAAuthRequest
*request
, char *user
,
88 extern void spa_smb_encrypt (unsigned char * passwd
, unsigned char * c8
,
90 extern void spa_smb_nt_encrypt (unsigned char * passwd
, unsigned char * c8
,
92 extern char *unicodeToString(char *p
, size_t len
);
93 extern void spa_build_auth_challenge(SPAAuthRequest
*, SPAAuthChallenge
*);