#ifndef __DCELOGIN_H__
#define __DCELOGIN_H__

#include <dce/sec_login.h>

class DceLogin
{
DceLogin(const DceLogin&);		// forbidden
DceLogin& operator=(const DceLogin&);	// forbidden
public:

	int status;
	
	DceLogin();	
	~DceLogin();
	
	int login(const char* principal,const char* password);
	
	int get_login_context(sec_login_handle_t& z)
	{ if(status) return 1; z=login_context; return 0;}
	
	int get_authorization_source(sec_login_auth_src_t& z)
	{ if(status) return 1; z=authorization_source; return 0;}


private:
	sec_login_handle_t login_context;
	sec_login_flags_t login_flags;
	sec_passwd_rec_t password_record;
	sec_login_auth_src_t  authorization_source;
	bool is_logged;
};

// need a proper Unix login to access a default key file and
// a proper DCE login to access registry
int Dce_change_password(const char * principal_name, const char *password, const char *caller_password);


#endif