summaryrefslogtreecommitdiffstats
path: root/src/kim/lib/kim_identity.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kim/lib/kim_identity.c')
-rw-r--r--src/kim/lib/kim_identity.c85
1 files changed, 59 insertions, 26 deletions
diff --git a/src/kim/lib/kim_identity.c b/src/kim/lib/kim_identity.c
index 2fd8579d0..e427a2a1b 100644
--- a/src/kim/lib/kim_identity.c
+++ b/src/kim/lib/kim_identity.c
@@ -450,6 +450,57 @@ kim_error kim_identity_get_component_at_index (kim_identity in_identity,
/* ------------------------------------------------------------------------ */
+kim_error kim_identity_get_components (kim_identity in_identity,
+ kim_string *out_components)
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_string components = NULL;
+ kim_count count, i;
+
+ if (!err && !in_identity ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
+ if (!err && !out_components) { err = check_error (KIM_NULL_PARAMETER_ERR); }
+
+ if (!err) {
+ err = kim_identity_get_number_of_components (in_identity, &count);
+ }
+
+ if (!err) {
+ err = kim_identity_get_component_at_index (in_identity, 0, &components);
+ }
+
+ for (i = 1; !err && i < count; i++) {
+ kim_string new_components = NULL;
+ kim_string component = NULL;
+
+ err = kim_identity_get_component_at_index (in_identity, 0, &component);
+
+ if (!err) {
+ err = kim_string_create_from_format (&new_components, "%s/%s",
+ components, component);
+ }
+
+ if (!err) {
+ kim_string_free (&components);
+ components = new_components;
+ new_components = NULL;
+ }
+
+ if (component ) { kim_string_free (&component); }
+ if (new_components) { kim_string_free (&new_components); }
+ }
+
+ if (!err) {
+ *out_components = components;
+ components = NULL;
+ }
+
+ if (components) { kim_string_free (&components); }
+
+ return check_error (err);
+}
+
+/* ------------------------------------------------------------------------ */
+
kim_error kim_identity_get_krb5_principal (kim_identity in_identity,
krb5_context in_krb5_context,
krb5_principal *out_krb5_principal)
@@ -471,32 +522,6 @@ kim_error kim_identity_get_krb5_principal (kim_identity in_identity,
}
/* ------------------------------------------------------------------------ */
-/*!
- * \param in_identity an identity object.
- * \param out_gss_name on exit, a gss_name_t representation of \a in_identity.
- * Must be freed with gss_release_name().
- * \return On success, #KIM_NO_ERROR. On failure, an error code representing the failure.
- * \brief Get the gss_name_t representation of an identity.
- */
-/*kim_error kim_identity_get_gss_name (kim_identity in_identity,
- gss_name_t *out_gss_name);*/
-/*
-kim_error kim_identity_get_gss_name (kim_identity in_identity,
- gss_name_t *out_gss_name)
-{
- kim_error err = KIM_NO_ERROR;
-
- if (!err && !in_identity ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
- if (!err && !out_gss_name) { err = check_error (KIM_NULL_PARAMETER_ERR); }
-
- if (!err) {
-#warning kim_identity_get_gss_name not implemented
- }
-
- return check_error (err);
-}*/
-
-/* ------------------------------------------------------------------------ */
kim_error kim_identity_is_tgt_service (kim_identity in_identity,
kim_boolean *out_is_tgt_service)
@@ -528,6 +553,10 @@ kim_error kim_identity_change_password (kim_identity in_identity,
if (!err && !in_identity) { err = check_error (KIM_NULL_PARAMETER_ERR); }
+ if (!err) {
+#warning Implement change password GUI support
+ }
+
return check_error (err);
}
@@ -542,6 +571,10 @@ kim_error kim_identity_change_password_to_password (kim_identity in_identity,
if (!err && !in_identity ) { err = check_error (KIM_NULL_PARAMETER_ERR); }
if (!err && !in_new_password) { err = check_error (KIM_NULL_PARAMETER_ERR); }
+ if (!err) {
+#warning Implement change password support
+ }
+
return check_error (err);
}