summaryrefslogtreecommitdiffstats
path: root/src/kim/lib/kim_ccache.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kim/lib/kim_ccache.c')
-rw-r--r--src/kim/lib/kim_ccache.c603
1 files changed, 301 insertions, 302 deletions
diff --git a/src/kim/lib/kim_ccache.c b/src/kim/lib/kim_ccache.c
index cf6a18315..6e48eda43 100644
--- a/src/kim/lib/kim_ccache.c
+++ b/src/kim/lib/kim_ccache.c
@@ -6,7 +6,7 @@
* require a specific license from the United States Government.
* It is the responsibility of any person or organization contemplating
* export to obtain such a license before exporting.
- *
+ *
* WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
* distribute this software and its documentation for any purpose and
* without fee is hereby granted, provided that the above copyright
@@ -40,35 +40,35 @@ kim_error kim_ccache_iterator_create (kim_ccache_iterator *out_ccache_iterator)
{
kim_error err = kim_library_init ();
kim_ccache_iterator ccache_iterator = NULL;
-
+
if (!err && !out_ccache_iterator) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
ccache_iterator = malloc (sizeof (*ccache_iterator));
- if (ccache_iterator) {
+ if (ccache_iterator) {
*ccache_iterator = kim_ccache_iterator_initializer;
} else {
- err = KIM_OUT_OF_MEMORY_ERR;
+ err = KIM_OUT_OF_MEMORY_ERR;
}
}
-
+
if (!err) {
err = krb5_error (NULL, krb5_init_context (&ccache_iterator->context));
}
-
+
if (!err) {
err = krb5_error (ccache_iterator->context,
krb5_cccol_cursor_new (ccache_iterator->context,
&ccache_iterator->cursor));
}
-
- if (!err) {
+
+ if (!err) {
*out_ccache_iterator = ccache_iterator;
ccache_iterator = NULL;
}
-
+
kim_ccache_iterator_free (&ccache_iterator);
-
+
return check_error (err);
}
@@ -79,54 +79,54 @@ kim_error kim_ccache_iterator_next (kim_ccache_iterator in_ccache_iterator,
{
kim_error err = KIM_NO_ERROR;
krb5_ccache ccache = NULL;
-
+
if (!err && !in_ccache_iterator) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = krb5_cccol_cursor_next (in_ccache_iterator->context,
+ err = krb5_cccol_cursor_next (in_ccache_iterator->context,
in_ccache_iterator->cursor,
&ccache);
if (err == KRB5_CC_END) {
ccache = NULL; /* out of ccaches */
err = KIM_NO_ERROR;
- }
+ }
}
-
+
if (!err && ccache && in_ccache_iterator->first) {
krb5_principal principal = NULL;
-
+
/* krb5 API is sneaky and returns a single empty ccache if the
* cache collection is empty. Check for it: */
err = krb5_error (in_ccache_iterator->context,
- krb5_cc_get_principal (in_ccache_iterator->context,
- ccache,
+ krb5_cc_get_principal (in_ccache_iterator->context,
+ ccache,
&principal));
-
+
if (err) {
krb5_cc_close (in_ccache_iterator->context, ccache);
ccache = NULL;
err = KIM_NO_ERROR;
}
-
- if (principal) { krb5_free_principal (in_ccache_iterator->context,
+
+ if (principal) { krb5_free_principal (in_ccache_iterator->context,
principal); }
}
-
+
if (!err) {
in_ccache_iterator->first = 0;
-
+
if (ccache) {
err = kim_ccache_create_from_krb5_ccache (out_ccache,
- in_ccache_iterator->context,
+ in_ccache_iterator->context,
ccache);
} else {
*out_ccache = NULL; /* no more ccaches */
- }
+ }
}
-
+
if (ccache) { krb5_cc_close (in_ccache_iterator->context, ccache); }
-
+
return check_error (err);
}
@@ -135,12 +135,12 @@ kim_error kim_ccache_iterator_next (kim_ccache_iterator in_ccache_iterator,
void kim_ccache_iterator_free (kim_ccache_iterator *io_ccache_iterator)
{
if (io_ccache_iterator && *io_ccache_iterator) {
- if ((*io_ccache_iterator)->context) {
+ if ((*io_ccache_iterator)->context) {
if ((*io_ccache_iterator)->cursor) {
- krb5_cccol_cursor_free ((*io_ccache_iterator)->context,
+ krb5_cccol_cursor_free ((*io_ccache_iterator)->context,
&(*io_ccache_iterator)->cursor);
}
- krb5_free_context ((*io_ccache_iterator)->context);
+ krb5_free_context ((*io_ccache_iterator)->context);
}
free (*io_ccache_iterator);
*io_ccache_iterator = NULL;
@@ -165,16 +165,16 @@ static kim_error kim_ccache_create_resolve_name (kim_string *out_resolve_name,
kim_string in_type)
{
kim_error err = KIM_NO_ERROR;
-
+
if (!err && !out_resolve_name) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_name ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_type ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_string_create_from_format (out_resolve_name, "%s:%s",
+ err = kim_string_create_from_format (out_resolve_name, "%s:%s",
in_type, in_name);
}
-
+
return check_error (err);
}
@@ -186,23 +186,23 @@ static inline kim_error kim_ccache_allocate (kim_ccache *out_ccache)
{
kim_error err = kim_library_init ();
kim_ccache ccache = NULL;
-
+
if (!err && !out_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
ccache = malloc (sizeof (*ccache));
if (!ccache) { err = KIM_OUT_OF_MEMORY_ERR; }
}
-
+
if (!err) {
*ccache = kim_ccache_initializer;
*out_ccache = ccache;
ccache = NULL;
}
-
+
kim_ccache_free (&ccache);
-
- return check_error (err);
+
+ return check_error (err);
}
/* ------------------------------------------------------------------------ */
@@ -227,27 +227,27 @@ kim_error kim_ccache_create_new_with_password (kim_ccache *out_ccache,
kim_error err = KIM_NO_ERROR;
kim_credential credential = NULL;
kim_identity client_identity = NULL;
-
+
if (!err && !out_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_credential_create_new_with_password (&credential,
- in_client_identity,
+ err = kim_credential_create_new_with_password (&credential,
+ in_client_identity,
in_options,
in_password);
}
-
+
if (!err) {
err = kim_credential_get_client_identity (credential, &client_identity);
}
-
+
if (!err) {
err = kim_credential_store (credential, client_identity, out_ccache);
}
-
+
kim_identity_free (&client_identity);
kim_credential_free (&credential);
-
+
return check_error (err);
}
@@ -272,20 +272,20 @@ kim_error kim_ccache_create_new_if_needed_with_password (kim_ccache *out_ccach
{
kim_error err = KIM_NO_ERROR;
kim_ccache ccache = NULL;
-
+
if (!err && !out_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_client_identity) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
kim_credential_state state;
-
- err = kim_ccache_create_from_client_identity (&ccache,
+
+ err = kim_ccache_create_from_client_identity (&ccache,
in_client_identity);
-
+
if (!err) {
err = kim_ccache_get_state (ccache, &state);
}
-
+
if (!err && state != kim_credentials_state_valid) {
if (state == kim_credentials_state_needs_validation) {
err = kim_ccache_validate (ccache, in_options);
@@ -294,23 +294,23 @@ kim_error kim_ccache_create_new_if_needed_with_password (kim_ccache *out_ccach
ccache = NULL;
}
}
-
+
if (!ccache) {
/* ccache does not already exist, create a new one */
- err = kim_ccache_create_new_with_password (&ccache,
- in_client_identity,
- in_options,
+ err = kim_ccache_create_new_with_password (&ccache,
+ in_client_identity,
+ in_options,
in_password);
- }
+ }
}
-
+
if (!err) {
*out_ccache = ccache;
ccache = NULL;
}
-
+
kim_ccache_free (&ccache);
-
+
return check_error (err);
}
@@ -320,62 +320,62 @@ kim_error kim_ccache_create_from_client_identity (kim_ccache *out_ccache,
kim_identity in_client_identity)
{
kim_error err = KIM_NO_ERROR;
-
+
if (!err && !out_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err && in_client_identity) {
kim_ccache_iterator iterator = NULL;
kim_boolean found = FALSE;
err = kim_ccache_iterator_create (&iterator);
-
+
while (!err && !found) {
kim_ccache ccache = NULL;
kim_identity identity = NULL;
kim_comparison comparison;
-
+
err = kim_ccache_iterator_next (iterator, &ccache);
-
+
if (!err && !ccache) {
kim_string string = NULL;
-
- err = kim_identity_get_display_string (in_client_identity,
+
+ err = kim_identity_get_display_string (in_client_identity,
&string);
-
+
if (!err) {
- err = kim_error_set_message_for_code (KIM_NO_SUCH_PRINCIPAL_ERR,
+ err = kim_error_set_message_for_code (KIM_NO_SUCH_PRINCIPAL_ERR,
string);
}
-
+
kim_string_free (&string);
}
-
+
if (!err) {
err = kim_ccache_get_client_identity (ccache, &identity);
}
-
+
if (!err) {
- err = kim_identity_compare (in_client_identity, identity,
+ err = kim_identity_compare (in_client_identity, identity,
&comparison);
}
-
+
if (!err && kim_comparison_is_equal_to (comparison)) {
found = 1;
*out_ccache = ccache;
ccache = NULL;
}
-
+
kim_identity_free (&identity);
kim_ccache_free (&ccache);
}
-
+
kim_ccache_iterator_free (&iterator);
-
+
} else if (!err) {
/* in_client_identity is NULL, get default ccache */
err = kim_ccache_create_from_default (out_ccache);
}
-
+
return check_error (err);
}
@@ -391,25 +391,25 @@ kim_error kim_ccache_create_from_keytab (kim_ccache *out_ccache,
kim_error err = KIM_NO_ERROR;
kim_credential credential = NULL;
kim_identity client_identity = NULL;
-
+
if (!err && !out_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_credential_create_from_keytab (&credential, in_identity,
+ err = kim_credential_create_from_keytab (&credential, in_identity,
in_options, in_keytab);
}
-
+
if (!err) {
err = kim_credential_get_client_identity (credential, &client_identity);
}
-
+
if (!err) {
err = kim_credential_store (credential, client_identity, out_ccache);
}
-
+
kim_identity_free (&client_identity);
kim_credential_free (&credential);
-
+
return check_error (err);
}
@@ -421,29 +421,29 @@ kim_error kim_ccache_create_from_default (kim_ccache *out_ccache)
{
kim_error err = KIM_NO_ERROR;
kim_ccache ccache = NULL;
-
+
if (!err && !out_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
err = kim_ccache_allocate (&ccache);
}
-
+
if (!err) {
err = krb5_error (NULL, krb5_init_context (&ccache->context));
}
-
+
if (!err) {
err = krb5_error (ccache->context,
krb5_cc_default (ccache->context, &ccache->ccache));
}
-
+
if (!err) {
*out_ccache = ccache;
ccache = NULL;
}
-
+
kim_ccache_free (&ccache);
-
+
return check_error (err);
}
@@ -454,31 +454,31 @@ kim_error kim_ccache_create_from_display_name (kim_ccache *out_ccache,
{
kim_error err = KIM_NO_ERROR;
kim_ccache ccache = NULL;
-
+
if (!err && !out_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_display_name) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
err = kim_ccache_allocate (&ccache);
}
-
+
if (!err) {
err = krb5_error (NULL, krb5_init_context (&ccache->context));
}
-
+
if (!err) {
err = krb5_error (ccache->context,
- krb5_cc_resolve (ccache->context, in_display_name,
+ krb5_cc_resolve (ccache->context, in_display_name,
&ccache->ccache));
}
-
+
if (!err) {
*out_ccache = ccache;
ccache = NULL;
}
-
+
kim_ccache_free (&ccache);
-
+
return check_error (err);
}
@@ -490,21 +490,21 @@ kim_error kim_ccache_create_from_type_and_name (kim_ccache *out_ccache,
{
kim_error err = KIM_NO_ERROR;
kim_string resolve_name = NULL;
-
+
if (!err && !out_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_name ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_type ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
err = kim_ccache_create_resolve_name (&resolve_name, in_name, in_type);
}
-
+
if (!err) {
err = kim_ccache_create_from_display_name (out_ccache, resolve_name);
}
-
+
kim_string_free (&resolve_name);
-
+
return check_error (err);
}
@@ -515,18 +515,18 @@ kim_error kim_ccache_create_from_krb5_ccache (kim_ccache *out_ccache,
krb5_ccache in_krb5_ccache)
{
kim_error err = KIM_NO_ERROR;
-
+
if (!err && !out_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_krb5_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_krb5_context) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
kim_string type = krb5_cc_get_type (in_krb5_context, in_krb5_ccache);
kim_string name = krb5_cc_get_name (in_krb5_context, in_krb5_ccache);
-
+
err = kim_ccache_create_from_type_and_name (out_ccache, type, name);
}
-
+
return check_error (err);
}
@@ -538,25 +538,25 @@ kim_error kim_ccache_copy (kim_ccache *out_ccache,
kim_error err = KIM_NO_ERROR;
kim_string name = NULL;
kim_string type = NULL;
-
+
if (!err && !out_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
err = kim_ccache_get_name (in_ccache, &name);
}
-
+
if (!err) {
err = kim_ccache_get_type (in_ccache, &type);
}
-
+
if (!err) {
err = kim_ccache_create_from_type_and_name (out_ccache, type, name);
}
-
+
kim_string_free (&name);
kim_string_free (&type);
-
+
return check_error (err);
}
@@ -569,28 +569,28 @@ kim_error kim_ccache_compare (kim_ccache in_ccache,
kim_comparison *out_comparison)
{
kim_error err = KIM_NO_ERROR;
-
+
if (!err && !in_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_compare_to_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_comparison ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- const char *type = krb5_cc_get_type (in_ccache->context,
+ const char *type = krb5_cc_get_type (in_ccache->context,
in_ccache->ccache);
- const char *compare_to_type = krb5_cc_get_type (in_compare_to_ccache->context,
+ const char *compare_to_type = krb5_cc_get_type (in_compare_to_ccache->context,
in_compare_to_ccache->ccache);
- const char *name = krb5_cc_get_name (in_ccache->context,
+ const char *name = krb5_cc_get_name (in_ccache->context,
in_ccache->ccache);
- const char *compare_to_name = krb5_cc_get_name (in_compare_to_ccache->context,
+ const char *compare_to_name = krb5_cc_get_name (in_compare_to_ccache->context,
in_compare_to_ccache->ccache);
-
+
*out_comparison = strcmp (type, compare_to_type);
-
+
if (*out_comparison == 0) {
*out_comparison = strcmp (name, compare_to_name);
}
}
-
+
return check_error (err);
}
@@ -602,23 +602,23 @@ kim_error kim_ccache_get_krb5_ccache (kim_ccache in_ccache,
{
kim_error err = KIM_NO_ERROR;
kim_string resolve_name = NULL;
-
+
if (!err && !in_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_krb5_context) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_krb5_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
err = kim_ccache_get_display_name (in_ccache, &resolve_name);
}
-
+
if (!err) {
err = krb5_error (in_krb5_context,
- krb5_cc_resolve (in_krb5_context, resolve_name,
+ krb5_cc_resolve (in_krb5_context, resolve_name,
out_krb5_ccache));
}
-
+
kim_string_free (&resolve_name);
-
+
return check_error (err);
}
@@ -628,15 +628,15 @@ kim_error kim_ccache_get_type (kim_ccache in_ccache,
kim_string *out_type)
{
kim_error err = KIM_NO_ERROR;
-
+
if (!err && !in_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_type ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_string_copy (out_type, krb5_cc_get_type (in_ccache->context,
+ err = kim_string_copy (out_type, krb5_cc_get_type (in_ccache->context,
in_ccache->ccache));
}
-
+
return check_error (err);
}
@@ -646,15 +646,15 @@ kim_error kim_ccache_get_name (kim_ccache in_ccache,
kim_string *out_name)
{
kim_error err = KIM_NO_ERROR;
-
+
if (!err && !in_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_name ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_string_copy (out_name, krb5_cc_get_name (in_ccache->context,
+ err = kim_string_copy (out_name, krb5_cc_get_name (in_ccache->context,
in_ccache->ccache));
}
-
+
return check_error (err);
}
@@ -664,19 +664,19 @@ kim_error kim_ccache_get_display_name (kim_ccache in_ccache,
kim_string *out_display_name)
{
kim_error err = KIM_NO_ERROR;
-
+
if (!err && !in_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_display_name) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- kim_string type = krb5_cc_get_type (in_ccache->context,
+ kim_string type = krb5_cc_get_type (in_ccache->context,
in_ccache->ccache);
- kim_string name = krb5_cc_get_name (in_ccache->context,
+ kim_string name = krb5_cc_get_name (in_ccache->context,
in_ccache->ccache);
-
+
err = kim_ccache_create_resolve_name (out_display_name, name, type);
}
-
+
return check_error (err);
}
@@ -687,25 +687,25 @@ kim_error kim_ccache_get_client_identity (kim_ccache in_ccache,
{
kim_error err = KIM_NO_ERROR;
krb5_principal principal = NULL;
-
+
if (!err && !in_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_client_identity) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
err = krb5_error (in_ccache->context,
- krb5_cc_get_principal (in_ccache->context,
- in_ccache->ccache,
+ krb5_cc_get_principal (in_ccache->context,
+ in_ccache->ccache,
&principal));
}
-
+
if (!err) {
err = kim_identity_create_from_krb5_principal (out_client_identity,
- in_ccache->context,
+ in_ccache->context,
principal);
}
-
+
if (principal) { krb5_free_principal (in_ccache->context, principal); }
-
+
return check_error (err);
}
@@ -723,110 +723,110 @@ static kim_error kim_ccache_get_dominant_credential (kim_ccache in_cc
kim_boolean dominant_is_tgt = FALSE;
kim_credential_state dominant_state = kim_credentials_state_valid;
kim_credential dominant_credential = NULL;
-
+
if (!err && !in_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
err = kim_credential_iterator_create (&iterator, in_ccache);
}
-
+
while (!err && !out_of_credentials && !found_valid_tgt) {
kim_credential credential = NULL;
-
+
err = kim_credential_iterator_next (iterator, &credential);
-
+
if (!err && !credential) {
out_of_credentials = TRUE;
-
+
} else if (!err) {
kim_credential_state state = kim_credentials_state_valid;
kim_boolean is_tgt = FALSE;
-
+
err = kim_credential_get_state (credential, &state);
-
+
if (!err) {
kim_identity service_identity = NULL;
-
- err = kim_credential_get_service_identity (credential,
+
+ err = kim_credential_get_service_identity (credential,
&service_identity);
-
+
if (!err) {
err = kim_identity_is_tgt_service (service_identity, &is_tgt);
}
-
+
kim_identity_free (&service_identity);
}
-
+
if (!err) {
- /* There are three cases where we replace:
+ /* There are three cases where we replace:
* 1) We don't have a dominant yet
* 2) This is a tgt and dominant isn't
* 3) Both are tgts but this is valid and dominant isn't */
-
- if ((!dominant_credential) /* 1 */ ||
+
+ if ((!dominant_credential) /* 1 */ ||
(is_tgt && !dominant_is_tgt) /* 2 */ ||
- (is_tgt && dominant_is_tgt && /* 3 */
+ (is_tgt && dominant_is_tgt && /* 3 */
state == kim_credentials_state_valid &&
dominant_state != kim_credentials_state_valid)) {
/* replace */
kim_credential_free (&dominant_credential);
-
+
dominant_credential = credential;
credential = NULL; /* take ownership */
-
+
dominant_is_tgt = is_tgt;
dominant_state = state;
}
-
- if (dominant_is_tgt &&
+
+ if (dominant_is_tgt &&
dominant_state == kim_credentials_state_valid) {
/* Since we will never replace a valid tgt, stop here */
found_valid_tgt = TRUE;
}
}
}
-
+
kim_credential_free (&credential);
}
-
+
if (!err && !dominant_credential) {
kim_identity identity = NULL;
kim_string identity_string = NULL;
-
+
err = kim_ccache_get_client_identity (in_ccache, &identity);
-
+
if (!err) {
- err = kim_identity_get_display_string (identity,
+ err = kim_identity_get_display_string (identity,
&identity_string);
}
-
+
if (!err) {
- err = kim_error_set_message_for_code (KIM_NO_CREDENTIALS_ERR,
+ err = kim_error_set_message_for_code (KIM_NO_CREDENTIALS_ERR,
identity_string);
- }
+ }
kim_string_free (&identity_string);
kim_identity_free (&identity);
}
-
+
if (!err) {
if (out_is_tgt) {
*out_is_tgt = dominant_is_tgt;
}
-
+
if (out_state) {
*out_state = dominant_state;
}
-
+
if (out_credential) {
*out_credential = dominant_credential;
dominant_credential = NULL; /* take ownership */
}
}
-
+
kim_credential_free (&dominant_credential);
kim_credential_iterator_free (&iterator);
-
+
return check_error (err);
}
@@ -839,57 +839,57 @@ kim_error kim_ccache_get_valid_credential (kim_ccache in_ccache,
kim_boolean is_tgt = FALSE;
kim_credential_state state = kim_credentials_state_valid;
kim_credential credential = NULL;
-
+
if (!err && !in_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_credential) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_ccache_get_dominant_credential (in_ccache,
+ err = kim_ccache_get_dominant_credential (in_ccache,
&state, &is_tgt, &credential);
}
-
+
if (!err && state != kim_credentials_state_valid) {
kim_identity identity = NULL;
kim_string identity_string = NULL;
-
+
err = kim_ccache_get_client_identity (in_ccache, &identity);
-
+
if (!err) {
- err = kim_identity_get_display_string (identity,
+ err = kim_identity_get_display_string (identity,
&identity_string);
}
-
+
if (!err) {
if (state == kim_credentials_state_expired) {
- err = kim_error_set_message_for_code (KIM_CREDENTIALS_EXPIRED_ERR,
+ err = kim_error_set_message_for_code (KIM_CREDENTIALS_EXPIRED_ERR,
identity_string);
-
+
} else if (state == kim_credentials_state_not_yet_valid ||
state == kim_credentials_state_needs_validation) {
- err = kim_error_set_message_for_code (KIM_NEEDS_VALIDATION_ERR,
+ err = kim_error_set_message_for_code (KIM_NEEDS_VALIDATION_ERR,
identity_string);
-
+
} else if (state == kim_credentials_state_address_mismatch) {
- err = kim_error_set_message_for_code (KIM_BAD_IP_ADDRESS_ERR,
- identity_string);
+ err = kim_error_set_message_for_code (KIM_BAD_IP_ADDRESS_ERR,
+ identity_string);
} else {
/* just default to this */
- err = kim_error_set_message_for_code (KIM_NEEDS_VALIDATION_ERR,
+ err = kim_error_set_message_for_code (KIM_NEEDS_VALIDATION_ERR,
identity_string);
}
}
-
+
kim_string_free (&identity_string);
kim_identity_free (&identity);
}
-
+
if (!err) {
*out_credential = credential;
credential = NULL; /* take ownership */
}
-
+
kim_credential_free (&credential);
-
+
return check_error (err);
}
@@ -899,16 +899,16 @@ kim_error kim_ccache_get_state (kim_ccache in_ccache,
kim_credential_state *out_state)
{
kim_error err = KIM_NO_ERROR;
-
+
if (!err && !in_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_state) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_ccache_get_dominant_credential (in_ccache,
+ err = kim_ccache_get_dominant_credential (in_ccache,
out_state, NULL, NULL);
}
-
- return check_error (err);
+
+ return check_error (err);
}
/* ------------------------------------------------------------------------ */
@@ -918,21 +918,21 @@ kim_error kim_ccache_get_start_time (kim_ccache in_ccache,
{
kim_error err = KIM_NO_ERROR;
kim_credential credential = NULL;
-
+
if (!err && !in_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_start_time) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL,
+ err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL,
&credential);
}
-
+
if (!err) {
err = kim_credential_get_start_time (credential, out_start_time);
}
-
+
kim_credential_free (&credential);
-
+
return check_error (err);
}
@@ -943,22 +943,22 @@ kim_error kim_ccache_get_expiration_time (kim_ccache in_ccache,
{
kim_error err = KIM_NO_ERROR;
kim_credential credential = NULL;
-
+
if (!err && !in_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_expiration_time) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL,
+ err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL,
&credential);
}
-
+
if (!err) {
- err = kim_credential_get_expiration_time (credential,
+ err = kim_credential_get_expiration_time (credential,
out_expiration_time);
}
-
+
kim_credential_free (&credential);
-
+
return check_error (err);
}
@@ -969,22 +969,22 @@ kim_error kim_ccache_get_renewal_expiration_time (kim_ccache in_ccache,
{
kim_error err = KIM_NO_ERROR;
kim_credential credential = NULL;
-
+
if (!err && !in_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_renewal_expiration_time) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL,
+ err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL,
&credential);
}
-
+
if (!err) {
- err = kim_credential_get_renewal_expiration_time (credential,
+ err = kim_credential_get_renewal_expiration_time (credential,
out_renewal_expiration_time);
}
-
+
kim_credential_free (&credential);
-
+
return check_error (err);
}
@@ -995,21 +995,21 @@ kim_error kim_ccache_get_options (kim_ccache in_ccache,
{
kim_error err = KIM_NO_ERROR;
kim_credential credential = NULL;
-
+
if (!err && !in_ccache ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !out_options) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
- err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL,
+ err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL,
&credential);
}
-
+
if (!err) {
err = kim_credential_get_options (credential, out_options);
}
-
+
kim_credential_free (&credential);
-
+
return check_error (err);
}
@@ -1020,104 +1020,104 @@ kim_error kim_ccache_get_options (kim_ccache in_ccache,
kim_error kim_ccache_set_default (kim_ccache io_ccache)
{
kim_error err = KIM_NO_ERROR;
-
+
if (!err && !io_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
char *environment_ccache_name = getenv ("KRB5CCNAME");
-
+
if (environment_ccache_name) {
kim_ccache environment_ccache = NULL;
kim_comparison comparison;
-
+
err = kim_ccache_create_from_display_name (&environment_ccache,
environment_ccache_name);
-
+
if (!err) {
- err = kim_ccache_compare (io_ccache,
+ err = kim_ccache_compare (io_ccache,
environment_ccache,
&comparison);
}
-
+
if (!err && !kim_comparison_is_equal_to (comparison)) {
krb5_principal client_principal = NULL;
- /* KRB5CCNAME is set and does not point to this ccache.
+ /* KRB5CCNAME is set and does not point to this ccache.
* Move the creds and make this kim_ccache_t object refer to that ccache. */
-
+
err = krb5_error (io_ccache->context,
- krb5_cc_get_principal (io_ccache->context,
- io_ccache->ccache,
+ krb5_cc_get_principal (io_ccache->context,
+ io_ccache->ccache,
&client_principal));
-
+
if (!err) {
err = krb5_error (io_ccache->context,
- krb5_cc_initialize (environment_ccache->context,
- environment_ccache->ccache,
+ krb5_cc_initialize (environment_ccache->context,
+ environment_ccache->ccache,
client_principal));
}
-
+
if (!err) {
err = krb5_error (io_ccache->context,
- krb5_cc_copy_creds (io_ccache->context,
- io_ccache->ccache,
+ krb5_cc_copy_creds (io_ccache->context,
+ io_ccache->ccache,
environment_ccache->ccache));
}
-
- if (client_principal) { krb5_free_principal (io_ccache->context,
+
+ if (client_principal) { krb5_free_principal (io_ccache->context,
client_principal); }
-
+
if (!err) {
kim_ccache_destroy (&io_ccache);
io_ccache = environment_ccache;
environment_ccache = NULL; /* take ownership */
}
}
-
+
kim_ccache_free (&environment_ccache);
-
+
} else {
#ifdef USE_CCAPI
kim_string type = NULL;
kim_string name = NULL;
cc_context_t cc_context = NULL;
cc_ccache_t cc_ccache = NULL;
-
+
err = kim_ccache_get_type (io_ccache, &type);
-
+
if (!err && strcmp (type, "API")) {
#endif
kim_string display_name = NULL;
/* Not a CCAPI ccache; can't set to default */
-
+
err = kim_ccache_get_display_name (io_ccache, &display_name);
-
+
if (!err) {
- err = kim_error_set_message_for_code (KIM_CANT_BECOME_DEFAULT_ERR,
+ err = kim_error_set_message_for_code (KIM_CANT_BECOME_DEFAULT_ERR,
display_name);
}
-
+
kim_string_free (&display_name);
#ifdef USE_CCAPI
}
-
+
if (!err) {
err = kim_ccache_get_name (io_ccache, &name);
}
-
+
/* get a CCAPI ccache for this cache */
if (!err) {
err = cc_initialize (&cc_context, ccapi_version_4, NULL, NULL);
}
-
+
if (!err) {
err = cc_context_open_ccache (cc_context, name, &cc_ccache);
}
-
+
if (!err) {
err = cc_ccache_set_default (cc_ccache);
}
-
+
if (cc_context) { cc_context_release (cc_context); }
if (cc_ccache ) { cc_ccache_release (cc_ccache); }
kim_string_free (&name);
@@ -1125,7 +1125,7 @@ kim_error kim_ccache_set_default (kim_ccache io_ccache)
#endif
}
}
-
+
return check_error (err);
}
@@ -1140,20 +1140,20 @@ kim_error kim_ccache_verify (kim_ccache in_ccache,
{
kim_error err = KIM_NO_ERROR;
kim_credential credential = NULL;
-
+
if (!err && !in_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
err = kim_ccache_get_valid_credential (in_ccache, &credential);
}
-
+
if (!err) {
- err = kim_credential_verify (credential, in_service_identity,
+ err = kim_credential_verify (credential, in_service_identity,
in_keytab, in_fail_if_no_service_key);
}
-
+
kim_credential_free (&credential);
-
+
return check_error (err);
}
@@ -1167,28 +1167,28 @@ kim_error kim_ccache_renew (kim_ccache in_ccache,
kim_error err = KIM_NO_ERROR;
kim_credential credential = NULL;
kim_identity client_identity = NULL;
-
+
if (!err && !in_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
err = kim_ccache_get_valid_credential (in_ccache, &credential);
}
-
+
if (!err) {
err = kim_credential_renew (&credential, in_options);
}
-
+
if (!err) {
err = kim_ccache_get_client_identity (in_ccache, &client_identity);
}
-
+
if (!err) {
err = kim_credential_store (credential, client_identity, NULL);
}
-
+
kim_identity_free (&client_identity);
kim_credential_free (&credential);
-
+
return check_error (err);
}
@@ -1200,28 +1200,28 @@ kim_error kim_ccache_validate (kim_ccache in_ccache,
kim_error err = KIM_NO_ERROR;
kim_credential credential = NULL;
kim_identity client_identity = NULL;
-
+
if (!err && !in_ccache) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
+
if (!err) {
err = kim_ccache_get_valid_credential (in_ccache, &credential);
}
-
+
if (!err) {
err = kim_credential_validate (&credential, in_options);
}
-
+
if (!err) {
err = kim_ccache_get_client_identity (in_ccache, &client_identity);
}
-
+
if (!err) {
err = kim_credential_store (credential, client_identity, NULL);
}
-
+
kim_identity_free (&client_identity);
kim_credential_free (&credential);
-
+
return check_error (err);
}
@@ -1232,18 +1232,18 @@ kim_error kim_ccache_validate (kim_ccache in_ccache,
kim_error kim_ccache_destroy (kim_ccache *io_ccache)
{
kim_error err = KIM_NO_ERROR;
-
+
if (io_ccache && *io_ccache) {
err = krb5_error ((*io_ccache)->context,
- krb5_cc_destroy ((*io_ccache)->context,
+ krb5_cc_destroy ((*io_ccache)->context,
(*io_ccache)->ccache));
-
- if (!err) {
- (*io_ccache)->ccache = NULL;
+
+ if (!err) {
+ (*io_ccache)->ccache = NULL;
kim_ccache_free (io_ccache);
}
}
-
+
return check_error (err);
}
@@ -1252,14 +1252,13 @@ kim_error kim_ccache_destroy (kim_ccache *io_ccache)
void kim_ccache_free (kim_ccache *io_ccache)
{
if (io_ccache && *io_ccache) {
- if ((*io_ccache)->context) {
+ if ((*io_ccache)->context) {
if ((*io_ccache)->ccache) {
krb5_cc_close ((*io_ccache)->context, (*io_ccache)->ccache);
}
- krb5_free_context ((*io_ccache)->context);
+ krb5_free_context ((*io_ccache)->context);
}
free (*io_ccache);
*io_ccache = NULL;
}
}
-