KClientLoginIntf.cp [plain text]
/*
* KClient bottom layer to Login library
*
* $Header: /cvs/kfm/KerberosFramework/KClient/Sources/Common/KClientLoginIntf.cp,v 1.22 2003/02/26 04:09:10 lxs Exp $
*/
#include "KClientLoginIntf.h"
std::string
KClientLoginInterface::AcquireInitialTickets (
const UPrincipal& inPrincipal)
{
std::string result;
KLPrincipal newPrincipal;
KLPrincipal oldPrincipal;
char* ccacheName;
OSStatus err;
if (inPrincipal.Get () != nil) {
try {
oldPrincipal = inPrincipal.GetKLPrincipal ();
} catch (UPrincipalRuntimeError& e) {
if (e.Error () == klPreferencesReadErr) {
throw KClientError (kcErrInvalidPreferences);
} else {
throw;
}
}
err = ::KLAcquireInitialTickets (oldPrincipal, nil, &newPrincipal, &ccacheName);
::KLDisposePrincipal (oldPrincipal);
} else {
err = ::KLAcquireInitialTickets (nil, nil, &newPrincipal, &ccacheName);
}
if (err != noErr)
DebugThrow_ (KClientLoginLibRuntimeError (err));
result = ccacheName;
KLDisposeString (ccacheName);
KLDisposePrincipal (newPrincipal);
return result;
}
std::string
KClientLoginInterface::AcquireInitialTicketsWithPassword (
const UPrincipal& inPrincipal,
const char* inPassword)
{
std::string result;
char* ccacheName;
OSStatus err;
err = ::KLAcquireInitialTicketsWithPassword (inPrincipal.GetKLPrincipal (), nil, inPassword, &ccacheName);
if (err != noErr)
DebugThrow_ (KClientLoginLibRuntimeError (err));
result = ccacheName;
KLDisposeString (ccacheName);
return result;
}
void
KClientLoginInterface::Logout (
const UPrincipal& inPrincipal)
{
KLPrincipal principal = nil;
if (inPrincipal.Get () != nil)
principal = inPrincipal.GetKLPrincipal ();
OSStatus err = KLDestroyTickets (principal);
if (principal != nil)
KLDisposePrincipal (principal);
if (err != noErr) {
DebugThrow_ (KClientLoginLibRuntimeError (err));
}
}
void
KClientLoginInterface::GetTicketExpiration (
const UPrincipal& inPrincipal,
UInt32& outExpiration)
{
KLPrincipal principal = nil;
if (inPrincipal.Get () != nil)
principal = inPrincipal.GetKLPrincipal ();
OSStatus err = KLTicketExpirationTime (principal, kerberosVersion_All, (KLTime *)&outExpiration);
if (principal != nil)
KLDisposePrincipal (principal);
if (err != noErr) {
DebugThrow_ (KClientLoginLibRuntimeError (err));
}
}
UInt32
KClientLoginInterface::GetDefaultTicketLifetime ()
{
KLLifetime lifetime;
KLSize size = sizeof (lifetime);
OSStatus err = KLGetDefaultLoginOption (loginOption_DefaultTicketLifetime, &lifetime, &size);
AssertReturnValue_ (err == noErr);
return lifetime;
}