KLStatus __KLGetTripletFromPrincipal (KLPrincipal inPrincipal, KLKerberosVersion inKerberosVersion, char **outName, char **outInstance, char **outRealm) { LOG_UNIMPLEMENTED(); if (CHECK_VERSION(inKerberosVersion)) return LOG_FAILURE(klInvalidVersionErr, "wrong version"); return EINVAL; }
KLStatus __KLCreatePrincipalFromTriplet (const char *inName, const char *inInstance, const char *inRealm, KLKerberosVersion inKerberosVersion, KLPrincipal *outPrincipal) { LOG_UNIMPLEMENTED(); if (CHECK_VERSION(inKerberosVersion)) return LOG_FAILURE(klInvalidVersionErr, "wrong version"); return EINVAL; }
KLStatus KLGetStringFromPrincipal (KLPrincipal inPrincipal, KLKerberosVersion inKerberosVersion, char **outFullPrincipal) { LOG_ENTRY(); if (inPrincipal == NULL) return klParameterErr; if (CHECK_VERSION(inKerberosVersion)) return LOG_FAILURE(klInvalidVersionErr, "wrong version"); return heim_krb5_unparse_name(milcontext, inPrincipal, outFullPrincipal); }
KLStatus KLCreatePrincipalFromString (const char *inFullPrincipal, KLKerberosVersion inKerberosVersion, KLPrincipal *outPrincipal) { LOG_ENTRY(); if (CHECK_VERSION(inKerberosVersion)) return LOG_FAILURE(klInvalidVersionErr, "wrong version"); if (inFullPrincipal == NULL) return klParameterErr; return heim_krb5_parse_name(milcontext, inFullPrincipal, outPrincipal); }
extern "C" int __declspec(dllexport) Load(PLUGINLINK *link) { pluginLink = link; CHECK_VERSION("SIP_CLI") // TODO Assert results here mir_getMMI(&mmi); mir_getUTFI(&utfi); HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); HookEvent(ME_SYSTEM_PRESHUTDOWN, PreShutdown); return 0; }
KLStatus KLTicketExpirationTime (KLPrincipal inPrincipal, KLKerberosVersion inKerberosVersion, KLTime *outExpirationTime) { krb5_error_code ret; krb5_creds *creds; LOG_ENTRY(); if (CHECK_VERSION(inKerberosVersion)) return LOG_FAILURE(klInvalidVersionErr, "wrong version"); ret = fetch_creds(inPrincipal, &creds, NULL); if (ret) return LOG_FAILURE(ret, "fetch tickets failed"); *outExpirationTime = creds->times.endtime; heim_krb5_free_creds(milcontext, creds); return klNoErr; }
KLStatus KLCacheHasValidTickets (KLPrincipal inPrincipal, KLKerberosVersion inKerberosVersion, KLBoolean *outFoundValidTickets, KLPrincipal *outPrincipal, char **outCredCacheName) { krb5_error_code ret; krb5_creds *ocreds = NULL; LOG_ENTRY(); if (outPrincipal) *outPrincipal = NULL; if (CHECK_VERSION(inKerberosVersion)) return LOG_FAILURE(klInvalidVersionErr, "wrong version"); ret = fetch_creds(inPrincipal, &ocreds, outCredCacheName); if (ret == 0) { time_t t = time(NULL); /* consinder tickets that are slightly too young as valid * since might just have fetched them */ *outFoundValidTickets = (ocreds->times.starttime - 10 < t) && (t < ocreds->times.endtime); if (outPrincipal) (void)heim_krb5_copy_principal(milcontext, ocreds->client, outPrincipal); heim_krb5_free_creds(milcontext, ocreds); } else { LOG_FAILURE(ret, "fetch tickets failed"); ret = 0; *outFoundValidTickets = 0; } return LOG_FAILURE(ret, "KLCacheHasValidTickets"); }