KLStatus KLAcquireNewInitialTickets (
KLPrincipal inPrincipal,
KLLoginOptions inLoginOptions,
KLPrincipal *outPrincipal,
char **outCredCacheName)
{
KLStatus lockErr = __KLLockCCache (kWriteLock);
KLStatus err = lockErr;
if (err == klNoErr) {
switch (__KLPromptMechanism ()) {
case klPromptMechanism_GUI:
err = __KLAcquireNewInitialTicketsGUI (inPrincipal, inLoginOptions, outPrincipal, outCredCacheName);
break;
case klPromptMechanism_CLI:
err = __KLAcquireNewInitialTicketsTerminal (inPrincipal, inLoginOptions, outPrincipal, outCredCacheName);
break;
default:
err = KLError_ (klCantDisplayUIErr);
break;
}
}
if (lockErr == klNoErr) { __KLUnlockCCache (); }
return KLError_ (err);
}
KLStatus KLHandleError (
KLStatus inError,
KLDialogIdentifier inDialogIdentifier,
KLBoolean inShowAlert)
{
KLStatus err = klNoErr;
switch (__KLPromptMechanism ()) {
case klPromptMechanism_GUI:
err = __KLHandleErrorGUI (inError, inDialogIdentifier, inShowAlert);
break;
case klPromptMechanism_CLI:
err = __KLHandleErrorTerminal (inError, inDialogIdentifier, inShowAlert);
break;
default:
err = KLError_ (klCantDisplayUIErr);
break;
}
return KLError_ (err);
}
KLStatus KLChangePassword (KLPrincipal inPrincipal)
{
KLStatus err = klNoErr;
switch (__KLPromptMechanism ()) {
case klPromptMechanism_GUI:
err = __KLChangePasswordGUI (inPrincipal);
break;
case klPromptMechanism_CLI:
err = __KLChangePasswordTerminal (inPrincipal, NULL);
break;
default:
err = KLError_ (klCantDisplayUIErr);
break;
}
return KLError_ (err);
}
KLStatus KLCancelAllDialogs(void)
{
KLStatus err = klNoErr;
switch (__KLPromptMechanism ()) {
case klPromptMechanism_GUI:
err = __KLCancelAllDialogsGUI ();
break;
case klPromptMechanism_CLI:
err = __KLCancelAllDialogsTerminal ();
break;
default:
err = KLError_ (klCantDisplayUIErr);
break;
}
return KLError_ (err);
}
krb5_error_code __KLPrompter (krb5_context context,
void *data,
const char *name,
const char *banner,
int num_prompts,
krb5_prompt prompts[])
{
KLStatus err = klNoErr;
if (__KLApplicationProvidedPrompter ()) {
err = __KLCallApplicationPrompter (context, data, name, banner, num_prompts, prompts);
} else {
switch (__KLPromptMechanism ()) {
case klPromptMechanism_GUI:
err = __KLPrompterGUI (context, data, name, banner, num_prompts, prompts);
break;
case klPromptMechanism_CLI:
err = __KLPrompterTerminal (context, data, name, banner, num_prompts, prompts);
break;
default:
err = KLError_ (klCantDisplayUIErr);
break;
}
}
return KLError_ (err);
}