00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
#if P_SASL2
00038
#ifndef _PSASL
00039
#define _PSASL
00040
00041
#ifdef P_USE_PRAGMA
00042
#pragma interface
00043
#endif
00044
00045
00046
class PSASLClient :
public PObject
00047 {
00048
PCLASSINFO(PSASLClient,
PObject);
00049
00050
public:
00051
enum PSASLResult {
00052 Continue = 1,
00053 OK = 0,
00054 Fail = -1
00055 };
00056
00057
protected:
00058
static PString s_Realm;
00059
static PString s_Path;
00060
00061
void * m_CallBacks;
00062
void * m_ConnState;
00063
const PString m_Service;
00064
const PString m_UserID;
00065
const PString m_AuthID;
00066
const PString m_Password;
00067
00068 BOOL Start(
const PString& mechanism,
const char ** output,
unsigned& len);
00069 PSASLResult Negotiate(
const char * input,
const char ** output);
00070
00071
public:
00072 PSASLClient(
const PString& service,
const PString& uid,
const PString& auth,
const PString& pwd);
00073 ~PSASLClient();
00074
00075
static void SetRealm(
const PString& realm) { s_Realm = realm; }
00076
static void SetPath(
const PString& path) { s_Path = path; }
00077
00078
static const PString& GetRealm() {
return s_Realm; }
00079
static const PString& GetPath() {
return s_Path; }
00080
00081
const PString& GetService()
const {
return m_Service; }
00082
const PString& GetUserID()
const {
return m_UserID; }
00083
const PString& GetAuthID()
const {
return m_AuthID; }
00084
const PString& GetPassword()
const {
return m_Password; }
00085
00086 BOOL Init(
const PString& fqdn,
PStringSet& supportedMechanisms);
00087 BOOL Start(
const PString& mechanism,
PString& output);
00088 PSASLResult Negotiate(
const PString& input,
PString& output);
00089 BOOL End();
00090 };
00091
00092
#endif // _PSASL
00093
#endif // P_SASL2
00094
00095