From 57b5aca9566ca86863377c16e6d70d1f360efb43 Mon Sep 17 00:00:00 2001 From: Alexandra Ellwood Date: Fri, 17 Oct 2008 18:15:25 +0000 Subject: [PATCH] Added back KLL test programs ticket: new git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20886 dc483132-0cff-0310-8789-dd5450dbe970 --- src/kim/test/test_kll.c | 544 +++++++++++++++++++++++++++++++ src/kim/test/test_kll_terminal.c | 39 +++ 2 files changed, 583 insertions(+) create mode 100644 src/kim/test/test_kll.c create mode 100644 src/kim/test/test_kll_terminal.c diff --git a/src/kim/test/test_kll.c b/src/kim/test/test_kll.c new file mode 100644 index 000000000..fbc473782 --- /dev/null +++ b/src/kim/test/test_kll.c @@ -0,0 +1,544 @@ +#include +#include +#include +#include +#include + +/* Prototypes */ +void Initialize(void); +void TestErrorHandling (void); +void TestHighLevelAPI (void); +void TestKLPrincipal (void); +void TestKerberosRealms (void); +void TestLoginOptions (void); +char* TimeToString (char* timeString, long t); +void TestApplicationOptions (void); +void MyKerberosLoginIdleCallback ( + KLRefCon inAppData); + +int main(void) +{ + KLTime t; + KLStatus err; + + /* force use of UI */ + fclose (stdin); + + KLAcquireNewInitialTickets (NULL, NULL, NULL, NULL); + KLAcquireNewInitialTickets (NULL, NULL, NULL, NULL); + + + err = KLLastChangedTime(&t); + printf ("KLLastChangedTime returned %d (err = %d)\n", t, err); + + TestKLPrincipal (); + TestLoginOptions (); + TestApplicationOptions (); + TestErrorHandling (); + TestKerberosRealms (); + TestHighLevelAPI (); + + err = KLLastChangedTime(&t); + printf ("KLLastChangedTime returned %d (err = %d)\n", t, err); + + return 0; +} + +void TestErrorHandling (void) +{ + long err; + char* errorString; + + err = KLGetErrorString (KRB5KRB_AP_ERR_BAD_INTEGRITY, &errorString); + printf ("KLGetErrorString() returned %s (err = %ld)\n", errorString, err); + + err = KLGetErrorString (klCredentialsBadAddressErr, &errorString); + printf ("KLGetErrorString() returned %s (err = %ld)\n", errorString, err); + + err = KLGetErrorString (klCacheDoesNotExistErr, &errorString); + printf ("KLGetErrorString() returned %s (err = %ld)\n", errorString, err); + + err = KLGetErrorString (klPasswordMismatchErr, &errorString); + printf ("KLGetErrorString() returned %s (err = %ld)\n", errorString, err); + + err = KLGetErrorString (klInsecurePasswordErr, &errorString); + printf ("KLGetErrorString() returned %s (err = %ld)\n", errorString, err); + + err = KLGetErrorString (klPasswordChangeFailedErr, &errorString); + printf ("KLGetErrorString() returned %s (err = %ld)\n", errorString, err); + + err = KLGetErrorString (klCantContactServerErr, &errorString); + printf ("KLGetErrorString() returned %s (err = %ld)\n", errorString, err); + + err = KLGetErrorString (klCantDisplayUIErr, &errorString); + printf ("KLGetErrorString() returned %s (err = %ld)\n", errorString, err); +} + +void TestHighLevelAPI (void) +{ + KLStatus err; + KLPrincipal inPrincipal, outPrincipal, outPrincipal2; + char *outCredCacheName, *outCredCacheName2; + KLTime expirationTime; + char* principalString; + char timeString[256]; + KLBoolean valid; + + err = KLCreatePrincipalFromTriplet ("grail", "", "TESTV5-KERBEROS-1.3.1", &inPrincipal); + printf ("KLCreatePrincipalFromTriplet(grail@TESTV5-KERBEROS-1.3.1) (err = %d)\n", err); + if (err == klNoErr) { + err = KLAcquireNewInitialTicketsWithPassword (inPrincipal, NULL, "liarg", &outCredCacheName); + if (err != klNoErr) { + printf ("KLAcquireNewInitialTicketsWithPassword() returned err = %d\n", err); + } else { + printf ("KLAcquireNewInitialTicketsWithPassword() returned '%s'\n", outCredCacheName); + KLDisposeString (outCredCacheName); + } + KLDisposePrincipal (inPrincipal); + } + exit (1); + + err = KLCreatePrincipalFromTriplet ("nobody", "", "TEST-KERBEROS-1.3.1", &inPrincipal); + printf ("KLCreatePrincipalFromTriplet(nobody@TEST-KERBEROS-1.3.1) (err = %d)\n", err); + if (err == klNoErr) { + err = KLAcquireNewInitialTicketsWithPassword (inPrincipal, NULL, "ydobon", &outCredCacheName); + if (err != klNoErr) { + printf ("KLAcquireNewInitialTicketsWithPassword() returned err = %d\n", err); + } else { + printf ("KLAcquireNewInitialTicketsWithPassword() returned '%s'\n", outCredCacheName); + KLDisposeString (outCredCacheName); + } + KLDisposePrincipal (inPrincipal); + } + + err = KLAcquireNewInitialTickets (NULL, NULL, &inPrincipal, &outCredCacheName); + printf ("KLAcquireNewInitialTickets() (err = %d)\n", err); + if (err == klNoErr) { + KLDisposeString (outCredCacheName); + err = KLAcquireInitialTickets (inPrincipal, NULL, &outPrincipal, &outCredCacheName); + printf ("KLAcquireInitialTickets() (err = %d)\n", err); + if (err == klNoErr) { + KLDisposeString (outCredCacheName); + KLDisposePrincipal (outPrincipal); + } + KLDisposePrincipal (inPrincipal); + } + + err = KLSetDefaultLoginOption (loginOption_LoginName, "testname", 3); + printf ("KLSetDefaultLoginOption(loginOption_LoginName) to testname (err = %d)\n", err); + if (err == klNoErr) { + err = KLSetDefaultLoginOption (loginOption_LoginInstance, "testinstance", 6); + printf ("KLSetDefaultLoginOption(loginOption_LoginInstance) to testinstance (err = %d)\n", err); + } + + err = KLAcquireNewInitialTickets (NULL, NULL, &inPrincipal, &outCredCacheName); + printf ("KLAcquireNewInitialTickets() (err = %d)\n", err); + if (err == klNoErr) { + KLDisposeString (outCredCacheName); + KLDisposePrincipal (inPrincipal); + } + + // Principal == NULL + while (KLAcquireNewInitialTickets (NULL, NULL, &outPrincipal, &outCredCacheName) == klNoErr) { + err = KLTicketExpirationTime (outPrincipal, kerberosVersion_All, &expirationTime); + err = KLCacheHasValidTickets (outPrincipal, kerberosVersion_All, &valid, &outPrincipal2, &outCredCacheName2); + if (err == klNoErr) { + err = KLGetStringFromPrincipal (outPrincipal2, kerberosVersion_V4, &principalString); + if (err == klNoErr) { + printf ("KLGetStringFromPrincipal returned string '%s'\n", principalString); + KLDisposeString (principalString); + } + KLDisposePrincipal (outPrincipal2); + KLDisposeString (outCredCacheName2); + err = KLCacheHasValidTickets (outPrincipal, kerberosVersion_All, &valid, NULL, NULL); + if (err != klNoErr) { + printf ("KLCacheHasValidTickets returned error = %d\n", err); + } + } + err = KLCacheHasValidTickets (outPrincipal, kerberosVersion_All, &valid, NULL, NULL); + KLDisposeString (outCredCacheName); + KLDisposePrincipal (outPrincipal); + } + + err = KLAcquireNewInitialTickets (NULL, NULL, &outPrincipal, &outCredCacheName); + if (err == klNoErr) { + KLDisposeString (outCredCacheName); + KLDisposePrincipal (outPrincipal); + } + + + err = KLCreatePrincipalFromTriplet ("nobody", "", "TEST-KERBEROS-1.3.1", &inPrincipal); + printf ("KLCreatePrincipalFromTriplet(nobody@TEST-KERBEROS-1.3.1) (err = %d)\n", err); + if (err == klNoErr) { + err = KLAcquireNewInitialTickets (inPrincipal, NULL, &outPrincipal, &outCredCacheName); + printf ("KLAcquireNewInitialTickets(nobody@TEST-KERBEROS-1.3.1) (err = %d)\n", err); + if (err == klNoErr) { + KLDisposeString (outCredCacheName); + KLDisposePrincipal (outPrincipal); + } + err = KLDestroyTickets (inPrincipal); + + KLDisposePrincipal (inPrincipal); + } + + err = KLCreatePrincipalFromTriplet ("nobody", "", "TEST-KERBEROS-1.3.1", &inPrincipal); + printf ("KLCreatePrincipalFromTriplet(nobody@TEST-KERBEROS-1.3.1) (err = %d)\n", err); + if (err == klNoErr) { + err = KLAcquireInitialTickets (inPrincipal, NULL, &outPrincipal, &outCredCacheName); + printf ("KLAcquireInitialTickets(nobody@TEST-KERBEROS-1.3.1) (err = %d)\n", err); + if (err == klNoErr) { + KLDisposeString (outCredCacheName); + KLDisposePrincipal (outPrincipal); + } + + err = KLAcquireNewInitialTickets (inPrincipal, NULL, &outPrincipal, &outCredCacheName); + if (err == klNoErr) { + err = KLGetStringFromPrincipal (outPrincipal, kerberosVersion_V5, &principalString); + if (err == klNoErr) { + err = KLTicketExpirationTime (outPrincipal, kerberosVersion_All, &expirationTime); + printf ("Tickets for principal '%s' expire on %s\n", + principalString, TimeToString(timeString, expirationTime)); + + KLDisposeString (principalString); + } + KLDisposeString (outCredCacheName); + KLDisposePrincipal (outPrincipal); + } + + err = KLChangePassword (inPrincipal); + printf ("KLChangePassword() (err = %d)\n", err); + + err = KLDestroyTickets (inPrincipal); + printf ("KLDestroyTickets() (err = %d)\n", err); + + KLDisposePrincipal (inPrincipal); + } + +} + + +void TestKLPrincipal (void) +{ + KLStatus err = klNoErr; + KLPrincipal extraLongPrincipal = NULL; + KLPrincipal principal = NULL; + KLPrincipal adminPrincipal = NULL; + KLPrincipal adminPrincipalV4 = NULL; + KLPrincipal adminPrincipalV5 = NULL; + char *principalString = NULL; + char *user = NULL; + char *instance = NULL; + char *realm = NULL; + + printf ("Entering TestKLPrincipal()\n"); + printf ("----------------------------------------------------------------\n"); + + err = KLCreatePrincipalFromString ("thisprincipalnameislongerthanissupportedbyKerberos4@TEST-KERBEROS-1.3.1", + kerberosVersion_V5, &extraLongPrincipal); + printf ("KLCreatePrincipalFromString " + "('thisprincipalnameislongerthanissupportedbyKerberos4@TEST-KERBEROS-1.3.1') " + "(err = %s)\n", error_message(err)); + + printf ("----------------------------------------------------------------\n"); + + err = KLCreatePrincipalFromTriplet ("nobody", "", "TEST-KERBEROS-1.3.1", &principal); + printf ("KLCreatePrincipalFromTriplet ('nobody' '' 'TEST-KERBEROS-1.3.1') (err = %s)\n", + error_message(err)); + + if (err == klNoErr) { + err = KLGetStringFromPrincipal (principal, kerberosVersion_V5, &principalString); + if (err == klNoErr) { + printf ("KLGetStringFromPrincipal (nobody@TEST-KERBEROS-1.3.1, v5) returned string '%s'\n", principalString); + KLDisposeString (principalString); + } else { + printf ("KLGetStringFromPrincipal(nobody@TEST-KERBEROS-1.3.1, v5) returned (err = %s)\n", error_message(err)); + } + + err = KLGetStringFromPrincipal (principal, kerberosVersion_V4, &principalString); + if (err == klNoErr) { + printf ("KLGetStringFromPrincipal (nobody@TEST-KERBEROS-1.3.1, v4) returned string '%s'\n", principalString); + KLDisposeString (principalString); + } else { + printf ("KLGetStringFromPrincipal(nobody@TEST-KERBEROS-1.3.1, v4) returned (err = %s)\n", error_message(err)); + } + + err = KLGetTripletFromPrincipal (principal, &user, &instance, &realm); + if (err == klNoErr) { + printf ("KLGetTripletFromPrincipal (nobody@TEST-KERBEROS-1.3.1) returned triplet %s' '%s' '%s'\n", + user, instance, realm); + KLDisposeString (user); + KLDisposeString (instance); + KLDisposeString (realm); + } else { + printf ("KLGetTripletFromPrincipal(nobody@TEST-KERBEROS-1.3.1) returned (err = %s)\n", error_message(err)); + } + } + + printf ("----------------------------------------------------------------\n"); + + err = KLCreatePrincipalFromTriplet ("nobody", "admin", "TEST-KERBEROS-1.3.1", &adminPrincipal); + printf ("KLCreatePrincipalFromTriplet ('nobody' 'admin' 'TEST-KERBEROS-1.3.1') (err = %d)\n", err); + + if (err == klNoErr) { + err = KLGetStringFromPrincipal (adminPrincipal, kerberosVersion_V5, &principalString); + if (err == klNoErr) { + printf ("KLGetStringFromPrincipal (nobody/admin@TEST-KERBEROS-1.3.1, v5) returned string '%s'\n", principalString); + KLDisposeString (principalString); + } else { + printf ("KLGetStringFromPrincipal(nobody/admin@TEST-KERBEROS-1.3.1, v5) returned (err = %d)\n", err); + } + + err = KLGetStringFromPrincipal (adminPrincipal, kerberosVersion_V4, &principalString); + if (err == klNoErr) { + printf ("KLGetStringFromPrincipal (nobody/admin@TEST-KERBEROS-1.3.1, v4) returned string '%s'\n", principalString); + KLDisposeString (principalString); + } else { + printf ("KLGetStringFromPrincipal(nobody/admin@TEST-KERBEROS-1.3.1, v4) returned (err = %d)\n", err); + } + + err = KLGetTripletFromPrincipal (adminPrincipal, &user, &instance, &realm); + if (err == klNoErr) { + printf ("KLGetTripletFromPrincipal (nobody/admin@TEST-KERBEROS-1.3.1) returned triplet %s' '%s' '%s'\n", + user, instance, realm); + KLDisposeString (user); + KLDisposeString (instance); + KLDisposeString (realm); + } else { + printf ("KLGetTripletFromPrincipal(lxs/admin@TEST-KERBEROS-1.3.1) returned (err = %d)\n", err); + } + } + + printf ("----------------------------------------------------------------\n"); + + err = KLCreatePrincipalFromString ("nobody/root@TEST-KERBEROS-1.3.1", kerberosVersion_V5, &adminPrincipalV5); + printf ("KLCreatePrincipalFromString ('nobody/root@TEST-KERBEROS-1.3.1', v5) (err = %d)\n", err); + if (err == klNoErr) { + err = KLGetStringFromPrincipal (adminPrincipalV5, kerberosVersion_V5, &principalString); + if (err == klNoErr) { + printf ("KLGetStringFromPrincipal (nobody/root@TEST-KERBEROS-1.3.1, v5) returned string '%s'\n", principalString); + KLDisposeString (principalString); + } else { + printf ("KLGetStringFromPrincipal(nobody/root@TEST-KERBEROS-1.3.1, v5) returned (err = %d)\n", err); + } + + err = KLGetStringFromPrincipal (adminPrincipalV5, kerberosVersion_V4, &principalString); + if (err == klNoErr) { + printf ("KLGetStringFromPrincipal (nobody/admin@TEST-KERBEROS-1.3.1, v4) returned string '%s'\n", principalString); + KLDisposeString (principalString); + } else { + printf ("KLGetStringFromPrincipal(nobody/admin@TEST-KERBEROS-1.3.1, v4) returned (err = %d)\n", err); + } + + err = KLGetTripletFromPrincipal (adminPrincipalV5, &user, &instance, &realm); + if (err == klNoErr) { + printf ("KLGetTripletFromPrincipal (nobody/admin@TEST-KERBEROS-1.3.1) returned triplet %s' '%s' '%s'\n", + user, instance, realm); + KLDisposeString (user); + KLDisposeString (instance); + KLDisposeString (realm); + } else { + printf ("KLGetTripletFromPrincipal(nobody/admin@TEST-KERBEROS-1.3.1) returned (err = %d)\n", err); + } + } + + printf ("----------------------------------------------------------------\n"); + + err = KLCreatePrincipalFromString ("nobody.admin@TEST-KERBEROS-1.3.1", kerberosVersion_V4, &adminPrincipalV4); + printf ("KLCreatePrincipalFromString ('nobody.admin@TEST-KERBEROS-1.3.1') (err = %d)\n", err); + if (err == klNoErr) { + err = KLGetStringFromPrincipal (adminPrincipalV4, kerberosVersion_V5, &principalString); + if (err == klNoErr) { + printf ("KLGetStringFromPrincipal (nobody.admin@TEST-KERBEROS-1.3.1, v5) returned string '%s'\n", principalString); + KLDisposeString (principalString); + } else { + printf ("KLGetStringFromPrincipal(nobody.admin@TEST-KERBEROS-1.3.1, v5) returned (err = %d)\n", err); + } + + err = KLGetStringFromPrincipal (adminPrincipalV4, kerberosVersion_V4, &principalString); + if (err == klNoErr) { + printf ("KLGetStringFromPrincipal (nobody.admin@TEST-KERBEROS-1.3.1, v4) returned string '%s'\n", principalString); + KLDisposeString (principalString); + } else { + printf ("KLGetStringFromPrincipal(nobody.admin@TEST-KERBEROS-1.3.1, v4) returned (err = %d)\n", err); + } + + err = KLGetTripletFromPrincipal (adminPrincipalV4, &user, &instance, &realm); + if (err == klNoErr) { + printf ("KLGetTripletFromPrincipal (nobody.admin@TEST-KERBEROS-1.3.1) returned triplet %s' '%s' '%s'\n", + user, instance, realm); + KLDisposeString (user); + KLDisposeString (instance); + KLDisposeString (realm); + } else { + printf ("KLGetTripletFromPrincipal(nobody.admin@TEST-KERBEROS-1.3.1) returned (err = %d)\n", err); + } + } + + printf ("----------------------------------------------------------------\n"); + + if (adminPrincipalV4 != NULL && adminPrincipalV5 != NULL) { + KLBoolean equivalent; + + err = KLComparePrincipal (adminPrincipalV5, adminPrincipalV4, &equivalent); + if (err == klNoErr) { + printf ("KLComparePrincipal %s comparing nobody/admin@TEST-KERBEROS-1.3.1 and nobody.admin@TEST-KERBEROS-1.3.1\n", + equivalent ? "passed" : "FAILED"); + } else { + printf ("KLComparePrincipal returned (err = %d)\n", err); + } + } + + if (principal != NULL && adminPrincipalV5 != NULL) { + KLBoolean equivalent; + + err = KLComparePrincipal (principal, adminPrincipalV4, &equivalent); + if (err == klNoErr) { + printf ("KLComparePrincipal %s comparing nobody@TEST-KERBEROS-1.3.1 and nobody.admin@TEST-KERBEROS-1.3.1\n", + equivalent ? "FAILED" : "passed"); + } else { + printf ("KLComparePrincipal returned (err = %d)\n", err); + } + } + + if (principal != NULL && adminPrincipalV5 != NULL) { + KLBoolean equivalent; + + err = KLComparePrincipal (principal, adminPrincipalV5, &equivalent); + if (err == klNoErr) { + printf ("KLComparePrincipal %s comparing nobody@TEST-KERBEROS-1.3.1 and nobody/admin@TEST-KERBEROS-1.3.1\n", + equivalent ? "FAILED" : "passed"); + } else { + printf ("KLComparePrincipal returned (err = %d)\n", err); + } + } + + if (adminPrincipal != NULL && adminPrincipalV5 != NULL) { + KLBoolean equivalent; + + err = KLComparePrincipal (adminPrincipalV5, principal, &equivalent); + if (err == klNoErr) { + printf ("KLComparePrincipal %s comparing nobody/admin@TEST-KERBEROS-1.3.1 and nobody@TEST-KERBEROS-1.3.1\n", + equivalent ? "FAILED" : "passed"); + } else { + printf ("KLComparePrincipal returned (err = %d)\n", err); + } + } + + printf ("----------------------------------------------------------------\n\n"); + + if (extraLongPrincipal != NULL) KLDisposePrincipal (extraLongPrincipal); + if (adminPrincipalV5 != NULL) KLDisposePrincipal (adminPrincipalV5); + if (adminPrincipalV4 != NULL) KLDisposePrincipal (adminPrincipalV4); + if (adminPrincipal != NULL) KLDisposePrincipal (adminPrincipal); + if (principal != NULL) KLDisposePrincipal (principal); +} + + +void TestApplicationOptions (void) +{ + KLSetIdleCallback (MyKerberosLoginIdleCallback, 101); +} + +void TestKerberosRealms (void) +{ + printf ("About to test Kerberos realms\n"); + KLRemoveAllKerberosRealms (); + KLAcquireNewInitialTickets (NULL, NULL, NULL, NULL); + + KLInsertKerberosRealm (realmList_End, "FOO"); + KLInsertKerberosRealm (realmList_End, "BAR"); + KLInsertKerberosRealm (realmList_End, "BAZ"); + KLAcquireNewInitialTickets (NULL, NULL, NULL, NULL); + + KLInsertKerberosRealm (realmList_End, "FOO"); + KLAcquireNewInitialTickets (NULL, NULL, NULL, NULL); + + KLSetKerberosRealm (0, "QUUX"); + KLAcquireNewInitialTickets (NULL, NULL, NULL, NULL); + + KLRemoveKerberosRealm (0); + KLAcquireNewInitialTickets (NULL, NULL, NULL, NULL); + + KLSetKerberosRealm (2, "TEST-KERBEROS-1.3.1"); + KLAcquireNewInitialTickets (NULL, NULL, NULL, NULL); + + KLRemoveAllKerberosRealms (); + KLInsertKerberosRealm (realmList_End, "TEST-KERBEROS-1.3.1"); + KLInsertKerberosRealm (realmList_End, "TEST-KERBEROS-1.0.6"); + KLInsertKerberosRealm (realmList_End, "TESTV5-KERBEROS-1.0.6"); + KLInsertKerberosRealm (realmList_End, "TEST-KERBEROS-1.1.1"); + KLInsertKerberosRealm (realmList_End, "TESTV5-KERBEROS-1.1.1"); + KLInsertKerberosRealm (realmList_End, "TEST-KERBEROS-1.2.0"); + KLInsertKerberosRealm (realmList_End, "TESTV5-KERBEROS-1.2.0"); + KLInsertKerberosRealm (realmList_End, "TEST-HEIMDAL-0.3D"); + KLInsertKerberosRealm (realmList_End, "TESTV5-HEIMDAL-0.3D"); + KLInsertKerberosRealm (realmList_End, "TEST-KTH-KRB-1.1"); +} + + +void TestLoginOptions (void) +{ + KLBoolean optionSetting; + KLStatus err = klNoErr; + KLLifetime lifetime; + + lifetime = 10*60; + KLSetDefaultLoginOption(loginOption_MinimalTicketLifetime, &lifetime, sizeof(KLLifetime)); + + lifetime = 8*60*60; + KLSetDefaultLoginOption(loginOption_MaximalTicketLifetime, &lifetime, sizeof(KLLifetime)); + + lifetime = 8*60*60; + KLSetDefaultLoginOption(loginOption_DefaultTicketLifetime, &lifetime, sizeof(KLLifetime)); + + optionSetting = FALSE; + KLSetDefaultLoginOption(loginOption_DefaultForwardableTicket, &optionSetting, sizeof(optionSetting)); + + optionSetting = TRUE; + KLSetDefaultLoginOption(loginOption_RememberPrincipal, &optionSetting, sizeof(optionSetting)); + + optionSetting = TRUE; + err = KLSetDefaultLoginOption(loginOption_RememberExtras, &optionSetting, sizeof(optionSetting)); + + if (err == klNoErr) { + KLAcquireNewInitialTickets (NULL, NULL, NULL, NULL); + optionSetting = TRUE; + KLAcquireNewInitialTickets (NULL, NULL, NULL, NULL); + } +} + + +/* Lame date formatting stolen from CCacheDump, like ctime but with no \n */ + +static const char *day_name[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; + +static const char *month_name[] = {"January", "February", "March","April","May","June", +"July", "August", "September", "October", "November","December"}; + +char* TimeToString (char* timeString, long t) +{ + /* we come in in 1970 time */ + time_t timer = (time_t) t; + struct tm tm; + + tm = *localtime (&timer); + + sprintf(timeString, "%.3s %.3s%3d %.2d:%.2d:%.2d %d", + day_name[tm.tm_wday], + month_name[tm.tm_mon], + tm.tm_mday, + tm.tm_hour, + tm.tm_min, + tm.tm_sec, + tm.tm_year + 1900); + + return timeString; +} + + +void MyKerberosLoginIdleCallback (KLRefCon inAppData) +{ + syslog (LOG_ALERT, "App got callback while waiting for Mach IPC (appData == %d)\n", inAppData); + // KLCancelAllDialogs (); +} + diff --git a/src/kim/test/test_kll_terminal.c b/src/kim/test/test_kll_terminal.c new file mode 100644 index 000000000..9c22625bf --- /dev/null +++ b/src/kim/test/test_kll_terminal.c @@ -0,0 +1,39 @@ +#include + + + +int main (void) +{ + KLStatus err; + KLPrincipal principal; + char *principalName; + char *cacheName; + + printf ("Testing KLAcquireNewTickets (nil)...\n"); + + err = KLAcquireNewTickets (nil, &principal, &cacheName); + if (err == klNoErr) { + err = KLGetStringFromPrincipal (principal, kerberosVersion_V5, &principalName); + if (err == klNoErr) { + printf ("Got tickets for '%s' in cache '%s'\n", principalName, cacheName); + KLDisposeString (principalName); + } else { + printf ("KLGetStringFromPrincipal() returned (err = %ld)\n", err); + } + KLDisposeString (cacheName); + + printf ("Testing KLChangePassword (principal)...\n"); + + err = KLChangePassword (principal); + if (err != klNoErr) { + printf ("KLChangePassword() returned (err = %ld)\n", err); + } + + KLDisposePrincipal (principal); + } else { + printf ("KLAcquireNewTickets() returned (err = %ld)\n", err); + } + + printf ("All done testing!\n"); + return 0; +} \ No newline at end of file -- 2.26.2