Added kim documentation
authorAlexandra Ellwood <lxs@mit.edu>
Wed, 7 May 2008 19:40:32 +0000 (19:40 +0000)
committerAlexandra Ellwood <lxs@mit.edu>
Wed, 7 May 2008 19:40:32 +0000 (19:40 +0000)
ticket: 5960

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20315 dc483132-0cff-0310-8789-dd5450dbe970

30 files changed:
doc/kim/Doxyfile [new file with mode: 0644]
doc/kim/html/doxygen.css [new file with mode: 0644]
doc/kim/html/doxygen.png [new file with mode: 0644]
doc/kim/html/group__kim__ccache__iterator__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__ccache__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__credential__iterator__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__credential__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__error__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__favorite__identities__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__identity__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__options__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__preferences__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__selection__hints__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__string__reference.html [new file with mode: 0644]
doc/kim/html/group__kim__types__reference.html [new file with mode: 0644]
doc/kim/html/index.html [new file with mode: 0644]
doc/kim/html/kim_ccache_overview.html [new file with mode: 0644]
doc/kim/html/kim_credential_overview.html [new file with mode: 0644]
doc/kim/html/kim_error_overview.html [new file with mode: 0644]
doc/kim/html/kim_favorite_identities_overview.html [new file with mode: 0644]
doc/kim/html/kim_identity_overview.html [new file with mode: 0644]
doc/kim/html/kim_options_overview.html [new file with mode: 0644]
doc/kim/html/kim_preferences_overview.html [new file with mode: 0644]
doc/kim/html/kim_selection_hints_overview.html [new file with mode: 0644]
doc/kim/html/kim_string_overview.html [new file with mode: 0644]
doc/kim/html/modules.html [new file with mode: 0644]
doc/kim/html/tab_b.gif [new file with mode: 0644]
doc/kim/html/tab_l.gif [new file with mode: 0644]
doc/kim/html/tab_r.gif [new file with mode: 0644]
doc/kim/html/tabs.css [new file with mode: 0644]

diff --git a/doc/kim/Doxyfile b/doc/kim/Doxyfile
new file mode 100644 (file)
index 0000000..fbaf372
--- /dev/null
@@ -0,0 +1,281 @@
+# Doxyfile 1.5.3
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           = "Kerberos Identity Management  "
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = .
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = "The $name class  " \
+                         "The $name widget  " \
+                         "The $name file  " \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+QT_AUTOBRIEF           = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = YES
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = NO
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = NO
+EXTRACT_ANON_NSPACES   = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = YES
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = NO
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = NO
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = NO
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = YES
+WARN_FORMAT            = "$file:$line: $text  "
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = ../../src/include/kim
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.d \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.idl \
+                         *.odl \
+                         *.cs \
+                         *.php \
+                         *.php3 \
+                         *.inc \
+                         *.m \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.C \
+                         *.CC \
+                         *.C++ \
+                         *.II \
+                         *.I++ \
+                         *.H \
+                         *.HH \
+                         *.H++ \
+                         *.CS \
+                         *.PHP \
+                         *.PHP3 \
+                         *.M \
+                         *.MM \
+                         *.PY
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXCLUDE_SYMBOLS        = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = *
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+REFERENCES_LINK_SOURCE = YES
+USE_HTAGS              = NO
+VERBATIM_HEADERS       = NO
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = NO
+GENERATE_HTMLHELP      = NO
+HTML_DYNAMIC_SECTIONS  = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+DISABLE_INDEX          = YES
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = NO
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = letter
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = YES
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = YES
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = YES
+RTF_HYPERLINKS         = YES
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = NO
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = NO
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = NO
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = NO
+MSCGEN_PATH            = /Volumes/Ragna-Blade/Applications/Doxygen/Doxygen.app/Contents/Resources/
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+CALLER_GRAPH           = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+DOT_GRAPH_MAX_NODES    = 50
+MAX_DOT_GRAPH_DEPTH    = 1000
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
diff --git a/doc/kim/html/doxygen.css b/doc/kim/html/doxygen.css
new file mode 100644 (file)
index 0000000..c7db1a8
--- /dev/null
@@ -0,0 +1,358 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+       font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+       font-size: 90%;
+}
+H1 {
+       text-align: center;
+       font-size: 160%;
+}
+H2 {
+       font-size: 120%;
+}
+H3 {
+       font-size: 100%;
+}
+CAPTION { font-weight: bold }
+DIV.qindex {
+       width: 100%;
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+       line-height: 140%;
+}
+DIV.nav {
+       width: 100%;
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+       line-height: 140%;
+}
+DIV.navtab {
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+TD.navtab {
+       font-size: 70%;
+}
+A.qindex {
+       text-decoration: none;
+       font-weight: bold;
+       color: #1A419D;
+}
+A.qindex:visited {
+       text-decoration: none;
+       font-weight: bold;
+       color: #1A419D
+}
+A.qindex:hover {
+       text-decoration: none;
+       background-color: #ddddff;
+}
+A.qindexHL {
+       text-decoration: none;
+       font-weight: bold;
+       background-color: #6666cc;
+       color: #ffffff;
+       border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+       text-decoration: none;
+       background-color: #6666cc;
+       color: #ffffff;
+}
+A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
+A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
+A.codeRef:link { font-weight: normal; color: #0000FF}
+A.codeRef:visited { font-weight: normal; color: #0000FF}
+A:hover { text-decoration: none; background-color: #f2f2ff }
+DL.el { margin-left: -1cm }
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 95%;
+}
+PRE.fragment {
+       border: 1px solid #CCCCCC;
+       background-color: #f5f5f5;
+       margin-top: 4px;
+       margin-bottom: 4px;
+       margin-left: 2px;
+       margin-right: 8px;
+       padding-left: 6px;
+       padding-right: 6px;
+       padding-top: 4px;
+       padding-bottom: 4px;
+}
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+
+DIV.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
+BODY {
+       background: white;
+       color: black;
+       margin-right: 20px;
+       margin-left: 20px;
+}
+TD.indexkey {
+       background-color: #e8eef2;
+       font-weight: bold;
+       padding-right  : 10px;
+       padding-top    : 2px;
+       padding-left   : 10px;
+       padding-bottom : 2px;
+       margin-left    : 0px;
+       margin-right   : 0px;
+       margin-top     : 2px;
+       margin-bottom  : 2px;
+       border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+       background-color: #e8eef2;
+       font-style: italic;
+       padding-right  : 10px;
+       padding-top    : 2px;
+       padding-left   : 10px;
+       padding-bottom : 2px;
+       margin-left    : 0px;
+       margin-right   : 0px;
+       margin-top     : 2px;
+       margin-bottom  : 2px;
+       border: 1px solid #CCCCCC;
+}
+TR.memlist {
+   background-color: #f0f0f0; 
+}
+P.formulaDsp { text-align: center; }
+IMG.formulaDsp { }
+IMG.formulaInl { vertical-align: middle; }
+SPAN.keyword       { color: #008000 }
+SPAN.keywordtype   { color: #604020 }
+SPAN.keywordflow   { color: #e08000 }
+SPAN.comment       { color: #800000 }
+SPAN.preprocessor  { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral   { color: #008080 }
+.mdescLeft {
+       padding: 0px 8px 4px 8px;
+       font-size: 80%;
+       font-style: italic;
+       background-color: #FAFAFA;
+       border-top: 1px none #E0E0E0;
+       border-right: 1px none #E0E0E0;
+       border-bottom: 1px none #E0E0E0;
+       border-left: 1px none #E0E0E0;
+       margin: 0px;
+}
+.mdescRight {
+       padding: 0px 8px 4px 8px;
+       font-size: 80%;
+       font-style: italic;
+       background-color: #FAFAFA;
+       border-top: 1px none #E0E0E0;
+       border-right: 1px none #E0E0E0;
+       border-bottom: 1px none #E0E0E0;
+       border-left: 1px none #E0E0E0;
+       margin: 0px;
+}
+.memItemLeft {
+       padding: 1px 0px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: solid;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 80%;
+}
+.memItemRight {
+       padding: 1px 8px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: solid;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 80%;
+}
+.memTemplItemLeft {
+       padding: 1px 0px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: none;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 80%;
+}
+.memTemplItemRight {
+       padding: 1px 8px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: none;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 80%;
+}
+.memTemplParams {
+       padding: 1px 0px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: solid;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       color: #606060;
+       background-color: #FAFAFA;
+       font-size: 80%;
+}
+.search     { color: #003399;
+              font-weight: bold;
+}
+FORM.search {
+              margin-bottom: 0px;
+              margin-top: 0px;
+}
+INPUT.search { font-size: 75%;
+               color: #000080;
+               font-weight: normal;
+               background-color: #e8eef2;
+}
+TD.tiny      { font-size: 75%;
+}
+a {
+       color: #1A41A8;
+}
+a:visited {
+       color: #2A3798;
+}
+.dirtab { padding: 4px;
+          border-collapse: collapse;
+          border: 1px solid #84b0c7;
+}
+TH.dirtab { background: #e8eef2;
+            font-weight: bold;
+}
+HR { height: 1px;
+     border: none;
+     border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+  font-size: 80%;
+  color: #606060;
+  font-weight: normal;
+} 
+.memnav { 
+  background-color: #e8eef2;
+  border: 1px solid #84b0c7;
+  text-align: center;
+  margin: 2px;
+  margin-right: 15px;
+  padding: 2px;
+}
+.memitem {
+  padding: 4px;
+  background-color: #eef3f5;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #dedeee;
+  -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+  white-space: nowrap;
+  font-weight: bold;
+}
+.memdoc{
+  padding-left: 10px;
+}
+.memproto {
+  background-color: #d5e1e8;
+  width: 100%;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #84b0c7;
+  font-weight: bold;
+  -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+  text-align: right;
+}
+.paramtype {
+  white-space: nowrap;
+}
+.paramname {
+  color: #602020;
+  font-style: italic;
+  white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+       font-family: sans-serif;
+       margin:0.5em;
+}
+.directory { font-size: 9pt; font-weight: bold; }
+.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
+.directory > h3 { margin-top: 0; }
+.directory p { margin: 0px; white-space: nowrap; }
+.directory div { display: none; margin: 0px; }
+.directory img { vertical-align: -30%; }
diff --git a/doc/kim/html/doxygen.png b/doc/kim/html/doxygen.png
new file mode 100644 (file)
index 0000000..f0a274b
Binary files /dev/null and b/doc/kim/html/doxygen.png differ
diff --git a/doc/kim/html/group__kim__ccache__iterator__reference.html b/doc/kim/html/group__kim__ccache__iterator__reference.html
new file mode 100644 (file)
index 0000000..7f7144f
--- /dev/null
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM CCache Iterator Reference Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM CCache Iterator Reference Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__iterator__reference.html#g2f116eaf59776453db578c9342b8c3e1">kim_ccache_iterator_create</a> (<a class="el" href="group__kim__types__reference.html#gf19042fb689c87bfbe381654f75af5b9">kim_ccache_iterator_t</a> *out_ccache_iterator)
+<dl class="el"><dd class="mdescRight">Get a ccache iterator to enumerate ccaches in the cache collection.  <a href="#g2f116eaf59776453db578c9342b8c3e1"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__iterator__reference.html#g71dc66abc8b357e318c48debd2cb7916">kim_ccache_iterator_next</a> (<a class="el" href="group__kim__types__reference.html#gf19042fb689c87bfbe381654f75af5b9">kim_ccache_iterator_t</a> in_ccache_iterator, <a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *out_ccache)
+<dl class="el"><dd class="mdescRight">Get the next ccache in the cache collection.  <a href="#g71dc66abc8b357e318c48debd2cb7916"></a><br></dl><li>void <a class="el" href="group__kim__ccache__iterator__reference.html#ged070acdb8996a34c622675369733d12">kim_ccache_iterator_free</a> (<a class="el" href="group__kim__types__reference.html#gf19042fb689c87bfbe381654f75af5b9">kim_ccache_iterator_t</a> *io_ccache_iterator)
+<dl class="el"><dd class="mdescRight">Free memory associated with a ccache iterator.  <a href="#ged070acdb8996a34c622675369733d12"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g2f116eaf59776453db578c9342b8c3e1"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_iterator_create" ref="g2f116eaf59776453db578c9342b8c3e1" args="(kim_ccache_iterator_t *out_ccache_iterator)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_iterator_create           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gf19042fb689c87bfbe381654f75af5b9">kim_ccache_iterator_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache_iterator</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a ccache iterator to enumerate ccaches in the cache collection. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache_iterator</em>&nbsp;</td><td>on exit, a ccache iterator object for the cache collection. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g71dc66abc8b357e318c48debd2cb7916"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_iterator_next" ref="g71dc66abc8b357e318c48debd2cb7916" args="(kim_ccache_iterator_t in_ccache_iterator, kim_ccache_t *out_ccache)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_iterator_next           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gf19042fb689c87bfbe381654f75af5b9">kim_ccache_iterator_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache_iterator</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the next ccache in the cache collection. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache_iterator</em>&nbsp;</td><td>a ccache iterator object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache</em>&nbsp;</td><td>on exit, the next ccache in the cache collection. If there are no more ccaches in the cache collection this argument will be set to NULL. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ged070acdb8996a34c622675369733d12"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_iterator_free" ref="ged070acdb8996a34c622675369733d12" args="(kim_ccache_iterator_t *io_ccache_iterator)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_ccache_iterator_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gf19042fb689c87bfbe381654f75af5b9">kim_ccache_iterator_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_ccache_iterator</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with a ccache iterator. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_ccache_iterator</em>&nbsp;</td><td>a ccache iterator object to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__ccache__reference.html b/doc/kim/html/group__kim__ccache__reference.html
new file mode 100644 (file)
index 0000000..85dfa9c
--- /dev/null
@@ -0,0 +1,944 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM CCache Reference Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM CCache Reference Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gda206c3632933a811cb895e5be29bba9">kim_ccache_create_new</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *out_ccache, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_client_identity, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Acquire a new initial credential and store it in a ccache.  <a href="#gda206c3632933a811cb895e5be29bba9"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gd4242a5d6b2cc7222bcb065deb5fdf17">kim_ccache_create_new_if_needed</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *out_ccache, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_client_identity, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Find a ccache containing a valid initial credential in the cache collection, or if unavailable, acquire and store a new initial credential.  <a href="#gd4242a5d6b2cc7222bcb065deb5fdf17"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gfc1faee53dbb4b1dab1a5daf8f685f64">kim_ccache_create_from_client_identity</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *out_ccache, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_client_identity)
+<dl class="el"><dd class="mdescRight">Find a ccache for a client identity in the cache collection.  <a href="#gfc1faee53dbb4b1dab1a5daf8f685f64"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#g21a41ecd65dcb9d5b6a2e4d45d3f690b">kim_ccache_create_from_keytab</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *out_ccache, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_keytab)
+<dl class="el"><dd class="mdescRight">Acquire a new initial credential from a keytab and store it in a ccache.  <a href="#g21a41ecd65dcb9d5b6a2e4d45d3f690b"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gec7b1b8d8514d76bb0608670106ab31c">kim_ccache_create_from_default</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *out_ccache)
+<dl class="el"><dd class="mdescRight">Get the default ccache.  <a href="#gec7b1b8d8514d76bb0608670106ab31c"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#ge6584e47a08e7da567e8a44a616c476c">kim_ccache_create_from_type_and_name</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *out_ccache, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_type, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_name)
+<dl class="el"><dd class="mdescRight">Get a ccache for a ccache type and name.  <a href="#ge6584e47a08e7da567e8a44a616c476c"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gec8637b71f0d75603635c5d433bd4fb6">kim_ccache_create_from_krb5_ccache</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *out_ccache, krb5_context in_krb5_context, krb5_ccache in_krb5_ccache)
+<dl class="el"><dd class="mdescRight">Get a ccache for a krb5 ccache.  <a href="#gec8637b71f0d75603635c5d433bd4fb6"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#g76e16a971c011d60af61946a6f3da31d">kim_ccache_copy</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *out_ccache, <a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache)
+<dl class="el"><dd class="mdescRight">Copy a ccache.  <a href="#g76e16a971c011d60af61946a6f3da31d"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gdfa9451814442e3acfd426a1abea8604">kim_ccache_get_krb5_ccache</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, krb5_context in_krb5_context, krb5_ccache *out_krb5_ccache)
+<dl class="el"><dd class="mdescRight">Get a krb5 ccache for a ccache.  <a href="#gdfa9451814442e3acfd426a1abea8604"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gec1c9af407a6554401a7f32c49cabd6a">kim_ccache_get_name</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_name)
+<dl class="el"><dd class="mdescRight">Get the name of a ccache.  <a href="#gec1c9af407a6554401a7f32c49cabd6a"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gbf079f8dff05db6bb9aa152df83029fb">kim_ccache_get_type</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_type)
+<dl class="el"><dd class="mdescRight">Get the type of a ccache.  <a href="#gbf079f8dff05db6bb9aa152df83029fb"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#g3a0f51defaf127b77b1e44092a352e31">kim_ccache_get_display_name</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_display_name)
+<dl class="el"><dd class="mdescRight">Get the type and name for a ccache in display format.  <a href="#g3a0f51defaf127b77b1e44092a352e31"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gd5abbe1c6e1a0d191695bb373f9a7957">kim_ccache_get_client_identity</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_client_identity)
+<dl class="el"><dd class="mdescRight">Get the client identity for a ccache.  <a href="#gd5abbe1c6e1a0d191695bb373f9a7957"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#g78ff442478e0faa46c63774c49a7b51e">kim_ccache_get_valid_credential</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *out_credential)
+<dl class="el"><dd class="mdescRight">Get the first valid credential in a ccache.  <a href="#g78ff442478e0faa46c63774c49a7b51e"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gb8793586b7c4054f2219b28920bf12bd">kim_ccache_get_start_time</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *out_start_time)
+<dl class="el"><dd class="mdescRight">Get the time when the credentials in the ccache become valid.  <a href="#gb8793586b7c4054f2219b28920bf12bd"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#g2cbb6b78cac2bb2e4359caf8b53d60c5">kim_ccache_get_expiration_time</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *out_expiration_time)
+<dl class="el"><dd class="mdescRight">Get the time when the credentials in the ccache will expire.  <a href="#g2cbb6b78cac2bb2e4359caf8b53d60c5"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gfaad7545fbdb381faed8d2378009bd6e">kim_ccache_get_renewal_expiration_time</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *out_renewal_expiration_time)
+<dl class="el"><dd class="mdescRight">Get the time when the credentials in the ccache will no longer be renewable.  <a href="#gfaad7545fbdb381faed8d2378009bd6e"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#g5614c04acbdf006e86dd787dce5a2600">kim_ccache_set_default</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> io_ccache)
+<dl class="el"><dd class="mdescRight">Set a ccache to the default ccache.  <a href="#g5614c04acbdf006e86dd787dce5a2600"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#g3d293fc7338ff9b654e167153df33b5c">kim_ccache_verify</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_service_identity, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_keytab, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> in_fail_if_no_service_key)
+<dl class="el"><dd class="mdescRight">Verify the TGT in a ccache.  <a href="#g3d293fc7338ff9b654e167153df33b5c"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#gafb44675df9d05af5b899996be14e2b4">kim_ccache_renew</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Renew the TGT in a ccache.  <a href="#gafb44675df9d05af5b899996be14e2b4"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#g8bb7d46268621e73629dceefd15ff639">kim_ccache_validate</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Validate the TGT in a ccache.  <a href="#g8bb7d46268621e73629dceefd15ff639"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__ccache__reference.html#g6e750b24766c0f3991bcf0d873eb4d3e">kim_ccache_destroy</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *io_ccache)
+<dl class="el"><dd class="mdescRight">Remove a ccache from the cache collection.  <a href="#g6e750b24766c0f3991bcf0d873eb4d3e"></a><br></dl><li>void <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c">kim_ccache_free</a> (<a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *io_ccache)
+<dl class="el"><dd class="mdescRight">Free memory associated with a ccache.  <a href="#g2e9e82cd849c9815857397a9b869c45c"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gda206c3632933a811cb895e5be29bba9"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_create_new" ref="gda206c3632933a811cb895e5be29bba9" args="(kim_ccache_t *out_ccache, kim_identity_t in_client_identity, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_create_new           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_client_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Acquire a new initial credential and store it in a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache</em>&nbsp;</td><td>on exit, a new cache object for a ccache containing a newly acquired initial credential. Must be freed with <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_client_identity</em>&nbsp;</td><td>a client identity to obtain a credential for. Specify KIM_IDENTITY_ANY to allow the user to choose. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>options to control credential acquisition. </td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Depending on the kim_options specified, <a class="el" href="group__kim__ccache__reference.html#gda206c3632933a811cb895e5be29bba9" title="Acquire a new initial credential and store it in a ccache.">kim_ccache_create_new()</a> may present a GUI or command line prompt to obtain information from the user. </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd4242a5d6b2cc7222bcb065deb5fdf17"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_create_new_if_needed" ref="gd4242a5d6b2cc7222bcb065deb5fdf17" args="(kim_ccache_t *out_ccache, kim_identity_t in_client_identity, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_create_new_if_needed           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_client_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find a ccache containing a valid initial credential in the cache collection, or if unavailable, acquire and store a new initial credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache</em>&nbsp;</td><td>on exit, a ccache object for a ccache containing a newly acquired initial credential. Must be freed with <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_client_identity</em>&nbsp;</td><td>a client identity to obtain a credential for. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>options to control credential acquisition (if a credential is acquired). </td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Depending on the kim_options specified, <a class="el" href="group__kim__ccache__reference.html#gd4242a5d6b2cc7222bcb065deb5fdf17" title="Find a ccache containing a valid initial credential in the cache collection, or if...">kim_ccache_create_new_if_needed()</a> may present a GUI or command line prompt to obtain information from the user. </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfc1faee53dbb4b1dab1a5daf8f685f64"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_create_from_client_identity" ref="gfc1faee53dbb4b1dab1a5daf8f685f64" args="(kim_ccache_t *out_ccache, kim_identity_t in_client_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_create_from_client_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_client_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find a ccache for a client identity in the cache collection. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache</em>&nbsp;</td><td>on exit, a ccache object for a ccache containing a TGT credential. Must be freed with <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_client_identity</em>&nbsp;</td><td>a client identity to obtain a credential for. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g21a41ecd65dcb9d5b6a2e4d45d3f690b"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_create_from_keytab" ref="g21a41ecd65dcb9d5b6a2e4d45d3f690b" args="(kim_ccache_t *out_ccache, kim_identity_t in_identity, kim_options_t in_options, kim_string_t in_keytab)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_create_from_keytab           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_keytab</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Acquire a new initial credential from a keytab and store it in a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache</em>&nbsp;</td><td>on exit, a new ccache object containing an initial credential for the client identity <em>in_identity</em> obtained using in_keytab. Must be freed with <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>a client identity to obtain a credential for. Specify NULL for the first client identity in the keytab. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>options to control credential acquisition. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_keytab</em>&nbsp;</td><td>a path to a keytab. Specify NULL for the default keytab location. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gec7b1b8d8514d76bb0608670106ab31c"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_create_from_default" ref="gec7b1b8d8514d76bb0608670106ab31c" args="(kim_ccache_t *out_ccache)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_create_from_default           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the default ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache</em>&nbsp;</td><td>on exit, a ccache object for the default ccache. Must be freed with <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge6584e47a08e7da567e8a44a616c476c"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_create_from_type_and_name" ref="ge6584e47a08e7da567e8a44a616c476c" args="(kim_ccache_t *out_ccache, kim_string_t in_type, kim_string_t in_name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_create_from_type_and_name           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_type</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a ccache for a ccache type and name. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache</em>&nbsp;</td><td>on exit, a ccache object for the ccache identified by <em>in_type</em> and <em>in_name</em>. Must be freed with <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_type</em>&nbsp;</td><td>a ccache type string. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_name</em>&nbsp;</td><td>a ccache name string. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This API is provided for backwards compatibilty with applications which are not KIM-aware and should be avoided whenever possible. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gec8637b71f0d75603635c5d433bd4fb6"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_create_from_krb5_ccache" ref="gec8637b71f0d75603635c5d433bd4fb6" args="(kim_ccache_t *out_ccache, krb5_context in_krb5_context, krb5_ccache in_krb5_ccache)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_create_from_krb5_ccache           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_context&nbsp;</td>
+          <td class="paramname"> <em>in_krb5_context</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_ccache&nbsp;</td>
+          <td class="paramname"> <em>in_krb5_ccache</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a ccache for a krb5 ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache</em>&nbsp;</td><td>on exit, a new ccache object which is a copy of in_krb5_ccache. Must be freed with <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_krb5_context</em>&nbsp;</td><td>the krb5 context used to create <em>in_krb5_ccache</em>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_krb5_ccache</em>&nbsp;</td><td>a krb5 ccache object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g76e16a971c011d60af61946a6f3da31d"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_copy" ref="g76e16a971c011d60af61946a6f3da31d" args="(kim_ccache_t *out_ccache, kim_ccache_t in_ccache)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache</em>&nbsp;</td><td>on exit, the new ccache object which is a copy of in_ccache. Must be freed with <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdfa9451814442e3acfd426a1abea8604"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_get_krb5_ccache" ref="gdfa9451814442e3acfd426a1abea8604" args="(kim_ccache_t in_ccache, krb5_context in_krb5_context, krb5_ccache *out_krb5_ccache)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_get_krb5_ccache           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_context&nbsp;</td>
+          <td class="paramname"> <em>in_krb5_context</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_ccache *&nbsp;</td>
+          <td class="paramname"> <em>out_krb5_ccache</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a krb5 ccache for a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_krb5_context</em>&nbsp;</td><td>a krb5 context which will be used to create out_krb5_ccache. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_krb5_ccache</em>&nbsp;</td><td>on exit, a new krb5 ccache object which is a copy of in_ccache. Must be freed with krb5_cc_close() or krb5_cc_destroy(). </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gec1c9af407a6554401a7f32c49cabd6a"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_get_name" ref="gec1c9af407a6554401a7f32c49cabd6a" args="(kim_ccache_t in_ccache, kim_string_t *out_name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_get_name           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the name of a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_name</em>&nbsp;</td><td>on exit, the name string of <em>in_ccache</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbf079f8dff05db6bb9aa152df83029fb"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_get_type" ref="gbf079f8dff05db6bb9aa152df83029fb" args="(kim_ccache_t in_ccache, kim_string_t *out_type)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_get_type           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_type</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the type of a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_type</em>&nbsp;</td><td>on exit, the type string of <em>in_ccache</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3a0f51defaf127b77b1e44092a352e31"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_get_display_name" ref="g3a0f51defaf127b77b1e44092a352e31" args="(kim_ccache_t in_ccache, kim_string_t *out_display_name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_get_display_name           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_display_name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the type and name for a ccache in display format. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_display_name</em>&nbsp;</td><td>on exit, the type and name of <em>in_ccache</em> in a format appropriate for display to the user in command line programs. (ie: "&lt;type&gt;:&lt;name&gt;") Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. Note: this string can also be passed to krb5_cc_resolve(). </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd5abbe1c6e1a0d191695bb373f9a7957"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_get_client_identity" ref="gd5abbe1c6e1a0d191695bb373f9a7957" args="(kim_ccache_t in_ccache, kim_identity_t *out_client_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_get_client_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_client_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the client identity for a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_client_identity</em>&nbsp;</td><td>on exit, an identity object containing the client identity of <em>in_ccache</em>. Must be freed with <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23" title="Free memory associated with an identity.">kim_identity_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g78ff442478e0faa46c63774c49a7b51e"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_get_valid_credential" ref="g78ff442478e0faa46c63774c49a7b51e" args="(kim_ccache_t in_ccache, kim_credential_t *out_credential)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_get_valid_credential           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_credential</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the first valid credential in a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_credential</em>&nbsp;</td><td>on exit, the first valid credential in <em>in_ccache</em>. Must be freed with <a class="el" href="group__kim__credential__reference.html#gb92567dd6b60e525f343cc401e1949aa" title="Free memory associated with a credential object.">kim_credential_free()</a>. Set to NULL if you only want return value, not the actual credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This function prefers TGT credentials. If there are any non-valid TGTs in the ccache, it will always return an error. However, if there are no TGTs at all, it will return the first valid non-TGT credential. If you only want TGTs, use <a class="el" href="group__kim__credential__reference.html#gdf4e9b444c5050199476721a5cec67f7" title="Check if a credential is a ticket granting ticket.">kim_credential_is_tgt()</a> to verify that <em>out_credential</em> is a tgt. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb8793586b7c4054f2219b28920bf12bd"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_get_start_time" ref="gb8793586b7c4054f2219b28920bf12bd" args="(kim_ccache_t in_ccache, kim_time_t *out_start_time)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_get_start_time           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_start_time</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time when the credentials in the ccache become valid. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_start_time</em>&nbsp;</td><td>on exit, the time when the credentials in <em>in_ccache</em> become valid. May be in the past or future. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2cbb6b78cac2bb2e4359caf8b53d60c5"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_get_expiration_time" ref="g2cbb6b78cac2bb2e4359caf8b53d60c5" args="(kim_ccache_t in_ccache, kim_time_t *out_expiration_time)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_get_expiration_time           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_expiration_time</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time when the credentials in the ccache will expire. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_expiration_time</em>&nbsp;</td><td>on exit, the time when the credentials in <em>in_ccache</em> will expire. May be in the past or future. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfaad7545fbdb381faed8d2378009bd6e"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_get_renewal_expiration_time" ref="gfaad7545fbdb381faed8d2378009bd6e" args="(kim_ccache_t in_ccache, kim_time_t *out_renewal_expiration_time)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_get_renewal_expiration_time           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_renewal_expiration_time</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time when the credentials in the ccache will no longer be renewable. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_renewal_expiration_time</em>&nbsp;</td><td>on exit, the time when the credentials in <em>in_ccache</em> will no longer be renewable. May be in the past or future. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5614c04acbdf006e86dd787dce5a2600"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_set_default" ref="g5614c04acbdf006e86dd787dce5a2600" args="(kim_ccache_t io_ccache)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_set_default           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_ccache</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a ccache to the default ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_ccache</em>&nbsp;</td><td>a ccache object which will be set to the default ccache. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This API is provided for backwards compatibilty with applications which are not KIM-aware and should be avoided whenever possible. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3d293fc7338ff9b654e167153df33b5c"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_verify" ref="g3d293fc7338ff9b654e167153df33b5c" args="(kim_ccache_t in_ccache, kim_identity_t in_service_identity, kim_string_t in_keytab, kim_boolean_t in_fail_if_no_service_key)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_verify           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_service_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_keytab</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_fail_if_no_service_key</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Verify the TGT in a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object containing the TGT credential to be verified. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_service_identity</em>&nbsp;</td><td>a service identity to look for in the keytab. Specify KIM_IDENTITY_ANY to use the default service identity (usually host/&lt;host's FQDN&gt;&lt;host's local realm&gt;). </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_keytab</em>&nbsp;</td><td>a path to a keytab. Specify NULL for the default keytab location. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_fail_if_no_service_key</em>&nbsp;</td><td>whether or not the absence of a key for <em>in_service_identity</em> in the host's keytab will cause a failure. </td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>specifying FALSE for <em>in_fail_if_no_service_key</em> may expose the calling program to the Zanarotti attack if the host has no keytab installed. </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gafb44675df9d05af5b899996be14e2b4"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_renew" ref="gafb44675df9d05af5b899996be14e2b4" args="(kim_ccache_t in_ccache, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_renew           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Renew the TGT in a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object containing a TGT to be renewed. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>initial credential options to be used if a new credential is obtained. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8bb7d46268621e73629dceefd15ff639"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_validate" ref="g8bb7d46268621e73629dceefd15ff639" args="(kim_ccache_t in_ccache, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_validate           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Validate the TGT in a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object containing a TGT to be validated. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>initial credential options. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6e750b24766c0f3991bcf0d873eb4d3e"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_destroy" ref="g6e750b24766c0f3991bcf0d873eb4d3e" args="(kim_ccache_t *io_ccache)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_ccache_destroy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_ccache</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove a ccache from the cache collection. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_ccache</em>&nbsp;</td><td>a ccache object to be destroyed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Frees memory associated with the ccache. Do not call <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a> after calling this function. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2e9e82cd849c9815857397a9b869c45c"></a><!-- doxytag: member="kim_ccache.h::kim_ccache_free" ref="g2e9e82cd849c9815857397a9b869c45c" args="(kim_ccache_t *io_ccache)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_ccache_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_ccache</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_ccache</em>&nbsp;</td><td>a ccache object to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__credential__iterator__reference.html b/doc/kim/html/group__kim__credential__iterator__reference.html
new file mode 100644 (file)
index 0000000..f1ffa68
--- /dev/null
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Credential Iterator Reference Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM Credential Iterator Reference Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__iterator__reference.html#g4a1f55aa90053b8d59281a0f7d12590c">kim_credential_iterator_create</a> (<a class="el" href="group__kim__types__reference.html#gaf149c8bd856b9067a9f42ccd2afdd37">kim_credential_iterator_t</a> *out_credential_iterator, <a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> in_ccache)
+<dl class="el"><dd class="mdescRight">Get a credential iterator to enumerate credentials in a ccache.  <a href="#g4a1f55aa90053b8d59281a0f7d12590c"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__iterator__reference.html#ge7f5bc2cf2cc42c3e39fd4f945b474cd">kim_credential_iterator_next</a> (<a class="el" href="group__kim__types__reference.html#gaf149c8bd856b9067a9f42ccd2afdd37">kim_credential_iterator_t</a> in_credential_iterator, <a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *out_credential)
+<dl class="el"><dd class="mdescRight">Get the next credential in a ccache.  <a href="#ge7f5bc2cf2cc42c3e39fd4f945b474cd"></a><br></dl><li>void <a class="el" href="group__kim__credential__iterator__reference.html#gb32e376af0b819cb3c9ca30f3db1c86b">kim_credential_iterator_free</a> (<a class="el" href="group__kim__types__reference.html#gaf149c8bd856b9067a9f42ccd2afdd37">kim_credential_iterator_t</a> *io_credential_iterator)
+<dl class="el"><dd class="mdescRight">Free memory associated with a credential iterator.  <a href="#gb32e376af0b819cb3c9ca30f3db1c86b"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g4a1f55aa90053b8d59281a0f7d12590c"></a><!-- doxytag: member="kim_credential.h::kim_credential_iterator_create" ref="g4a1f55aa90053b8d59281a0f7d12590c" args="(kim_credential_iterator_t *out_credential_iterator, kim_ccache_t in_ccache)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_iterator_create           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gaf149c8bd856b9067a9f42ccd2afdd37">kim_credential_iterator_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_credential_iterator</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_ccache</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a credential iterator to enumerate credentials in a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_credential_iterator</em>&nbsp;</td><td>on exit, a credential iterator object for <em>in_ccache</em>. Must be freed with <a class="el" href="group__kim__credential__iterator__reference.html#gb32e376af0b819cb3c9ca30f3db1c86b" title="Free memory associated with a credential iterator.">kim_credential_iterator_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_ccache</em>&nbsp;</td><td>a ccache object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge7f5bc2cf2cc42c3e39fd4f945b474cd"></a><!-- doxytag: member="kim_credential.h::kim_credential_iterator_next" ref="ge7f5bc2cf2cc42c3e39fd4f945b474cd" args="(kim_credential_iterator_t in_credential_iterator, kim_credential_t *out_credential)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_iterator_next           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gaf149c8bd856b9067a9f42ccd2afdd37">kim_credential_iterator_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential_iterator</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_credential</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the next credential in a ccache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential_iterator</em>&nbsp;</td><td>a credential iterator object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_credential</em>&nbsp;</td><td>on exit, the next credential in the ccache iterated by <em>in_credential_iterator</em>. Must be freed with <a class="el" href="group__kim__credential__reference.html#gb92567dd6b60e525f343cc401e1949aa" title="Free memory associated with a credential object.">kim_credential_free()</a>. If there are no more credentials this argument will be set to NULL. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb32e376af0b819cb3c9ca30f3db1c86b"></a><!-- doxytag: member="kim_credential.h::kim_credential_iterator_free" ref="gb32e376af0b819cb3c9ca30f3db1c86b" args="(kim_credential_iterator_t *io_credential_iterator)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_credential_iterator_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gaf149c8bd856b9067a9f42ccd2afdd37">kim_credential_iterator_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_credential_iterator</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with a credential iterator. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_credential_iterator</em>&nbsp;</td><td>a credential iterator object to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__credential__reference.html b/doc/kim/html/group__kim__credential__reference.html
new file mode 100644 (file)
index 0000000..290e1a4
--- /dev/null
@@ -0,0 +1,736 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Credential Reference Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM Credential Reference Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g318fdf6ea1e937a35e947dab6efa695d">kim_credential_create_new</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *out_credential, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_client_identity, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Acquire a new initial credential.  <a href="#g318fdf6ea1e937a35e947dab6efa695d"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g465dab295b62d786d7e83e95409fae94">kim_credential_create_from_keytab</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *out_credential, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_keytab)
+<dl class="el"><dd class="mdescRight">Acquire a new initial credential from a keytab.  <a href="#g465dab295b62d786d7e83e95409fae94"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#ge08f4082cca6e0d4779d6ab7c105bcfe">kim_credential_create_from_krb5_creds</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *out_credential, krb5_context in_krb5_context, krb5_creds *in_krb5_creds)
+<dl class="el"><dd class="mdescRight">Copy a credential from a krb5 credential object.  <a href="#ge08f4082cca6e0d4779d6ab7c105bcfe"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g1a6218c74a07a9b9c262c35404475fd7">kim_credential_copy</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *out_credential, <a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential)
+<dl class="el"><dd class="mdescRight">Copy a credential object.  <a href="#g1a6218c74a07a9b9c262c35404475fd7"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g35ac6a79b91ac1ec215c281fd0b94170">kim_credential_get_krb5_creds</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential, krb5_context in_krb5_context, krb5_creds **out_krb5_creds)
+<dl class="el"><dd class="mdescRight">Get a krb5 credentials object for a credential object.  <a href="#g35ac6a79b91ac1ec215c281fd0b94170"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#gfab660faba5a6b2dc0f067dfe3e6235f">kim_credential_get_client_identity</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_client_identity)
+<dl class="el"><dd class="mdescRight">Get the client identity of a credential object.  <a href="#gfab660faba5a6b2dc0f067dfe3e6235f"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g3bf00a133fbfe8fd3f9b6cba55ac6045">kim_credential_get_service_identity</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_service_identity)
+<dl class="el"><dd class="mdescRight">Get the service identity of a credential object.  <a href="#g3bf00a133fbfe8fd3f9b6cba55ac6045"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#gdf4e9b444c5050199476721a5cec67f7">kim_credential_is_tgt</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *out_is_tgt)
+<dl class="el"><dd class="mdescRight">Check if a credential is a ticket granting ticket.  <a href="#gdf4e9b444c5050199476721a5cec67f7"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g0796aac464740c6a046290c08661bda5">kim_credential_get_state</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential, <a class="el" href="group__kim__types__reference.html#gc26053c4715f113e3580214d554781ad">kim_credential_state_t</a> *out_state)
+<dl class="el"><dd class="mdescRight">Check the state of a credential (valid, expired, postdated, etc).  <a href="#g0796aac464740c6a046290c08661bda5"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g48b41bc28845e209c41b087d28250e2a">kim_credential_get_start_time</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential, <a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *out_start_time)
+<dl class="el"><dd class="mdescRight">Get the time when the credentials become valid.  <a href="#g48b41bc28845e209c41b087d28250e2a"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g07fc4d11e42bf7d32be67fcac531c372">kim_credential_get_expiration_time</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential, <a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *out_expiration_time)
+<dl class="el"><dd class="mdescRight">Get the time when the credentials will expire.  <a href="#g07fc4d11e42bf7d32be67fcac531c372"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g1723a7c06e32ee954be214767bc55194">kim_credential_get_renewal_expiration_time</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential, <a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *out_renewal_expiration_time)
+<dl class="el"><dd class="mdescRight">Get the time when the credentials will no longer be renewable.  <a href="#g1723a7c06e32ee954be214767bc55194"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g894c7144185b1112f6872fdf27fb016d">kim_credential_store</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_client_identity, <a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *out_ccache)
+<dl class="el"><dd class="mdescRight">Store a credential in a ccache in the cache collection.  <a href="#g894c7144185b1112f6872fdf27fb016d"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g390a74d4d834fd1b5c2e7aebcd783e32">kim_credential_verify</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> in_credential, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_service_identity, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_keytab, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> in_fail_if_no_service_key)
+<dl class="el"><dd class="mdescRight">Verify a TGT credential.  <a href="#g390a74d4d834fd1b5c2e7aebcd783e32"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g99ac2c178bec484311cd7fc2cbb7e05e">kim_credential_renew</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *io_credential, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Renew a TGT credential.  <a href="#g99ac2c178bec484311cd7fc2cbb7e05e"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__credential__reference.html#g9cd6ba59236babb4e79a680fa54b5037">kim_credential_validate</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *io_credential, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Validate a TGT credential.  <a href="#g9cd6ba59236babb4e79a680fa54b5037"></a><br></dl><li>void <a class="el" href="group__kim__credential__reference.html#gb92567dd6b60e525f343cc401e1949aa">kim_credential_free</a> (<a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *io_credential)
+<dl class="el"><dd class="mdescRight">Free memory associated with a credential object.  <a href="#gb92567dd6b60e525f343cc401e1949aa"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g318fdf6ea1e937a35e947dab6efa695d"></a><!-- doxytag: member="kim_credential.h::kim_credential_create_new" ref="g318fdf6ea1e937a35e947dab6efa695d" args="(kim_credential_t *out_credential, kim_identity_t in_client_identity, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_create_new           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_client_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Acquire a new initial credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_credential</em>&nbsp;</td><td>on exit, a new credential object containing a newly acquired initial credential. Must be freed with <a class="el" href="group__kim__credential__reference.html#gb92567dd6b60e525f343cc401e1949aa" title="Free memory associated with a credential object.">kim_credential_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_client_identity</em>&nbsp;</td><td>a client identity to obtain a credential for. Specify NULL to allow the user to choose the identity </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>options to control credential acquisition. </td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Depending on the kim_options specified, <a class="el" href="group__kim__credential__reference.html#g318fdf6ea1e937a35e947dab6efa695d" title="Acquire a new initial credential.">kim_credential_create_new()</a> may present a GUI or command line prompt to obtain information from the user. </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__ccache__reference.html#gda206c3632933a811cb895e5be29bba9" title="Acquire a new initial credential and store it in a ccache.">kim_ccache_create_new</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g465dab295b62d786d7e83e95409fae94"></a><!-- doxytag: member="kim_credential.h::kim_credential_create_from_keytab" ref="g465dab295b62d786d7e83e95409fae94" args="(kim_credential_t *out_credential, kim_identity_t in_identity, kim_options_t in_options, kim_string_t in_keytab)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_create_from_keytab           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_keytab</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Acquire a new initial credential from a keytab. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_credential</em>&nbsp;</td><td>on exit, a new credential object containing an initial credential for <em>in_identity</em> obtained using <em>in_keytab</em>. Must be freed with <a class="el" href="group__kim__credential__reference.html#gb92567dd6b60e525f343cc401e1949aa" title="Free memory associated with a credential object.">kim_credential_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>a client identity to obtain a credential for. Specify NULL for the first identity in the keytab. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>options to control credential acquisition. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_keytab</em>&nbsp;</td><td>a path to a keytab. Specify NULL for the default keytab location. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__ccache__reference.html#g21a41ecd65dcb9d5b6a2e4d45d3f690b" title="Acquire a new initial credential from a keytab and store it in a ccache.">kim_ccache_create_from_keytab</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge08f4082cca6e0d4779d6ab7c105bcfe"></a><!-- doxytag: member="kim_credential.h::kim_credential_create_from_krb5_creds" ref="ge08f4082cca6e0d4779d6ab7c105bcfe" args="(kim_credential_t *out_credential, krb5_context in_krb5_context, krb5_creds *in_krb5_creds)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_create_from_krb5_creds           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_context&nbsp;</td>
+          <td class="paramname"> <em>in_krb5_context</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_creds *&nbsp;</td>
+          <td class="paramname"> <em>in_krb5_creds</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a credential from a krb5 credential object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_credential</em>&nbsp;</td><td>on exit, a new credential object which is a copy of <em>in_krb5_creds</em>. Must be freed with <a class="el" href="group__kim__credential__reference.html#gb92567dd6b60e525f343cc401e1949aa" title="Free memory associated with a credential object.">kim_credential_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_krb5_context</em>&nbsp;</td><td>the krb5 context used to create <em>in_krb5_creds</em>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_krb5_creds</em>&nbsp;</td><td>a krb5 credential object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1a6218c74a07a9b9c262c35404475fd7"></a><!-- doxytag: member="kim_credential.h::kim_credential_copy" ref="g1a6218c74a07a9b9c262c35404475fd7" args="(kim_credential_t *out_credential, kim_credential_t in_credential)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a credential object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_credential</em>&nbsp;</td><td>on exit, a new credential object which is a copy of <em>in_credential</em>. Must be freed with <a class="el" href="group__kim__credential__reference.html#gb92567dd6b60e525f343cc401e1949aa" title="Free memory associated with a credential object.">kim_credential_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a credential object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g35ac6a79b91ac1ec215c281fd0b94170"></a><!-- doxytag: member="kim_credential.h::kim_credential_get_krb5_creds" ref="g35ac6a79b91ac1ec215c281fd0b94170" args="(kim_credential_t in_credential, krb5_context in_krb5_context, krb5_creds **out_krb5_creds)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_get_krb5_creds           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_context&nbsp;</td>
+          <td class="paramname"> <em>in_krb5_context</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_creds **&nbsp;</td>
+          <td class="paramname"> <em>out_krb5_creds</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a krb5 credentials object for a credential object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a credential object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_krb5_context</em>&nbsp;</td><td>a krb5 context which will be used to create <em>out_krb5_creds</em>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_krb5_creds</em>&nbsp;</td><td>on exit, a new krb5 creds object which is a copy of <em>in_credential</em>. Must be freed with krb5_free_creds(). </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfab660faba5a6b2dc0f067dfe3e6235f"></a><!-- doxytag: member="kim_credential.h::kim_credential_get_client_identity" ref="gfab660faba5a6b2dc0f067dfe3e6235f" args="(kim_credential_t in_credential, kim_identity_t *out_client_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_get_client_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_client_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the client identity of a credential object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a credential object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_client_identity</em>&nbsp;</td><td>on exit, an identity object containing the client identity of <em>in_credential</em>. Must be freed with <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23" title="Free memory associated with an identity.">kim_identity_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3bf00a133fbfe8fd3f9b6cba55ac6045"></a><!-- doxytag: member="kim_credential.h::kim_credential_get_service_identity" ref="g3bf00a133fbfe8fd3f9b6cba55ac6045" args="(kim_credential_t in_credential, kim_identity_t *out_service_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_get_service_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_service_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the service identity of a credential object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a credential object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_service_identity</em>&nbsp;</td><td>on exit, an identity object containing the service identity of <em>in_credential</em>. Must be freed with <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23" title="Free memory associated with an identity.">kim_identity_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdf4e9b444c5050199476721a5cec67f7"></a><!-- doxytag: member="kim_credential.h::kim_credential_is_tgt" ref="gdf4e9b444c5050199476721a5cec67f7" args="(kim_credential_t in_credential, kim_boolean_t *out_is_tgt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_is_tgt           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_is_tgt</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check if a credential is a ticket granting ticket. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a credential object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_is_tgt</em>&nbsp;</td><td>on exit, whether or not the credential is a TGT. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0796aac464740c6a046290c08661bda5"></a><!-- doxytag: member="kim_credential.h::kim_credential_get_state" ref="g0796aac464740c6a046290c08661bda5" args="(kim_credential_t in_credential, kim_credential_state_t *out_state)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_get_state           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gc26053c4715f113e3580214d554781ad">kim_credential_state_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_state</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check the state of a credential (valid, expired, postdated, etc). 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a credential object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_state</em>&nbsp;</td><td>on exit, the state of the credential. See <a class="el" href="group__kim__types__reference.html#g6e5c2c986359589562c83f1da2cf0ca0">kim_credential_state_enum</a> for the possible values of <em>out_state</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g48b41bc28845e209c41b087d28250e2a"></a><!-- doxytag: member="kim_credential.h::kim_credential_get_start_time" ref="g48b41bc28845e209c41b087d28250e2a" args="(kim_credential_t in_credential, kim_time_t *out_start_time)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_get_start_time           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_start_time</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time when the credentials become valid. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a credential object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_start_time</em>&nbsp;</td><td>on exit, the time when <em>in_credential</em> becomes valid. May be in the past or future. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__ccache__reference.html#gb8793586b7c4054f2219b28920bf12bd" title="Get the time when the credentials in the ccache become valid.">kim_ccache_get_start_time</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g07fc4d11e42bf7d32be67fcac531c372"></a><!-- doxytag: member="kim_credential.h::kim_credential_get_expiration_time" ref="g07fc4d11e42bf7d32be67fcac531c372" args="(kim_credential_t in_credential, kim_time_t *out_expiration_time)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_get_expiration_time           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_expiration_time</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time when the credentials will expire. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a credential object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_expiration_time</em>&nbsp;</td><td>on exit, the time when <em>in_credential</em> will expire. May be in the past or future. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__ccache__reference.html#g2cbb6b78cac2bb2e4359caf8b53d60c5" title="Get the time when the credentials in the ccache will expire.">kim_ccache_get_expiration_time</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1723a7c06e32ee954be214767bc55194"></a><!-- doxytag: member="kim_credential.h::kim_credential_get_renewal_expiration_time" ref="g1723a7c06e32ee954be214767bc55194" args="(kim_credential_t in_credential, kim_time_t *out_renewal_expiration_time)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_get_renewal_expiration_time           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_renewal_expiration_time</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time when the credentials will no longer be renewable. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a credential object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_renewal_expiration_time</em>&nbsp;</td><td>on exit, the time when <em>in_credential</em> will no longer be renewable. May be in the past or future. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__ccache__reference.html#gfaad7545fbdb381faed8d2378009bd6e" title="Get the time when the credentials in the ccache will no longer be renewable.">kim_ccache_get_renewal_expiration_time</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g894c7144185b1112f6872fdf27fb016d"></a><!-- doxytag: member="kim_credential.h::kim_credential_store" ref="g894c7144185b1112f6872fdf27fb016d" args="(kim_credential_t in_credential, kim_identity_t in_client_identity, kim_ccache_t *out_ccache)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_store           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_client_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_ccache</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a credential in a ccache in the cache collection. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a credential object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_client_identity</em>&nbsp;</td><td>a client identity. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_ccache</em>&nbsp;</td><td>on exit, a ccache object containing <em>in_credential</em> with the client identity <em>in_client_identity</em>. Must be freed with <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a>. Specify NULL if you don't want this return value. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g390a74d4d834fd1b5c2e7aebcd783e32"></a><!-- doxytag: member="kim_credential.h::kim_credential_verify" ref="g390a74d4d834fd1b5c2e7aebcd783e32" args="(kim_credential_t in_credential, kim_identity_t in_service_identity, kim_string_t in_keytab, kim_boolean_t in_fail_if_no_service_key)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_verify           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_service_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_keytab</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_fail_if_no_service_key</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Verify a TGT credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_credential</em>&nbsp;</td><td>a TGT credential to be verified. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_service_identity</em>&nbsp;</td><td>a service identity to look for in the keytab. Specify KIM_IDENTITY_ANY to use the default service identity (usually host/&lt;host's FQDN&gt;&lt;host's local realm&gt;). </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_keytab</em>&nbsp;</td><td>a path to a keytab. Specify NULL for the default keytab location. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_fail_if_no_service_key</em>&nbsp;</td><td>whether or not the absence of a key for <em>in_service_identity</em> in the host's keytab will cause a failure. </td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>specifying FALSE for <em>in_fail_if_no_service_key</em> may expose the calling program to the Zanarotti attack if the host has no keytab installed. </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__ccache__reference.html#g3d293fc7338ff9b654e167153df33b5c" title="Verify the TGT in a ccache.">kim_ccache_verify</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g99ac2c178bec484311cd7fc2cbb7e05e"></a><!-- doxytag: member="kim_credential.h::kim_credential_renew" ref="g99ac2c178bec484311cd7fc2cbb7e05e" args="(kim_credential_t *io_credential, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_renew           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Renew a TGT credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_credential</em>&nbsp;</td><td>a TGT credential to be renewed. On exit, the old credential object will be freed and <em>io_credential</em> will be replaced with a new renewed credential. The new credential must be freed with <a class="el" href="group__kim__credential__reference.html#gb92567dd6b60e525f343cc401e1949aa" title="Free memory associated with a credential object.">kim_credential_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>initial credential options. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__ccache__reference.html#gafb44675df9d05af5b899996be14e2b4" title="Renew the TGT in a ccache.">kim_ccache_renew</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9cd6ba59236babb4e79a680fa54b5037"></a><!-- doxytag: member="kim_credential.h::kim_credential_validate" ref="g9cd6ba59236babb4e79a680fa54b5037" args="(kim_credential_t *io_credential, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_credential_validate           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_credential</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Validate a TGT credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_credential</em>&nbsp;</td><td>a credential object to be validated. On exit, the old credential object will be freed and <em>io_credential</em> will be replaced with a new validated credential. The new credential must be freed with <a class="el" href="group__kim__credential__reference.html#gb92567dd6b60e525f343cc401e1949aa" title="Free memory associated with a credential object.">kim_credential_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>initial credential options. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__ccache__reference.html#g8bb7d46268621e73629dceefd15ff639" title="Validate the TGT in a ccache.">kim_ccache_validate</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb92567dd6b60e525f343cc401e1949aa"></a><!-- doxytag: member="kim_credential.h::kim_credential_free" ref="gb92567dd6b60e525f343cc401e1949aa" args="(kim_credential_t *io_credential)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_credential_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_credential</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with a credential object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_credential</em>&nbsp;</td><td>the credential object to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__error__reference.html b/doc/kim/html/group__kim__error__reference.html
new file mode 100644 (file)
index 0000000..0eca34a
--- /dev/null
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Error Reference Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM Error Reference Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__error__reference.html#gf83a5c0d1b92a533274812dd99e619a1">kim_error_copy</a> (<a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> *out_error, <a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> in_error)
+<dl class="el"><dd class="mdescRight">Copy an error.  <a href="#gf83a5c0d1b92a533274812dd99e619a1"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a> <a class="el" href="group__kim__error__reference.html#g3b97d1e3010d58ac9ba99af405cd0157">kim_error_get_code</a> (<a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> in_error)
+<dl class="el"><dd class="mdescRight">Get a numerical error code for an error.  <a href="#g3b97d1e3010d58ac9ba99af405cd0157"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> <a class="el" href="group__kim__error__reference.html#gdd233fd0d10a3d1772fc72d1278c694f">kim_error_get_display_string</a> (<a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> in_error)
+<dl class="el"><dd class="mdescRight">Get a text description of an error.  <a href="#gdd233fd0d10a3d1772fc72d1278c694f"></a><br></dl><li>void <a class="el" href="group__kim__error__reference.html#gc523758c093a0bb7af18af781e9d182c">kim_error_free</a> (<a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> *io_error)
+<dl class="el"><dd class="mdescRight">Free memory associated with an error.  <a href="#gc523758c093a0bb7af18af781e9d182c"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gf83a5c0d1b92a533274812dd99e619a1"></a><!-- doxytag: member="kim_error.h::kim_error_copy" ref="gf83a5c0d1b92a533274812dd99e619a1" args="(kim_error_t *out_error, kim_error_t in_error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_error_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_error</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_error</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy an error. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_error</em>&nbsp;</td><td>on exit, a new error object which is a copy of <em>in_error</em>. Must be freed with <a class="el" href="group__kim__error__reference.html#gc523758c093a0bb7af18af781e9d182c" title="Free memory associated with an error.">kim_error_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_error</em>&nbsp;</td><td>the error to copy. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3b97d1e3010d58ac9ba99af405cd0157"></a><!-- doxytag: member="kim_error.h::kim_error_get_code" ref="g3b97d1e3010d58ac9ba99af405cd0157" args="(kim_error_t in_error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a> kim_error_get_code           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_error</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a numerical error code for an error. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_error</em>&nbsp;</td><td>an error object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, a machine-readable error code describing the error represented by <em>in_error</em>. On failure, KIM_PARAMETER_ECODE. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdd233fd0d10a3d1772fc72d1278c694f"></a><!-- doxytag: member="kim_error.h::kim_error_get_display_string" ref="gdd233fd0d10a3d1772fc72d1278c694f" args="(kim_error_t in_error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> kim_error_get_display_string           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_error</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a text description of an error. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_error</em>&nbsp;</td><td>an error object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, a human-readable error string describing the error represented by <em>in_error</em>. On failure, NULL, indicating that the kim_error_t object was invalid. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc523758c093a0bb7af18af781e9d182c"></a><!-- doxytag: member="kim_error.h::kim_error_free" ref="gc523758c093a0bb7af18af781e9d182c" args="(kim_error_t *io_error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_error_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_error</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with an error. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_error</em>&nbsp;</td><td>the error object to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__favorite__identities__reference.html b/doc/kim/html/group__kim__favorite__identities__reference.html
new file mode 100644 (file)
index 0000000..cf80ba4
--- /dev/null
@@ -0,0 +1,306 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Favorite Identities Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM Favorite Identities Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__favorite__identities__reference.html#gce53e4a9c9edb531a9e7e26c37e0a5ea">kim_favorite_identities_create</a> (<a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> *out_favorite_identities)
+<dl class="el"><dd class="mdescRight">Create a new favorite identities list.  <a href="#gce53e4a9c9edb531a9e7e26c37e0a5ea"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__favorite__identities__reference.html#g10c6d3516334f6869539972d289f5f6b">kim_favorite_identities_copy</a> (<a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> *out_favorite_identities, <a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> in_favorite_identities)
+<dl class="el"><dd class="mdescRight">Copy a favorite identities list.  <a href="#g10c6d3516334f6869539972d289f5f6b"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__favorite__identities__reference.html#g122519ef11a212852a6045f3f1929fdb">kim_favorite_identities_get_number_of_identities</a> (<a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> in_favorite_identities, <a class="el" href="group__kim__types__reference.html#g709d3d4d2733bc8dc29dcab2e806dd38">kim_count_t</a> *out_number_of_identities)
+<dl class="el"><dd class="mdescRight">Get the number of identities in a favorite identities list.  <a href="#g122519ef11a212852a6045f3f1929fdb"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__favorite__identities__reference.html#gac6ce0a4eaa521fe77b7ae0dbe5097b9">kim_favorite_identities_get_identity_at_index</a> (<a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> in_favorite_identities, <a class="el" href="group__kim__types__reference.html#g709d3d4d2733bc8dc29dcab2e806dd38">kim_count_t</a> in_index, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_identity)
+<dl class="el"><dd class="mdescRight">Get the Nth identity in a favorite identities list.  <a href="#gac6ce0a4eaa521fe77b7ae0dbe5097b9"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__favorite__identities__reference.html#gb298ff23c6e8363d0d34b4c9fdb986e3">kim_favorite_identities_add_identity</a> (<a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> io_favorite_identities, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity)
+<dl class="el"><dd class="mdescRight">Add an identity to a favorite identities list.  <a href="#gb298ff23c6e8363d0d34b4c9fdb986e3"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__favorite__identities__reference.html#g30b32603f1fa3c1fbb275682620c5d83">kim_favorite_identities_remove_identity</a> (<a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> io_favorite_identities, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity)
+<dl class="el"><dd class="mdescRight">Remove an identity from a identities list.  <a href="#g30b32603f1fa3c1fbb275682620c5d83"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__favorite__identities__reference.html#g502923d5a9891fb0bb6b75506ce5a8d1">kim_favorite_identities_remove_all_identities</a> (<a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> io_favorite_identities)
+<dl class="el"><dd class="mdescRight">Empty a favorite identities list.  <a href="#g502923d5a9891fb0bb6b75506ce5a8d1"></a><br></dl><li>void <a class="el" href="group__kim__favorite__identities__reference.html#gd4f899dee1067c58f349c6474300c533">kim_favorite_identities_free</a> (<a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> *io_favorite_identities)
+<dl class="el"><dd class="mdescRight">Free memory associated with an identities list.  <a href="#gd4f899dee1067c58f349c6474300c533"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gce53e4a9c9edb531a9e7e26c37e0a5ea"></a><!-- doxytag: member="kim_preferences.h::kim_favorite_identities_create" ref="gce53e4a9c9edb531a9e7e26c37e0a5ea" args="(kim_favorite_identities_t *out_favorite_identities)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_favorite_identities_create           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_favorite_identities</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new favorite identities list. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_favorite_identities</em>&nbsp;</td><td>on exit, a new favorite identities object. Must be freed with <a class="el" href="group__kim__favorite__identities__reference.html#gd4f899dee1067c58f349c6474300c533" title="Free memory associated with an identities list.">kim_favorite_identities_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g10c6d3516334f6869539972d289f5f6b"></a><!-- doxytag: member="kim_preferences.h::kim_favorite_identities_copy" ref="g10c6d3516334f6869539972d289f5f6b" args="(kim_favorite_identities_t *out_favorite_identities, kim_favorite_identities_t in_favorite_identities)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_favorite_identities_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_favorite_identities</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_favorite_identities</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a favorite identities list. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_favorite_identities</em>&nbsp;</td><td>on exit, a new favorite identities object which is a copy of in_favorite_identities. Must be freed with <a class="el" href="group__kim__favorite__identities__reference.html#gd4f899dee1067c58f349c6474300c533" title="Free memory associated with an identities list.">kim_favorite_identities_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_favorite_identities</em>&nbsp;</td><td>a favorite identities object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g122519ef11a212852a6045f3f1929fdb"></a><!-- doxytag: member="kim_preferences.h::kim_favorite_identities_get_number_of_identities" ref="g122519ef11a212852a6045f3f1929fdb" args="(kim_favorite_identities_t in_favorite_identities, kim_count_t *out_number_of_identities)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_favorite_identities_get_number_of_identities           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_favorite_identities</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g709d3d4d2733bc8dc29dcab2e806dd38">kim_count_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_number_of_identities</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the number of identities in a favorite identities list. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_favorite_identities</em>&nbsp;</td><td>a favorite identities object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_number_of_identities</em>&nbsp;</td><td>on exit, the number of identities in <em>in_favorite_identities</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gac6ce0a4eaa521fe77b7ae0dbe5097b9"></a><!-- doxytag: member="kim_preferences.h::kim_favorite_identities_get_identity_at_index" ref="gac6ce0a4eaa521fe77b7ae0dbe5097b9" args="(kim_favorite_identities_t in_favorite_identities, kim_count_t in_index, kim_identity_t *out_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_favorite_identities_get_identity_at_index           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_favorite_identities</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g709d3d4d2733bc8dc29dcab2e806dd38">kim_count_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the Nth identity in a favorite identities list. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_favorite_identities</em>&nbsp;</td><td>a favorite identities object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_index</em>&nbsp;</td><td>a index into the identities list (starting at 0). </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_realm</em>&nbsp;</td><td>on exit, the identity at <em>in_index</em> in <em>in_favorite_identities</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb298ff23c6e8363d0d34b4c9fdb986e3"></a><!-- doxytag: member="kim_preferences.h::kim_favorite_identities_add_identity" ref="gb298ff23c6e8363d0d34b4c9fdb986e3" args="(kim_favorite_identities_t io_favorite_identities, kim_identity_t in_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_favorite_identities_add_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_favorite_identities</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add an identity to a favorite identities list. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_favorite_identities</em>&nbsp;</td><td>a favorite identities object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity string to add to <em>in_favorite_identities</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g30b32603f1fa3c1fbb275682620c5d83"></a><!-- doxytag: member="kim_preferences.h::kim_favorite_identities_remove_identity" ref="g30b32603f1fa3c1fbb275682620c5d83" args="(kim_favorite_identities_t io_favorite_identities, kim_identity_t in_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_favorite_identities_remove_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_favorite_identities</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove an identity from a identities list. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_favorite_identities</em>&nbsp;</td><td>a favorite identities object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity to remove from <em>in_favorite_identities</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g502923d5a9891fb0bb6b75506ce5a8d1"></a><!-- doxytag: member="kim_preferences.h::kim_favorite_identities_remove_all_identities" ref="g502923d5a9891fb0bb6b75506ce5a8d1" args="(kim_favorite_identities_t io_favorite_identities)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_favorite_identities_remove_all_identities           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_favorite_identities</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Empty a favorite identities list. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_favorite_identities</em>&nbsp;</td><td>a favorite identities object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd4f899dee1067c58f349c6474300c533"></a><!-- doxytag: member="kim_preferences.h::kim_favorite_identities_free" ref="gd4f899dee1067c58f349c6474300c533" args="(kim_favorite_identities_t *io_favorite_identities)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_favorite_identities_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_favorite_identities</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with an identities list. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_favorite_identities</em>&nbsp;</td><td>the favorite identities object to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:20 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__identity__reference.html b/doc/kim/html/group__kim__identity__reference.html
new file mode 100644 (file)
index 0000000..86d6df7
--- /dev/null
@@ -0,0 +1,646 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Identity Reference Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM Identity Reference Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#ga69ec4892b8a0dc7aa183803d0cb15fd">kim_identity_create_from_string</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_identity, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_string)
+<dl class="el"><dd class="mdescRight">Create a identity from a string.  <a href="#ga69ec4892b8a0dc7aa183803d0cb15fd"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#gd98419d88372078ff849426c9a9f177e">kim_identity_create_from_components</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_identity, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_realm, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_1st_component,...)
+<dl class="el"><dd class="mdescRight">Create a identity from a realm and component strings.  <a href="#gd98419d88372078ff849426c9a9f177e"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#g1d5a5aba3dfdc1ff95ddd691b3f18c0a">kim_identity_create_from_krb5_principal</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_identity, krb5_context in_krb5_context, krb5_principal in_krb5_principal)
+<dl class="el"><dd class="mdescRight">Create an identity object from a krb5_principal.  <a href="#g1d5a5aba3dfdc1ff95ddd691b3f18c0a"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#gf83f0fdb2af6cd730727238766e0e5b0">kim_identity_copy</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_identity, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity)
+<dl class="el"><dd class="mdescRight">Copy an identity object.  <a href="#gf83f0fdb2af6cd730727238766e0e5b0"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#g8f166b041a651c4f7e2c0229f581a5d2">kim_identity_compare</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_compare_to_identity, <a class="el" href="group__kim__types__reference.html#g304e619e3936990905c7998f07a8800b">kim_comparison_t</a> *out_comparison)
+<dl class="el"><dd class="mdescRight">Compare identity objects for equivalency.  <a href="#g8f166b041a651c4f7e2c0229f581a5d2"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#gf335ac09504999d0ad61390ede02c113">kim_identity_get_string</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_string)
+<dl class="el"><dd class="mdescRight">Get the string representation of a identity.  <a href="#gf335ac09504999d0ad61390ede02c113"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#g3421872c143cc80b1bf220c34e26cc21">kim_identity_get_display_string</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_display_string)
+<dl class="el"><dd class="mdescRight">Get a human-readable string representation of an identity.  <a href="#g3421872c143cc80b1bf220c34e26cc21"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#gb5c93208197c70e202209adf61b49a3b">kim_identity_get_realm</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_realm_string)
+<dl class="el"><dd class="mdescRight">Get the realm string of an identity.  <a href="#gb5c93208197c70e202209adf61b49a3b"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#g6077350272922bf196e9a900e5989c41">kim_identity_get_number_of_components</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, <a class="el" href="group__kim__types__reference.html#g709d3d4d2733bc8dc29dcab2e806dd38">kim_count_t</a> *out_number_of_components)
+<dl class="el"><dd class="mdescRight">Get the number of components of an identity.  <a href="#g6077350272922bf196e9a900e5989c41"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#g1e58b572e65b9771bbf6dee51883d71b">kim_identity_get_component_at_index</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, <a class="el" href="group__kim__types__reference.html#g709d3d4d2733bc8dc29dcab2e806dd38">kim_count_t</a> in_index, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_component_string)
+<dl class="el"><dd class="mdescRight">Get the Nth component of an identity.  <a href="#g1e58b572e65b9771bbf6dee51883d71b"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#g63b40561de2bfe2315990d1579d5db75">kim_identity_get_krb5_principal</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, krb5_context in_krb5_context, krb5_principal *out_krb5_principal)
+<dl class="el"><dd class="mdescRight">Get the krb5_principal representation of an identity.  <a href="#g63b40561de2bfe2315990d1579d5db75"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#g445ddb044181a68fdbad8a63e614add5">kim_identity_get_gss_name</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, gss_name_t *out_gss_name)
+<dl class="el"><dd class="mdescRight">Get the gss_name_t representation of an identity.  <a href="#g445ddb044181a68fdbad8a63e614add5"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#g493fd86d79650af831d52b8a14b2774c">kim_identity_change_password</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Change the password for an identity.  <a href="#g493fd86d79650af831d52b8a14b2774c"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__identity__reference.html#g7f1513586561a6bb724e20a8ca4a6977">kim_identity_change_password_to_password</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_new_password)
+<dl class="el"><dd class="mdescRight">Change the password for an identity to a caller-provided new password.  <a href="#g7f1513586561a6bb724e20a8ca4a6977"></a><br></dl><li>void <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23">kim_identity_free</a> (<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *io_identity)
+<dl class="el"><dd class="mdescRight">Free memory associated with an identity.  <a href="#gd384198163f30b97a6a583ad871a0e23"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga69ec4892b8a0dc7aa183803d0cb15fd"></a><!-- doxytag: member="kim_identity.h::kim_identity_create_from_string" ref="ga69ec4892b8a0dc7aa183803d0cb15fd" args="(kim_identity_t *out_identity, kim_string_t in_string)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_create_from_string           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_string</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a identity from a string. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_identity</em>&nbsp;</td><td>on exit, a new identity object. Must be freed with <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23" title="Free memory associated with an identity.">kim_identity_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_string</em>&nbsp;</td><td>a string representation of a Kerberos identity. Special characters such as '/' and '@' must be escaped with '\'. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd98419d88372078ff849426c9a9f177e"></a><!-- doxytag: member="kim_identity.h::kim_identity_create_from_components" ref="gd98419d88372078ff849426c9a9f177e" args="(kim_identity_t *out_identity, kim_string_t in_realm, kim_string_t in_1st_component,...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_create_from_components           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_realm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_1st_component</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&nbsp;</td>
+          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a identity from a realm and component strings. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_identity</em>&nbsp;</td><td>on exit, a new identity object. Must be freed with <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23" title="Free memory associated with an identity.">kim_identity_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_realm</em>&nbsp;</td><td>a string representation of a Kerberos realm. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_1st_component</em>&nbsp;</td><td>a string representing the first component of the identity. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>zero or more strings of type kim_string_t representing additional components of the identity followed by a terminating NULL. Components will be assembled in order (ie: the 4th argument to <a class="el" href="group__kim__identity__reference.html#gd98419d88372078ff849426c9a9f177e" title="Create a identity from a realm and component strings.">kim_identity_create_from_components()</a> will be the 2nd component of the identity). </td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The last argument must be a NULL or <a class="el" href="group__kim__identity__reference.html#gd98419d88372078ff849426c9a9f177e" title="Create a identity from a realm and component strings.">kim_identity_create_from_components()</a> may crash. </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1d5a5aba3dfdc1ff95ddd691b3f18c0a"></a><!-- doxytag: member="kim_identity.h::kim_identity_create_from_krb5_principal" ref="g1d5a5aba3dfdc1ff95ddd691b3f18c0a" args="(kim_identity_t *out_identity, krb5_context in_krb5_context, krb5_principal in_krb5_principal)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_create_from_krb5_principal           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_context&nbsp;</td>
+          <td class="paramname"> <em>in_krb5_context</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_principal&nbsp;</td>
+          <td class="paramname"> <em>in_krb5_principal</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create an identity object from a krb5_principal. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_identity</em>&nbsp;</td><td>on exit, a new identity object which is a copy of <em>in_krb5_principal</em>. Must be freed with <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23" title="Free memory associated with an identity.">kim_identity_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_krb5_context</em>&nbsp;</td><td>the krb5 context used to create <em>in_krb5_principal</em>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_krb5_principal</em>&nbsp;</td><td>a krb5 principal object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf83f0fdb2af6cd730727238766e0e5b0"></a><!-- doxytag: member="kim_identity.h::kim_identity_copy" ref="gf83f0fdb2af6cd730727238766e0e5b0" args="(kim_identity_t *out_identity, kim_identity_t in_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy an identity object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_identity</em>&nbsp;</td><td>on exit, a new identity object which is a copy of <em>in_identity</em>. Must be freed with <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23" title="Free memory associated with an identity.">kim_identity_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8f166b041a651c4f7e2c0229f581a5d2"></a><!-- doxytag: member="kim_identity.h::kim_identity_compare" ref="g8f166b041a651c4f7e2c0229f581a5d2" args="(kim_identity_t in_identity, kim_identity_t in_compare_to_identity, kim_comparison_t *out_comparison)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_compare           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_compare_to_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g304e619e3936990905c7998f07a8800b">kim_comparison_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_comparison</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compare identity objects for equivalency. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_compare_to_identity</em>&nbsp;</td><td>an identity object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_comparison</em>&nbsp;</td><td>on exit, a comparison of <em>in_identity</em> and <em>in_compare_to_identity</em> which determines whether or not the two identities are equivalent and their sort order (for display to the user) if they are not. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf335ac09504999d0ad61390ede02c113"></a><!-- doxytag: member="kim_identity.h::kim_identity_get_string" ref="gf335ac09504999d0ad61390ede02c113" args="(kim_identity_t in_identity, kim_string_t *out_string)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_get_string           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_string</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the string representation of a identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_string</em>&nbsp;</td><td>on exit, a string representation of <em>in_identity</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Special characters such as '@' and '/' will be escaped with '\'. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3421872c143cc80b1bf220c34e26cc21"></a><!-- doxytag: member="kim_identity.h::kim_identity_get_display_string" ref="g3421872c143cc80b1bf220c34e26cc21" args="(kim_identity_t in_identity, kim_string_t *out_display_string)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_get_display_string           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_display_string</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a human-readable string representation of an identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_display_string</em>&nbsp;</td><td>on exit, a string representation of <em>in_identity</em> appropriate for display to the user. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Special characters such as '/' and '@' are <em>not</em> escaped with '\'. As a result the string returned from this function cannot be used with <a class="el" href="group__kim__identity__reference.html#ga69ec4892b8a0dc7aa183803d0cb15fd" title="Create a identity from a string.">kim_identity_create_from_string()</a> because it does not uniquely specify a principal. The result of this function should <em>only</em> be used to display to the user. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb5c93208197c70e202209adf61b49a3b"></a><!-- doxytag: member="kim_identity.h::kim_identity_get_realm" ref="gb5c93208197c70e202209adf61b49a3b" args="(kim_identity_t in_identity, kim_string_t *out_realm_string)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_get_realm           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_realm_string</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the realm string of an identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_realm_string</em>&nbsp;</td><td>on exit, a string representation of <em>in_identity's</em> realm. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6077350272922bf196e9a900e5989c41"></a><!-- doxytag: member="kim_identity.h::kim_identity_get_number_of_components" ref="g6077350272922bf196e9a900e5989c41" args="(kim_identity_t in_identity, kim_count_t *out_number_of_components)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_get_number_of_components           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g709d3d4d2733bc8dc29dcab2e806dd38">kim_count_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_number_of_components</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the number of components of an identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_number_of_components</em>&nbsp;</td><td>on exit the number of components in <em>in_identity</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1e58b572e65b9771bbf6dee51883d71b"></a><!-- doxytag: member="kim_identity.h::kim_identity_get_component_at_index" ref="g1e58b572e65b9771bbf6dee51883d71b" args="(kim_identity_t in_identity, kim_count_t in_index, kim_string_t *out_component_string)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_get_component_at_index           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g709d3d4d2733bc8dc29dcab2e806dd38">kim_count_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_component_string</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the Nth component of an identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_index</em>&nbsp;</td><td>the index of the desired component. Component indexes start at 0. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_component_string</em>&nbsp;</td><td>on exit, a string representation of the component in <em>in_identity</em> specified by <em>in_index</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g63b40561de2bfe2315990d1579d5db75"></a><!-- doxytag: member="kim_identity.h::kim_identity_get_krb5_principal" ref="g63b40561de2bfe2315990d1579d5db75" args="(kim_identity_t in_identity, krb5_context in_krb5_context, krb5_principal *out_krb5_principal)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_get_krb5_principal           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_context&nbsp;</td>
+          <td class="paramname"> <em>in_krb5_context</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">krb5_principal *&nbsp;</td>
+          <td class="paramname"> <em>out_krb5_principal</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the krb5_principal representation of an identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_krb5_context</em>&nbsp;</td><td>a krb5 context object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_krb5_principal</em>&nbsp;</td><td>on exit, a krb5_principal representation of <em>in_identity</em> allocated with <em>in_krb5_context</em>. Must be freed with krb5_free_principal() using <em>in_krb5_context</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g445ddb044181a68fdbad8a63e614add5"></a><!-- doxytag: member="kim_identity.h::kim_identity_get_gss_name" ref="g445ddb044181a68fdbad8a63e614add5" args="(kim_identity_t in_identity, gss_name_t *out_gss_name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_get_gss_name           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">gss_name_t *&nbsp;</td>
+          <td class="paramname"> <em>out_gss_name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the gss_name_t representation of an identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_gss_name</em>&nbsp;</td><td>on exit, a gss_name_t representation of <em>in_identity</em>. Must be freed with gss_release_name(). </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g493fd86d79650af831d52b8a14b2774c"></a><!-- doxytag: member="kim_identity.h::kim_identity_change_password" ref="g493fd86d79650af831d52b8a14b2774c" args="(kim_identity_t in_identity, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_change_password           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Change the password for an identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object whose password will be changed. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>initial credential options to be used if a new credential is obtained. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd><a class="el" href="group__kim__identity__reference.html#g493fd86d79650af831d52b8a14b2774c" title="Change the password for an identity.">kim_identity_change_password()</a> will acquire a temporary credential to change the password. It uses the <em>in_options</em> structure to obtain information about the desired prompter and current password. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7f1513586561a6bb724e20a8ca4a6977"></a><!-- doxytag: member="kim_identity.h::kim_identity_change_password_to_password" ref="g7f1513586561a6bb724e20a8ca4a6977" args="(kim_identity_t in_identity, kim_options_t in_options, kim_string_t in_new_password)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_identity_change_password_to_password           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_new_password</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Change the password for an identity to a caller-provided new password. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>an identity object whose password will be changed. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>initial credential options to be used if a new credential is obtained. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_new_password</em>&nbsp;</td><td>a string representation of the identity's new password. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>kim_identity_change_password_with_passwords() will acquire a temporary credential to change the password. It uses the <em>in_options</em> structure to obtain information about the desired prompter and current password. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd384198163f30b97a6a583ad871a0e23"></a><!-- doxytag: member="kim_identity.h::kim_identity_free" ref="gd384198163f30b97a6a583ad871a0e23" args="(kim_identity_t *io_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_identity_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_identity</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with an identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_identity</em>&nbsp;</td><td>the identity object to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__options__reference.html b/doc/kim/html/group__kim__options__reference.html
new file mode 100644 (file)
index 0000000..0ab05b8
--- /dev/null
@@ -0,0 +1,1040 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Options Reference Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM Options Reference Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g4d00f4d070409ea90aa69a8ac5cb47cf">kim_options_create</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *out_options)
+<dl class="el"><dd class="mdescRight">Create new options with default values.  <a href="#g4d00f4d070409ea90aa69a8ac5cb47cf"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g9581098fcec4c67e4504d90c98dd8d06">kim_options_copy</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *out_options, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Copy options.  <a href="#g9581098fcec4c67e4504d90c98dd8d06"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#gb3342e60ebb03f901307fd605af5a684">kim_options_set_prompt_callback</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, <a class="el" href="group__kim__types__reference.html#g3dc87ed0aa0847e5af0e4f410ba6d7dd">kim_prompt_callback_t</a> in_prompt_callback)
+<dl class="el"><dd class="mdescRight">Set the prompt callback for obtaining information from the user.  <a href="#gb3342e60ebb03f901307fd605af5a684"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g33ef5b43db39436f16f0c7d80d1860d1">kim_options_get_prompt_callback</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g3dc87ed0aa0847e5af0e4f410ba6d7dd">kim_prompt_callback_t</a> *out_prompt_callback)
+<dl class="el"><dd class="mdescRight">Get the prompt callback for obtaining information from the user.  <a href="#g33ef5b43db39436f16f0c7d80d1860d1"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#gf8836b9f6f8a8d4350a781b85f4017e5">kim_options_set_data</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, const void *in_data)
+<dl class="el"><dd class="mdescRight">Set caller-specific data for use in library callbacks.  <a href="#gf8836b9f6f8a8d4350a781b85f4017e5"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g4adbc1e7656c45991f07533798132e4b">kim_options_get_data</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, const void **out_data)
+<dl class="el"><dd class="mdescRight">Get caller-specific data for use in library callbacks.  <a href="#g4adbc1e7656c45991f07533798132e4b"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g55acd6378c0bdf5c534b9535a534c9bd">kim_options_set_prompt_response</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, <a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a> in_prompt_type, void *in_response)
+<dl class="el"><dd class="mdescRight">Set a response for a prompt for use when acquiring credentials.  <a href="#g55acd6378c0bdf5c534b9535a534c9bd"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g7e45337c11734b040c74038f8c2ab21c">kim_options_get_prompt_response</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a> in_prompt_type, void **out_response)
+<dl class="el"><dd class="mdescRight">Get the response for a prompt for use when acquiring credentials.  <a href="#g7e45337c11734b040c74038f8c2ab21c"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g2193de68adcec22df88069d86e2a145c">kim_options_set_start_time</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, <a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> in_start_time)
+<dl class="el"><dd class="mdescRight">Set the date when a credential should become valid.  <a href="#g2193de68adcec22df88069d86e2a145c"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g587539ca61a06b5730ed688f914e9fa6">kim_options_get_start_time</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *out_start_time)
+<dl class="el"><dd class="mdescRight">Get the date when a credential should become valid.  <a href="#g587539ca61a06b5730ed688f914e9fa6"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#ga6058acd016b6387be19e0127606fcb1">kim_options_set_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> in_lifetime)
+<dl class="el"><dd class="mdescRight">Set the duration during which a credential should be valid.  <a href="#ga6058acd016b6387be19e0127606fcb1"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#gc179cfff2a29eb0bbe4ac0b6dab8afad">kim_options_get_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *out_lifetime)
+<dl class="el"><dd class="mdescRight">Get the duration during which an acquired credential should be valid.  <a href="#gc179cfff2a29eb0bbe4ac0b6dab8afad"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g47a49dca419a7d7f1d79c5acd1f16b7a">kim_options_set_renewable</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> in_renewable)
+<dl class="el"><dd class="mdescRight">Set whether or not to request a renewable credential.  <a href="#g47a49dca419a7d7f1d79c5acd1f16b7a"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#gefc2785f119f04379b20d381a79a45af">kim_options_get_renewable</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *out_renewable)
+<dl class="el"><dd class="mdescRight">Get whether or not to request a renewable credential.  <a href="#gefc2785f119f04379b20d381a79a45af"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g035bd3841ff3581922cba91b043cd945">kim_options_set_renewal_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> in_renewal_lifetime)
+<dl class="el"><dd class="mdescRight">Set the duration during which a valid credential should be renewable.  <a href="#g035bd3841ff3581922cba91b043cd945"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g2a49d92912b6270357788436d2c6fd8f">kim_options_get_renewal_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *out_renewal_lifetime)
+<dl class="el"><dd class="mdescRight">Get the duration during which a valid credential should be renewable.  <a href="#g2a49d92912b6270357788436d2c6fd8f"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#gc055fb95bb39e93b276dc2380632cd6d">kim_options_set_forwardable</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> in_forwardable)
+<dl class="el"><dd class="mdescRight">Set whether or not to request a forwardable credential.  <a href="#gc055fb95bb39e93b276dc2380632cd6d"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g6dc2e2ec0448d28ce847fc8880ce8561">kim_options_get_forwardable</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *out_forwardable)
+<dl class="el"><dd class="mdescRight">Get whether or not to request a forwardable credential.  <a href="#g6dc2e2ec0448d28ce847fc8880ce8561"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g4ab6093bff1c28196e2886e146d5e0d0">kim_options_set_proxiable</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> in_proxiable)
+<dl class="el"><dd class="mdescRight">Set whether or not to request a proxiable credential.  <a href="#g4ab6093bff1c28196e2886e146d5e0d0"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#ga36c948940f89e1cca4477b3d1869c84">kim_options_get_proxiable</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *out_proxiable)
+<dl class="el"><dd class="mdescRight">Get whether or not to request a proxiable credential.  <a href="#ga36c948940f89e1cca4477b3d1869c84"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g673640ffd337c815cbc71cbef32b4156">kim_options_set_addressless</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> in_addressless)
+<dl class="el"><dd class="mdescRight">Set whether or not to request an addressless credential.  <a href="#g673640ffd337c815cbc71cbef32b4156"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g8308f996ae22cad938ec4a4782a01322">kim_options_get_addressless</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *out_addressless)
+<dl class="el"><dd class="mdescRight">Get whether or not to request an addressless credential.  <a href="#g8308f996ae22cad938ec4a4782a01322"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#g5914bd9caf4ba781c723d152bf5ddc05">kim_options_set_service_name</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> io_options, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_service_name)
+<dl class="el"><dd class="mdescRight">Set the service name to request a credential for.  <a href="#g5914bd9caf4ba781c723d152bf5ddc05"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__options__reference.html#ge74278a56626df2ad5a60ed61d8a1836">kim_options_get_service_name</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_service_name)
+<dl class="el"><dd class="mdescRight">Get the service name to request a credential for.  <a href="#ge74278a56626df2ad5a60ed61d8a1836"></a><br></dl><li>void <a class="el" href="group__kim__options__reference.html#g06130689189d5ba4f9e518c8ed68eb7d">kim_options_free</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *io_options)
+<dl class="el"><dd class="mdescRight">Free memory associated with an options object.  <a href="#g06130689189d5ba4f9e518c8ed68eb7d"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g4d00f4d070409ea90aa69a8ac5cb47cf"></a><!-- doxytag: member="kim_options.h::kim_options_create" ref="g4d00f4d070409ea90aa69a8ac5cb47cf" args="(kim_options_t *out_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_create           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_options</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create new options with default values. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_options</em>&nbsp;</td><td>on exit, a new options object. Must be freed with <a class="el" href="group__kim__options__reference.html#g06130689189d5ba4f9e518c8ed68eb7d" title="Free memory associated with an options object.">kim_options_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9581098fcec4c67e4504d90c98dd8d06"></a><!-- doxytag: member="kim_options.h::kim_options_copy" ref="g9581098fcec4c67e4504d90c98dd8d06" args="(kim_options_t *out_options, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy options. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_options</em>&nbsp;</td><td>on exit, a new options object which is a copy of <em>in_options</em>. Must be freed with <a class="el" href="group__kim__options__reference.html#g06130689189d5ba4f9e518c8ed68eb7d" title="Free memory associated with an options object.">kim_options_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>a options object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb3342e60ebb03f901307fd605af5a684"></a><!-- doxytag: member="kim_options.h::kim_options_set_prompt_callback" ref="gb3342e60ebb03f901307fd605af5a684" args="(kim_options_t io_options, kim_prompt_callback_t in_prompt_callback)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_prompt_callback           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g3dc87ed0aa0847e5af0e4f410ba6d7dd">kim_prompt_callback_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_prompt_callback</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the prompt callback for obtaining information from the user. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_prompt_callback</em>&nbsp;</td><td>a prompt callback function. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd><a class="el" href="group__kim__types__reference.html#gd9cfd6a66e9bdcde30a285dc350eb370">kim_prompt_callback_default</a> </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g33ef5b43db39436f16f0c7d80d1860d1" title="Get the prompt callback for obtaining information from the user.">kim_options_get_prompt_callback()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g33ef5b43db39436f16f0c7d80d1860d1"></a><!-- doxytag: member="kim_options.h::kim_options_get_prompt_callback" ref="g33ef5b43db39436f16f0c7d80d1860d1" args="(kim_options_t in_options, kim_prompt_callback_t *out_prompt_callback)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_prompt_callback           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g3dc87ed0aa0847e5af0e4f410ba6d7dd">kim_prompt_callback_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_prompt_callback</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the prompt callback for obtaining information from the user. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_prompt_callback</em>&nbsp;</td><td>on exit, the prompt callback specified by in_options. Does not need to be freed but may become invalid when <em>in_options</em> is freed. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd><a class="el" href="group__kim__types__reference.html#gd9cfd6a66e9bdcde30a285dc350eb370">kim_prompt_callback_default</a> </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#gb3342e60ebb03f901307fd605af5a684" title="Set the prompt callback for obtaining information from the user.">kim_options_set_prompt_callback()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf8836b9f6f8a8d4350a781b85f4017e5"></a><!-- doxytag: member="kim_options.h::kim_options_set_data" ref="gf8836b9f6f8a8d4350a781b85f4017e5" args="(kim_options_t io_options, const void *in_data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_data           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>in_data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set caller-specific data for use in library callbacks. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_data</em>&nbsp;</td><td>a pointer to caller-specific data. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This option can be used by the caller to store a pointer to data needed when handling a callback. The KIM library does not use this options data in any way. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>NULL (no data is set by default) </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g4adbc1e7656c45991f07533798132e4b" title="Get caller-specific data for use in library callbacks.">kim_options_get_data()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4adbc1e7656c45991f07533798132e4b"></a><!-- doxytag: member="kim_options.h::kim_options_get_data" ref="g4adbc1e7656c45991f07533798132e4b" args="(kim_options_t in_options, const void **out_data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_data           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void **&nbsp;</td>
+          <td class="paramname"> <em>out_data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get caller-specific data for use in library callbacks. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_data</em>&nbsp;</td><td>on exit, the pointer to caller specific data specified by in_options. Does not need to be freed but may become invalid when <em>in_options</em> is freed. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This option can be used by the caller to store a pointer to data needed when handling a callback. The KIM library does not use this options data in any way. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>NULL (no data is set by default) </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#gf8836b9f6f8a8d4350a781b85f4017e5" title="Set caller-specific data for use in library callbacks.">kim_options_set_data()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g55acd6378c0bdf5c534b9535a534c9bd"></a><!-- doxytag: member="kim_options.h::kim_options_set_prompt_response" ref="g55acd6378c0bdf5c534b9535a534c9bd" args="(kim_options_t io_options, kim_prompt_type_t in_prompt_type, void *in_response)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_prompt_response           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_prompt_type</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>in_response</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a response for a prompt for use when acquiring credentials. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_prompt_type</em>&nbsp;</td><td>a type of prompt. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_response</em>&nbsp;</td><td>a response to prompts of <em>in_prompt_type</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Each response only overrides the first prompt of a given prompt type. If multiple prompts of the same type are required, or if a prompt of a different type is requested, the prompt callback will be called to obtain user input. If you want to turn off prompting entirely, call <a class="el" href="group__kim__options__reference.html#gb3342e60ebb03f901307fd605af5a684" title="Set the prompt callback for obtaining information from the user.">kim_options_set_prompt_callback()</a> with <a class="el" href="group__kim__types__reference.html#g9699effd6079690c8b744ff96dff1914">kim_prompt_callback_none</a>. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>NULL (no response is set by default) </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g7e45337c11734b040c74038f8c2ab21c" title="Get the response for a prompt for use when acquiring credentials.">kim_options_get_prompt_response()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7e45337c11734b040c74038f8c2ab21c"></a><!-- doxytag: member="kim_options.h::kim_options_get_prompt_response" ref="g7e45337c11734b040c74038f8c2ab21c" args="(kim_options_t in_options, kim_prompt_type_t in_prompt_type, void **out_response)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_prompt_response           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_prompt_type</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>out_response</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the response for a prompt for use when acquiring credentials. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_prompt_type</em>&nbsp;</td><td>a type of prompt. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_response</em>&nbsp;</td><td>on exit, the response to prompts of type <em>in_prompt_type</em> specified by <em>in_options</em>. Does not need to be freed but may become invalid when <em>in_options</em> is freed. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Each response only overrides the first prompt of a given prompt type. If multiple prompts of the same type are required, or if a prompt of a different type is requested, the prompt callback will be called to obtain user input. If you want to turn off prompting entirely, call <a class="el" href="group__kim__options__reference.html#gb3342e60ebb03f901307fd605af5a684" title="Set the prompt callback for obtaining information from the user.">kim_options_set_prompt_callback()</a> with <a class="el" href="group__kim__types__reference.html#g9699effd6079690c8b744ff96dff1914">kim_prompt_callback_none</a>. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>NULL (no response is set by default) </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g55acd6378c0bdf5c534b9535a534c9bd" title="Set a response for a prompt for use when acquiring credentials.">kim_options_set_prompt_response()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2193de68adcec22df88069d86e2a145c"></a><!-- doxytag: member="kim_options.h::kim_options_set_start_time" ref="g2193de68adcec22df88069d86e2a145c" args="(kim_options_t io_options, kim_time_t in_start_time)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_start_time           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_start_time</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the date when a credential should become valid. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_start_time</em>&nbsp;</td><td>a start date (in seconds since January 1, 1970). Set to <a class="el" href="group__kim__types__reference.html#g88d98fa3bd4ca00913bff414d65c3590">KIM_OPTIONS_START_IMMEDIATELY</a> for the acquired credential to be valid immediately. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>When using a start time in the future, once the start time has been reached the credential must be validated before it can be used. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>0, indicating "now". The credential will be valid immediately. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g587539ca61a06b5730ed688f914e9fa6" title="Get the date when a credential should become valid.">kim_options_get_start_time()</a>, <a class="el" href="group__kim__credential__reference.html#g9cd6ba59236babb4e79a680fa54b5037" title="Validate a TGT credential.">kim_credential_validate()</a>, <a class="el" href="group__kim__ccache__reference.html#g8bb7d46268621e73629dceefd15ff639" title="Validate the TGT in a ccache.">kim_ccache_validate()</a>, kim_identity_validate() </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g587539ca61a06b5730ed688f914e9fa6"></a><!-- doxytag: member="kim_options.h::kim_options_get_start_time" ref="g587539ca61a06b5730ed688f914e9fa6" args="(kim_options_t in_options, kim_time_t *out_start_time)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_start_time           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_start_time</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the date when a credential should become valid. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_start_time</em>&nbsp;</td><td>on exit, the start date (in seconds since January 1, 1970) specified by <em>in_options</em>. <a class="el" href="group__kim__types__reference.html#g88d98fa3bd4ca00913bff414d65c3590">KIM_OPTIONS_START_IMMEDIATELY</a> indicates the credential will be valid immediately. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>When using a start time in the future, once the start time has been reached the credential must be validated before it can be used. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>0, indicating "now". The credential will be valid immediately. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g2193de68adcec22df88069d86e2a145c" title="Set the date when a credential should become valid.">kim_options_set_start_time()</a>, <a class="el" href="group__kim__credential__reference.html#g9cd6ba59236babb4e79a680fa54b5037" title="Validate a TGT credential.">kim_credential_validate()</a>, <a class="el" href="group__kim__ccache__reference.html#g8bb7d46268621e73629dceefd15ff639" title="Validate the TGT in a ccache.">kim_ccache_validate()</a>, kim_identity_validate() </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga6058acd016b6387be19e0127606fcb1"></a><!-- doxytag: member="kim_options.h::kim_options_set_lifetime" ref="ga6058acd016b6387be19e0127606fcb1" args="(kim_options_t io_options, kim_lifetime_t in_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the duration during which a credential should be valid. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_lifetime</em>&nbsp;</td><td>a lifetime duration (in seconds). </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>KDCs have a maximum allowed lifetime per identity (usually 10 to 21 hours). As a result the credential will actually have a lifetime which is the minimum of <em>in_lifetime</em> and the KDC's maximum allowed lifetime. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#gc179cfff2a29eb0bbe4ac0b6dab8afad" title="Get the duration during which an acquired credential should be valid.">kim_options_get_lifetime()</a> </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. 10 hours if unspecified. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc179cfff2a29eb0bbe4ac0b6dab8afad"></a><!-- doxytag: member="kim_options.h::kim_options_get_lifetime" ref="gc179cfff2a29eb0bbe4ac0b6dab8afad" args="(kim_options_t in_options, kim_lifetime_t *out_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the duration during which an acquired credential should be valid. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_lifetime</em>&nbsp;</td><td>on exit, the lifetime duration (in seconds) specified in <em>in_options</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>KDCs have a maximum allowed lifetime per identity (usually 10 to 21 hours). As a result the credential will actually have a lifetime which is the minimum of <em>in_lifetime</em> and the KDC's maximum allowed lifetime. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. 10 hours if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#ga6058acd016b6387be19e0127606fcb1" title="Set the duration during which a credential should be valid.">kim_options_set_lifetime()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g47a49dca419a7d7f1d79c5acd1f16b7a"></a><!-- doxytag: member="kim_options.h::kim_options_set_renewable" ref="g47a49dca419a7d7f1d79c5acd1f16b7a" args="(kim_options_t io_options, kim_boolean_t in_renewable)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_renewable           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_renewable</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set whether or not to request a renewable credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_renewable</em>&nbsp;</td><td>a boolean value indicating whether or not to request a renewable credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. TRUE if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#gefc2785f119f04379b20d381a79a45af" title="Get whether or not to request a renewable credential.">kim_options_get_renewable()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gefc2785f119f04379b20d381a79a45af"></a><!-- doxytag: member="kim_options.h::kim_options_get_renewable" ref="gefc2785f119f04379b20d381a79a45af" args="(kim_options_t in_options, kim_boolean_t *out_renewable)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_renewable           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_renewable</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get whether or not to request a renewable credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_renewable</em>&nbsp;</td><td>on exit, a boolean value indicating whether or <em>in_options</em> will request a renewable credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. TRUE if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g47a49dca419a7d7f1d79c5acd1f16b7a" title="Set whether or not to request a renewable credential.">kim_options_set_renewable()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g035bd3841ff3581922cba91b043cd945"></a><!-- doxytag: member="kim_options.h::kim_options_set_renewal_lifetime" ref="g035bd3841ff3581922cba91b043cd945" args="(kim_options_t io_options, kim_lifetime_t in_renewal_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_renewal_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_renewal_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the duration during which a valid credential should be renewable. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_renewal_lifetime</em>&nbsp;</td><td>a renewal lifetime duration (in seconds). </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>KDCs have a maximum allowed renewal lifetime per identity (usually 10 to 21 hours). As a result the credential will actually have a lifetime which is the minimum of <em>in_lifetime</em> and the KDC's maximum allowed lifetime. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. 7 days if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g2a49d92912b6270357788436d2c6fd8f" title="Get the duration during which a valid credential should be renewable.">kim_options_get_renewal_lifetime()</a>, kim_identity_renew(), <a class="el" href="group__kim__credential__reference.html#g99ac2c178bec484311cd7fc2cbb7e05e" title="Renew a TGT credential.">kim_credential_renew()</a>, <a class="el" href="group__kim__ccache__reference.html#gafb44675df9d05af5b899996be14e2b4" title="Renew the TGT in a ccache.">kim_ccache_renew()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2a49d92912b6270357788436d2c6fd8f"></a><!-- doxytag: member="kim_options.h::kim_options_get_renewal_lifetime" ref="g2a49d92912b6270357788436d2c6fd8f" args="(kim_options_t in_options, kim_lifetime_t *out_renewal_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_renewal_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_renewal_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the duration during which a valid credential should be renewable. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_renewal_lifetime</em>&nbsp;</td><td>on exit, the renewal lifetime duration (in seconds) specified in <em>in_options</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>KDCs have a maximum allowed lifetime per identity (usually 10 to 21 hours). As a result the credential will actually have a lifetime which is the minimum of <em>in_lifetime</em> and the KDC's maximum allowed lifetime. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. 7 days if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g035bd3841ff3581922cba91b043cd945" title="Set the duration during which a valid credential should be renewable.">kim_options_set_renewal_lifetime()</a>, kim_identity_renew(), <a class="el" href="group__kim__credential__reference.html#g99ac2c178bec484311cd7fc2cbb7e05e" title="Renew a TGT credential.">kim_credential_renew()</a>, <a class="el" href="group__kim__ccache__reference.html#gafb44675df9d05af5b899996be14e2b4" title="Renew the TGT in a ccache.">kim_ccache_renew()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc055fb95bb39e93b276dc2380632cd6d"></a><!-- doxytag: member="kim_options.h::kim_options_set_forwardable" ref="gc055fb95bb39e93b276dc2380632cd6d" args="(kim_options_t io_options, kim_boolean_t in_forwardable)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_forwardable           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_forwardable</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set whether or not to request a forwardable credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_forwardable</em>&nbsp;</td><td>a boolean value indicating whether or not to request a forwardable credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. TRUE if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g6dc2e2ec0448d28ce847fc8880ce8561" title="Get whether or not to request a forwardable credential.">kim_options_get_forwardable()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6dc2e2ec0448d28ce847fc8880ce8561"></a><!-- doxytag: member="kim_options.h::kim_options_get_forwardable" ref="g6dc2e2ec0448d28ce847fc8880ce8561" args="(kim_options_t in_options, kim_boolean_t *out_forwardable)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_forwardable           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_forwardable</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get whether or not to request a forwardable credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_forwardable</em>&nbsp;</td><td>on exit, a boolean value indicating whether or <em>in_options</em> will request a forwardable credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. TRUE if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#gc055fb95bb39e93b276dc2380632cd6d" title="Set whether or not to request a forwardable credential.">kim_options_set_forwardable()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4ab6093bff1c28196e2886e146d5e0d0"></a><!-- doxytag: member="kim_options.h::kim_options_set_proxiable" ref="g4ab6093bff1c28196e2886e146d5e0d0" args="(kim_options_t io_options, kim_boolean_t in_proxiable)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_proxiable           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_proxiable</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set whether or not to request a proxiable credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_proxiable</em>&nbsp;</td><td>a boolean value indicating whether or not to request a proxiable credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. TRUE if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#ga36c948940f89e1cca4477b3d1869c84" title="Get whether or not to request a proxiable credential.">kim_options_get_proxiable()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga36c948940f89e1cca4477b3d1869c84"></a><!-- doxytag: member="kim_options.h::kim_options_get_proxiable" ref="ga36c948940f89e1cca4477b3d1869c84" args="(kim_options_t in_options, kim_boolean_t *out_proxiable)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_proxiable           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_proxiable</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get whether or not to request a proxiable credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_proxiable</em>&nbsp;</td><td>on exit, a boolean value indicating whether or <em>in_options</em> will request a proxiable credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. TRUE if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g4ab6093bff1c28196e2886e146d5e0d0" title="Set whether or not to request a proxiable credential.">kim_options_set_proxiable()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g673640ffd337c815cbc71cbef32b4156"></a><!-- doxytag: member="kim_options.h::kim_options_set_addressless" ref="g673640ffd337c815cbc71cbef32b4156" args="(kim_options_t io_options, kim_boolean_t in_addressless)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_addressless           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_addressless</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set whether or not to request an addressless credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_addressless</em>&nbsp;</td><td>a boolean value indicating whether or not to request an addressless credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. TRUE if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g8308f996ae22cad938ec4a4782a01322" title="Get whether or not to request an addressless credential.">kim_options_get_addressless()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8308f996ae22cad938ec4a4782a01322"></a><!-- doxytag: member="kim_options.h::kim_options_get_addressless" ref="g8308f996ae22cad938ec4a4782a01322" args="(kim_options_t in_options, kim_boolean_t *out_addressless)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_addressless           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_addressless</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get whether or not to request an addressless credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_addressless</em>&nbsp;</td><td>on exit, a boolean value indicating whether or <em>in_options</em> will request an addressless credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>Read from the user's preferences and the Kerberos configuration. TRUE if unspecified. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g673640ffd337c815cbc71cbef32b4156" title="Set whether or not to request an addressless credential.">kim_options_set_addressless()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5914bd9caf4ba781c723d152bf5ddc05"></a><!-- doxytag: member="kim_options.h::kim_options_set_service_name" ref="g5914bd9caf4ba781c723d152bf5ddc05" args="(kim_options_t io_options, kim_string_t in_service_name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_set_service_name           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_service_name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the service name to request a credential for. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>an options object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_service_name</em>&nbsp;</td><td>a service name. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>NULL, indicating "krbtgt@&lt;REALM&gt;", the ticket granting ticket (TGT) service. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#ge74278a56626df2ad5a60ed61d8a1836" title="Get the service name to request a credential for.">kim_options_get_service_name()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge74278a56626df2ad5a60ed61d8a1836"></a><!-- doxytag: member="kim_options.h::kim_options_get_service_name" ref="ge74278a56626df2ad5a60ed61d8a1836" args="(kim_options_t in_options, kim_string_t *out_service_name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_options_get_service_name           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_service_name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the service name to request a credential for. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_service_name</em>&nbsp;</td><td>on exit, the service name specified in <em>in_options</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="user" compact><dt><b>Default value</b></dt><dd>NULL, indicating "krbtgt@&lt;REALM&gt;", the ticket granting ticket (TGT) service. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__options__reference.html#g5914bd9caf4ba781c723d152bf5ddc05" title="Set the service name to request a credential for.">kim_options_set_service_name()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g06130689189d5ba4f9e518c8ed68eb7d"></a><!-- doxytag: member="kim_options.h::kim_options_free" ref="g06130689189d5ba4f9e518c8ed68eb7d" args="(kim_options_t *io_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_options_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with an options object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_options</em>&nbsp;</td><td>the options object to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__preferences__reference.html b/doc/kim/html/group__kim__preferences__reference.html
new file mode 100644 (file)
index 0000000..27db8f4
--- /dev/null
@@ -0,0 +1,863 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Preferences Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM Preferences Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g88fba2fb35d73c5905eb21dcfad57578">kim_preferences_create</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> *out_preferences)
+<dl class="el"><dd class="mdescRight">Create a new preferences object from the current user's preferences.  <a href="#g88fba2fb35d73c5905eb21dcfad57578"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g6075365366f37db89090cc68ad2e5a61">kim_preferences_copy</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> *out_preferences, <a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences)
+<dl class="el"><dd class="mdescRight">Copy a preferences object.  <a href="#g6075365366f37db89090cc68ad2e5a61"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#ge7f0f13dd6d50e7730205abddb1a0127">kim_preferences_set_options</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> io_preferences, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Set the user's preferred options.  <a href="#ge7f0f13dd6d50e7730205abddb1a0127"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g634a03cb1109362db8e4024b055afa71">kim_preferences_get_options</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *out_options)
+<dl class="el"><dd class="mdescRight">Get the user's preferred options.  <a href="#g634a03cb1109362db8e4024b055afa71"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g7e2031a5a8ef5590357b304eb943f402">kim_preferences_set_remember_options</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> io_preferences, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> in_remember_options)
+<dl class="el"><dd class="mdescRight">Set whether or not to remember the last options the user used to acquire a credential.  <a href="#g7e2031a5a8ef5590357b304eb943f402"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g804eb8078e5b5a1c73e7e27b0efdb66d">kim_preferences_get_remember_options</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *out_remember_options)
+<dl class="el"><dd class="mdescRight">Get whether or not to remember the last options the user used to acquire a credential.  <a href="#g804eb8078e5b5a1c73e7e27b0efdb66d"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g70806a8dfdde27746f8c161b4f845ecb">kim_preferences_set_client_identity</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> io_preferences, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_client_identity)
+<dl class="el"><dd class="mdescRight">Set the user's preferred client identity.  <a href="#g70806a8dfdde27746f8c161b4f845ecb"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#ga7bf4c87813bee177d2485d827c59943">kim_preferences_get_client_identity</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_client_identity)
+<dl class="el"><dd class="mdescRight">Get the user's preferred client identity.  <a href="#ga7bf4c87813bee177d2485d827c59943"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#ge8d68790339f8f11f1e017726101329a">kim_preferences_set_remember_client_identity</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> io_preferences, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> in_remember_client_identity)
+<dl class="el"><dd class="mdescRight">Set whether or not to remember the last client identity the user acquired a credential for.  <a href="#ge8d68790339f8f11f1e017726101329a"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#gd24a4831e3664ae2ec69b2de2ccfca50">kim_preferences_get_remember_client_identity</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *out_remember_client_identity)
+<dl class="el"><dd class="mdescRight">Get whether or not to remember the last client identity the user acquired a credential for.  <a href="#gd24a4831e3664ae2ec69b2de2ccfca50"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g2bf9498e3bf1be235871e1e7a333efe3">kim_preferences_set_minimum_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> io_preferences, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> in_minimum_lifetime)
+<dl class="el"><dd class="mdescRight">Set the minimum credential lifetime for GUI credential lifetime controls.  <a href="#g2bf9498e3bf1be235871e1e7a333efe3"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g15f14854da23043706e21c6632cc2ccf">kim_preferences_get_minimum_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *out_minimum_lifetime)
+<dl class="el"><dd class="mdescRight">Get the minimum credential lifetime for GUI credential lifetime controls.  <a href="#g15f14854da23043706e21c6632cc2ccf"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g720dc58fe13d7c80ced5c618c7551923">kim_preferences_set_maximum_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> io_preferences, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> in_maximum_lifetime)
+<dl class="el"><dd class="mdescRight">Set the maximum credential lifetime for GUI credential lifetime controls.  <a href="#g720dc58fe13d7c80ced5c618c7551923"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g00db50426fd382af2c161898465830b2">kim_preferences_get_maximum_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *out_maximum_lifetime)
+<dl class="el"><dd class="mdescRight">Get the maximum credential lifetime for GUI credential lifetime controls.  <a href="#g00db50426fd382af2c161898465830b2"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g2aad1731737f04c0a0fd0d9e0864420e">kim_preferences_set_minimum_renewal_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> io_preferences, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> in_minimum_renewal_lifetime)
+<dl class="el"><dd class="mdescRight">Set the minimum credential renewal lifetime for GUI credential lifetime controls.  <a href="#g2aad1731737f04c0a0fd0d9e0864420e"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g8c470e1f7a090e76a111f728a510e6fa">kim_preferences_get_minimum_renewal_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *out_minimum_renewal_lifetime)
+<dl class="el"><dd class="mdescRight">Get the minimum credential renewal lifetime for GUI credential lifetime controls.  <a href="#g8c470e1f7a090e76a111f728a510e6fa"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g82d7aba77fed12eba63172a43eed8a06">kim_preferences_set_maximum_renewal_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> io_preferences, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> in_maximum_renewal_lifetime)
+<dl class="el"><dd class="mdescRight">Set the maximum credential renewal lifetime for GUI credential lifetime controls.  <a href="#g82d7aba77fed12eba63172a43eed8a06"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g9ae6e44298b639894e21a57eef26d93b">kim_preferences_get_maximum_renewal_lifetime</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences, <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *out_maximum_renewal_lifetime)
+<dl class="el"><dd class="mdescRight">Get the maximum credential renewal lifetime for GUI credential lifetime controls.  <a href="#g9ae6e44298b639894e21a57eef26d93b"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g2c0ee43f07affdeeec76624777e662d7">kim_preferences_set_favorite_identities</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> io_preferences, <a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> in_favorite_identities)
+<dl class="el"><dd class="mdescRight">Set the user's preferred list of identities.  <a href="#g2c0ee43f07affdeeec76624777e662d7"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#g4ce6a3e2d6b92eb335e7110bf43ef1ab">kim_preferences_get_favorite_identities</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences, <a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> *out_favorite_identities)
+<dl class="el"><dd class="mdescRight">Get the user's preferred list of identities.  <a href="#g4ce6a3e2d6b92eb335e7110bf43ef1ab"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__preferences__reference.html#gd4548bdc2cd52ad21d7a3e1bb60edba0">kim_preferences_synchronize</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> in_preferences)
+<dl class="el"><dd class="mdescRight">Synchronize a preferences object with the user's preferences, writing pending changes and reading any changes applied by other processes.  <a href="#gd4548bdc2cd52ad21d7a3e1bb60edba0"></a><br></dl><li>void <a class="el" href="group__kim__preferences__reference.html#g4ecf102531d917a0776f563101b8056e">kim_preferences_free</a> (<a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> *io_preferences)
+<dl class="el"><dd class="mdescRight">Free memory associated with a preferences object.  <a href="#g4ecf102531d917a0776f563101b8056e"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g88fba2fb35d73c5905eb21dcfad57578"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_create" ref="g88fba2fb35d73c5905eb21dcfad57578" args="(kim_preferences_t *out_preferences)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_create           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_preferences</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new preferences object from the current user's preferences. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_preferences</em>&nbsp;</td><td>on exit, a new preferences object. Must be freed with <a class="el" href="group__kim__preferences__reference.html#g4ecf102531d917a0776f563101b8056e" title="Free memory associated with a preferences object.">kim_preferences_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6075365366f37db89090cc68ad2e5a61"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_copy" ref="g6075365366f37db89090cc68ad2e5a61" args="(kim_preferences_t *out_preferences, kim_preferences_t in_preferences)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a preferences object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_preferences</em>&nbsp;</td><td>on exit, a new preferences object which is a copy of in_preferences. Must be freed with <a class="el" href="group__kim__preferences__reference.html#g4ecf102531d917a0776f563101b8056e" title="Free memory associated with a preferences object.">kim_preferences_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge7f0f13dd6d50e7730205abddb1a0127"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_set_options" ref="ge7f0f13dd6d50e7730205abddb1a0127" args="(kim_preferences_t io_preferences, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_set_options           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the user's preferred options. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_preferences</em>&nbsp;</td><td>a preferences object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>an options object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g634a03cb1109362db8e4024b055afa71" title="Get the user&#39;s preferred options.">kim_preferences_get_options()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g634a03cb1109362db8e4024b055afa71"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_get_options" ref="g634a03cb1109362db8e4024b055afa71" args="(kim_preferences_t in_preferences, kim_options_t *out_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_get_options           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the user's preferred options. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_options</em>&nbsp;</td><td>on exit, the options specified in <em>in_preferences</em>. Must be freed with <a class="el" href="group__kim__options__reference.html#g06130689189d5ba4f9e518c8ed68eb7d" title="Free memory associated with an options object.">kim_options_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#ge7f0f13dd6d50e7730205abddb1a0127" title="Set the user&#39;s preferred options.">kim_preferences_set_options()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7e2031a5a8ef5590357b304eb943f402"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_set_remember_options" ref="g7e2031a5a8ef5590357b304eb943f402" args="(kim_preferences_t io_preferences, kim_boolean_t in_remember_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_set_remember_options           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_remember_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set whether or not to remember the last options the user used to acquire a credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_preferences</em>&nbsp;</td><td>a preferences object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_remember_options</em>&nbsp;</td><td>a boolean value indicating whether or not to remember the last options used to acquire a credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g804eb8078e5b5a1c73e7e27b0efdb66d" title="Get whether or not to remember the last options the user used to acquire a credential...">kim_preferences_get_remember_options()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g804eb8078e5b5a1c73e7e27b0efdb66d"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_get_remember_options" ref="g804eb8078e5b5a1c73e7e27b0efdb66d" args="(kim_preferences_t in_preferences, kim_boolean_t *out_remember_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_get_remember_options           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_remember_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get whether or not to remember the last options the user used to acquire a credential. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_remember_options</em>&nbsp;</td><td>on exit, a boolean value indicating whether or <em>in_preferences</em> will remember the last options used to acquire a credential. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g7e2031a5a8ef5590357b304eb943f402" title="Set whether or not to remember the last options the user used to acquire a credential...">kim_preferences_set_remember_options()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g70806a8dfdde27746f8c161b4f845ecb"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_set_client_identity" ref="g70806a8dfdde27746f8c161b4f845ecb" args="(kim_preferences_t io_preferences, kim_identity_t in_client_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_set_client_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_client_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the user's preferred client identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_preferences</em>&nbsp;</td><td>a preferences object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_client_identity</em>&nbsp;</td><td>a client identity object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#ga7bf4c87813bee177d2485d827c59943" title="Get the user&#39;s preferred client identity.">kim_preferences_get_client_identity()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga7bf4c87813bee177d2485d827c59943"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_get_client_identity" ref="ga7bf4c87813bee177d2485d827c59943" args="(kim_preferences_t in_preferences, kim_identity_t *out_client_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_get_client_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_client_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the user's preferred client identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_client_identity</em>&nbsp;</td><td>on exit, the client identity specified in <em>in_preferences</em>. Must be freed with <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23" title="Free memory associated with an identity.">kim_identity_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g70806a8dfdde27746f8c161b4f845ecb" title="Set the user&#39;s preferred client identity.">kim_preferences_set_client_identity()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge8d68790339f8f11f1e017726101329a"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_set_remember_client_identity" ref="ge8d68790339f8f11f1e017726101329a" args="(kim_preferences_t io_preferences, kim_boolean_t in_remember_client_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_set_remember_client_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_remember_client_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set whether or not to remember the last client identity the user acquired a credential for. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_preferences</em>&nbsp;</td><td>a preferences object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_remember_client_identity</em>&nbsp;</td><td>a boolean value indicating whether or not to remember the last client identity for which a credential was acquired. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#gd24a4831e3664ae2ec69b2de2ccfca50" title="Get whether or not to remember the last client identity the user acquired a credential...">kim_preferences_get_remember_client_identity()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd24a4831e3664ae2ec69b2de2ccfca50"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_get_remember_client_identity" ref="gd24a4831e3664ae2ec69b2de2ccfca50" args="(kim_preferences_t in_preferences, kim_boolean_t *out_remember_client_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_get_remember_client_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_remember_client_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get whether or not to remember the last client identity the user acquired a credential for. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_remember_client_identity</em>&nbsp;</td><td>on exit, a boolean value indicating whether or <em>in_preferences</em> will remember the last client identity for which a credential was acquired. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#ge8d68790339f8f11f1e017726101329a" title="Set whether or not to remember the last client identity the user acquired a credential...">kim_preferences_set_remember_client_identity()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2bf9498e3bf1be235871e1e7a333efe3"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_set_minimum_lifetime" ref="g2bf9498e3bf1be235871e1e7a333efe3" args="(kim_preferences_t io_preferences, kim_lifetime_t in_minimum_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_set_minimum_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_minimum_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the minimum credential lifetime for GUI credential lifetime controls. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_preferences</em>&nbsp;</td><td>a preferences object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_minimum_lifetime</em>&nbsp;</td><td>a minimum lifetime indicating how small a lifetime the GUI tools should allow the user to specify for credentials. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g15f14854da23043706e21c6632cc2ccf" title="Get the minimum credential lifetime for GUI credential lifetime controls.">kim_preferences_get_minimum_lifetime()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g15f14854da23043706e21c6632cc2ccf"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_get_minimum_lifetime" ref="g15f14854da23043706e21c6632cc2ccf" args="(kim_preferences_t in_preferences, kim_lifetime_t *out_minimum_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_get_minimum_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_minimum_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the minimum credential lifetime for GUI credential lifetime controls. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_minimum_lifetime</em>&nbsp;</td><td>on exit, the minimum lifetime that GUI tools will allow the user to specify for credentials. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g2bf9498e3bf1be235871e1e7a333efe3" title="Set the minimum credential lifetime for GUI credential lifetime controls.">kim_preferences_set_minimum_lifetime()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g720dc58fe13d7c80ced5c618c7551923"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_set_maximum_lifetime" ref="g720dc58fe13d7c80ced5c618c7551923" args="(kim_preferences_t io_preferences, kim_lifetime_t in_maximum_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_set_maximum_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_maximum_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the maximum credential lifetime for GUI credential lifetime controls. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_preferences</em>&nbsp;</td><td>a preferences object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_maximum_lifetime</em>&nbsp;</td><td>a maximum lifetime indicating how large a lifetime the GUI tools should allow the user to specify for credentials. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g00db50426fd382af2c161898465830b2" title="Get the maximum credential lifetime for GUI credential lifetime controls.">kim_preferences_get_maximum_lifetime()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g00db50426fd382af2c161898465830b2"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_get_maximum_lifetime" ref="g00db50426fd382af2c161898465830b2" args="(kim_preferences_t in_preferences, kim_lifetime_t *out_maximum_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_get_maximum_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_maximum_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the maximum credential lifetime for GUI credential lifetime controls. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_maximum_lifetime</em>&nbsp;</td><td>on exit, the maximum lifetime that GUI tools will allow the user to specify for credentials. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g720dc58fe13d7c80ced5c618c7551923" title="Set the maximum credential lifetime for GUI credential lifetime controls.">kim_preferences_set_maximum_lifetime()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2aad1731737f04c0a0fd0d9e0864420e"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_set_minimum_renewal_lifetime" ref="g2aad1731737f04c0a0fd0d9e0864420e" args="(kim_preferences_t io_preferences, kim_lifetime_t in_minimum_renewal_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_set_minimum_renewal_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_minimum_renewal_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the minimum credential renewal lifetime for GUI credential lifetime controls. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_preferences</em>&nbsp;</td><td>a preferences object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_minimum_renewal_lifetime</em>&nbsp;</td><td>a minimum lifetime indicating how small a lifetime the GUI tools should allow the user to specify for credential renewal. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g8c470e1f7a090e76a111f728a510e6fa" title="Get the minimum credential renewal lifetime for GUI credential lifetime controls...">kim_preferences_get_minimum_renewal_lifetime()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8c470e1f7a090e76a111f728a510e6fa"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_get_minimum_renewal_lifetime" ref="g8c470e1f7a090e76a111f728a510e6fa" args="(kim_preferences_t in_preferences, kim_lifetime_t *out_minimum_renewal_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_get_minimum_renewal_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_minimum_renewal_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the minimum credential renewal lifetime for GUI credential lifetime controls. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_minimum_renewal_lifetime</em>&nbsp;</td><td>on exit, the minimum lifetime that GUI tools will allow the user to specify for credential renewal. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g2aad1731737f04c0a0fd0d9e0864420e" title="Set the minimum credential renewal lifetime for GUI credential lifetime controls...">kim_preferences_set_minimum_renewal_lifetime()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g82d7aba77fed12eba63172a43eed8a06"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_set_maximum_renewal_lifetime" ref="g82d7aba77fed12eba63172a43eed8a06" args="(kim_preferences_t io_preferences, kim_lifetime_t in_maximum_renewal_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_set_maximum_renewal_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_maximum_renewal_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the maximum credential renewal lifetime for GUI credential lifetime controls. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_preferences</em>&nbsp;</td><td>a preferences object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_maximum_renewal_lifetime</em>&nbsp;</td><td>a maximum lifetime indicating how large a lifetime the GUI tools should allow the user to specify for credential renewal. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g8c470e1f7a090e76a111f728a510e6fa" title="Get the minimum credential renewal lifetime for GUI credential lifetime controls...">kim_preferences_get_minimum_renewal_lifetime()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9ae6e44298b639894e21a57eef26d93b"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_get_maximum_renewal_lifetime" ref="g9ae6e44298b639894e21a57eef26d93b" args="(kim_preferences_t in_preferences, kim_lifetime_t *out_maximum_renewal_lifetime)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_get_maximum_renewal_lifetime           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_maximum_renewal_lifetime</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the maximum credential renewal lifetime for GUI credential lifetime controls. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_maximum_renewal_lifetime</em>&nbsp;</td><td>on exit, the maximum lifetime that GUI tools will allow the user to specify for credential renewal. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g2aad1731737f04c0a0fd0d9e0864420e" title="Set the minimum credential renewal lifetime for GUI credential lifetime controls...">kim_preferences_set_minimum_renewal_lifetime()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2c0ee43f07affdeeec76624777e662d7"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_set_favorite_identities" ref="g2c0ee43f07affdeeec76624777e662d7" args="(kim_preferences_t io_preferences, kim_favorite_identities_t in_favorite_identities)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_set_favorite_identities           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_favorite_identities</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the user's preferred list of identities. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_preferences</em>&nbsp;</td><td>a preferences object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_favorite_identities</em>&nbsp;</td><td>a favorite identities object. See <a class="el" href="kim_favorite_identities_overview.html">KIM Favorite Identities Overview</a> for more information on KIM Favorite Identities. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g4ce6a3e2d6b92eb335e7110bf43ef1ab" title="Get the user&#39;s preferred list of identities.">kim_preferences_get_favorite_identities()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4ce6a3e2d6b92eb335e7110bf43ef1ab"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_get_favorite_identities" ref="g4ce6a3e2d6b92eb335e7110bf43ef1ab" args="(kim_preferences_t in_preferences, kim_favorite_identities_t *out_favorite_identities)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_get_favorite_identities           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_favorite_identities</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the user's preferred list of identities. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_favorite_identities</em>&nbsp;</td><td>on exit, a copy of the favorite identities specified in <em>in_preferences</em>. See <a class="el" href="kim_favorite_identities_overview.html">KIM Favorite Identities Overview</a> for more information on KIM Favorite Identities. Must be freed with <a class="el" href="group__kim__favorite__identities__reference.html#gd4f899dee1067c58f349c6474300c533" title="Free memory associated with an identities list.">kim_favorite_identities_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__preferences__reference.html#g2c0ee43f07affdeeec76624777e662d7" title="Set the user&#39;s preferred list of identities.">kim_preferences_set_favorite_identities()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd4548bdc2cd52ad21d7a3e1bb60edba0"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_synchronize" ref="gd4548bdc2cd52ad21d7a3e1bb60edba0" args="(kim_preferences_t in_preferences)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_preferences_synchronize           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_preferences</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Synchronize a preferences object with the user's preferences, writing pending changes and reading any changes applied by other processes. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_preferences</em>&nbsp;</td><td>a preferences object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4ecf102531d917a0776f563101b8056e"></a><!-- doxytag: member="kim_preferences.h::kim_preferences_free" ref="g4ecf102531d917a0776f563101b8056e" args="(kim_preferences_t *io_preferences)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_preferences_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_preferences</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with a preferences object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_preferences</em>&nbsp;</td><td>the preferences object to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:20 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__selection__hints__reference.html b/doc/kim/html/group__kim__selection__hints__reference.html
new file mode 100644 (file)
index 0000000..85d5c15
--- /dev/null
@@ -0,0 +1,1118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Selection Hints Reference Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM Selection Hints Reference Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g0b195d5d3baddbb484e4567f395925ea">kim_selection_hints_create</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> *out_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_application_identifier)
+<dl class="el"><dd class="mdescRight">Create a new selection hints object.  <a href="#g0b195d5d3baddbb484e4567f395925ea"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g3c34975ee97977570750ba4119d34596">kim_selection_hints_copy</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> *out_selection_hints, <a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints)
+<dl class="el"><dd class="mdescRight">Copy a selection hints object.  <a href="#g3c34975ee97977570750ba4119d34596"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#gf47d0fc0c2839b591f7a2d293b855b71">kim_selection_hints_set_service_identity_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> io_selection_hints, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_service_identity)
+<dl class="el"><dd class="mdescRight">Set the preferred service identity.  <a href="#gf47d0fc0c2839b591f7a2d293b855b71"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g5e325333676f018a0307ea17d4dd8ce3">kim_selection_hints_get_service_identity_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_service_identity)
+<dl class="el"><dd class="mdescRight">Get the preferred service identity.  <a href="#g5e325333676f018a0307ea17d4dd8ce3"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g2ec700fa0ad48325aa13ddbb364ed77a">kim_selection_hints_set_client_realm_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> io_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_client_realm)
+<dl class="el"><dd class="mdescRight">Set the preferred client realm.  <a href="#g2ec700fa0ad48325aa13ddbb364ed77a"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#gd1160cac39595eb42910243d04b7671d">kim_selection_hints_get_client_realm_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_client_realm)
+<dl class="el"><dd class="mdescRight">Get the preferred client realm.  <a href="#gd1160cac39595eb42910243d04b7671d"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#gde9c9783d58df11d82357a92528e6c93">kim_selection_hints_set_user_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> io_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_user)
+<dl class="el"><dd class="mdescRight">Set the preferred user name.  <a href="#gde9c9783d58df11d82357a92528e6c93"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g075d83c9ad061c4ac1e14ae62b4ee861">kim_selection_hints_get_user_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_user)
+<dl class="el"><dd class="mdescRight">Get the preferred user name.  <a href="#g075d83c9ad061c4ac1e14ae62b4ee861"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g542c7209995052067bdbaeafacef3040">kim_selection_hints_set_service_realm_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> io_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_service_realm)
+<dl class="el"><dd class="mdescRight">Set the preferred service realm.  <a href="#g542c7209995052067bdbaeafacef3040"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g7a505335f3f8252272852e1d2dc2f993">kim_selection_hints_get_service_realm_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> io_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_service_realm)
+<dl class="el"><dd class="mdescRight">Get the preferred service realm.  <a href="#g7a505335f3f8252272852e1d2dc2f993"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#gca90aa48104604534b4a9381b9dc2b66">kim_selection_hints_set_service_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> io_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_service)
+<dl class="el"><dd class="mdescRight">Set the preferred service name.  <a href="#gca90aa48104604534b4a9381b9dc2b66"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g5a962a3a53751cd28d73cd024d50bcb5">kim_selection_hints_get_service_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_service)
+<dl class="el"><dd class="mdescRight">Get the preferred service name.  <a href="#g5a962a3a53751cd28d73cd024d50bcb5"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g63db6ce28b437e5293e37a67d652abde">kim_selection_hints_set_server_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> io_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_server)
+<dl class="el"><dd class="mdescRight">Set the preferred server host name.  <a href="#g63db6ce28b437e5293e37a67d652abde"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#ga1b90972456ac24454df3c569a6b8d70">kim_selection_hints_get_server_hint</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_server)
+<dl class="el"><dd class="mdescRight">Get the preferred server host name.  <a href="#ga1b90972456ac24454df3c569a6b8d70"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g9904e1b83a1082fbb0752853b3c6ece0">kim_selection_hints_set_application_name</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> io_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_application_name)
+<dl class="el"><dd class="mdescRight">Set the application name for use in user interaction.  <a href="#g9904e1b83a1082fbb0752853b3c6ece0"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#ge254849dd3bf81a295e1e9054220002b">kim_selection_hints_get_application_name</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_application_name)
+<dl class="el"><dd class="mdescRight">Get the application name for use in user interaction.  <a href="#ge254849dd3bf81a295e1e9054220002b"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#gdde1a442f7ab9913eed7855f06575f92">kim_selection_hints_set_explanation</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> io_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_explanation)
+<dl class="el"><dd class="mdescRight">Set the strings used to prompt the user to select the identity.  <a href="#gdde1a442f7ab9913eed7855f06575f92"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#gca2b7379231b656f6ee2df551bb7972e">kim_selection_hints_get_explanation</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_explanation)
+<dl class="el"><dd class="mdescRight">Get the strings used to prompt the user to select the identity.  <a href="#gca2b7379231b656f6ee2df551bb7972e"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#gae79cd94d2184c8ffe4c7144205fd813">kim_selection_hints_set_options</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> io_selection_hints, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> in_options)
+<dl class="el"><dd class="mdescRight">Set the options which will be used if credentials need to be acquired.  <a href="#gae79cd94d2184c8ffe4c7144205fd813"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#ge00f6f57e9d24d2e62694d72d43148a4">kim_selection_hints_get_options</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *out_options)
+<dl class="el"><dd class="mdescRight">Get the options which will be used if credentials need to be acquired.  <a href="#ge00f6f57e9d24d2e62694d72d43148a4"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g8a4f9300250b27fec9b0da4b52f0a781">kim_selection_hints_set_allow_user_interaction</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> in_allow_user_interaction)
+<dl class="el"><dd class="mdescRight">Set whether or not KIM may interact with the user to select an identity.  <a href="#g8a4f9300250b27fec9b0da4b52f0a781"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g255a01cf3f1e31390b213a802f8b27b4">kim_selection_hints_get_allow_user_interaction</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *out_allow_user_interaction)
+<dl class="el"><dd class="mdescRight">Get whether or not KIM may interact with the user to select an identity.  <a href="#g255a01cf3f1e31390b213a802f8b27b4"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#gd5cf3d5ca0c2d902dbecd07d145631d8">kim_selection_hints_set_remember_identity</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> in_remember_identity)
+<dl class="el"><dd class="mdescRight">Set whether or not KIM will use cached mappings for this selection hints object.  <a href="#gd5cf3d5ca0c2d902dbecd07d145631d8"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#gd48667d06fc020680d8def99100dcdc5">kim_selection_hints_get_remember_identity</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *out_remember_identity)
+<dl class="el"><dd class="mdescRight">Get whether or not KIM will use cache mappings for this selection hints object.  <a href="#gd48667d06fc020680d8def99100dcdc5"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d">kim_selection_hints_get_identity</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *out_identity)
+<dl class="el"><dd class="mdescRight">Choose a client identity based on selection hints.  <a href="#g4c18a97d53150f0b3536e52ab884973d"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#ga35356161afa853700734a73ad9e027b">kim_selection_hints_remember_identity</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints, <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> in_identity)
+<dl class="el"><dd class="mdescRight">Add an entry for the selection hints to the selection hints cache, replacing any existing entry.  <a href="#ga35356161afa853700734a73ad9e027b"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__selection__hints__reference.html#g4550fb53331ba7424853bde07834aa76">kim_selection_hints_forget_identity</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> in_selection_hints)
+<dl class="el"><dd class="mdescRight">Remove an entry for the selection hints from the selection hints cache.  <a href="#g4550fb53331ba7424853bde07834aa76"></a><br></dl><li>void <a class="el" href="group__kim__selection__hints__reference.html#g8221dcbf6d972150252707a8d52ad5e5">kim_selection_hints_free</a> (<a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> *io_selection_hints)
+<dl class="el"><dd class="mdescRight">Free memory associated with a selection hints object.  <a href="#g8221dcbf6d972150252707a8d52ad5e5"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g0b195d5d3baddbb484e4567f395925ea"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_create" ref="g0b195d5d3baddbb484e4567f395925ea" args="(kim_selection_hints_t *out_selection_hints, kim_string_t in_application_identifier)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_create           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_application_identifier</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new selection hints object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_selection_hints</em>&nbsp;</td><td>on exit, a new selection hints object. Must be freed with <a class="el" href="group__kim__selection__hints__reference.html#g8221dcbf6d972150252707a8d52ad5e5" title="Free memory associated with a selection hints object.">kim_selection_hints_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_application_identifier</em>&nbsp;</td><td>an application identifier string. Java-style identifiers are recommended to avoid cache entry collisions (eg: "com.example.MyApplication") </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3c34975ee97977570750ba4119d34596"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_copy" ref="g3c34975ee97977570750ba4119d34596" args="(kim_selection_hints_t *out_selection_hints, kim_selection_hints_t in_selection_hints)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a selection hints object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_selection_hints</em>&nbsp;</td><td>on exit, a new selection hints object which is a copy of in_selection_hints. Must be freed with <a class="el" href="group__kim__selection__hints__reference.html#g8221dcbf6d972150252707a8d52ad5e5" title="Free memory associated with a selection hints object.">kim_selection_hints_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf47d0fc0c2839b591f7a2d293b855b71"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_service_identity_hint" ref="gf47d0fc0c2839b591f7a2d293b855b71" args="(kim_selection_hints_t io_selection_hints, kim_identity_t in_service_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_service_identity_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_service_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the preferred service identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>a selection hints object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_service_identity</em>&nbsp;</td><td>a service identity. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g5e325333676f018a0307ea17d4dd8ce3" title="Get the preferred service identity.">kim_selection_hints_get_service_identity_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5e325333676f018a0307ea17d4dd8ce3"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_service_identity_hint" ref="g5e325333676f018a0307ea17d4dd8ce3" args="(kim_selection_hints_t in_selection_hints, kim_identity_t *out_service_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_service_identity_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_service_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the preferred service identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_service_identity</em>&nbsp;</td><td>on exit, the service identity specified in <em>in_selection_hints</em>. Must be freed with <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23" title="Free memory associated with an identity.">kim_identity_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#gf47d0fc0c2839b591f7a2d293b855b71" title="Set the preferred service identity.">kim_selection_hints_set_service_identity_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2ec700fa0ad48325aa13ddbb364ed77a"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_client_realm_hint" ref="g2ec700fa0ad48325aa13ddbb364ed77a" args="(kim_selection_hints_t io_selection_hints, kim_string_t in_client_realm)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_client_realm_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_client_realm</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the preferred client realm. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>a selection hints object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_client_realm</em>&nbsp;</td><td>a client realm string. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#gd1160cac39595eb42910243d04b7671d" title="Get the preferred client realm.">kim_selection_hints_get_client_realm_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd1160cac39595eb42910243d04b7671d"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_client_realm_hint" ref="gd1160cac39595eb42910243d04b7671d" args="(kim_selection_hints_t in_selection_hints, kim_string_t *out_client_realm)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_client_realm_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_client_realm</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the preferred client realm. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_client_realm</em>&nbsp;</td><td>on exit, the client realm string specified in <em>in_selection_hints</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g2ec700fa0ad48325aa13ddbb364ed77a" title="Set the preferred client realm.">kim_selection_hints_set_client_realm_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gde9c9783d58df11d82357a92528e6c93"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_user_hint" ref="gde9c9783d58df11d82357a92528e6c93" args="(kim_selection_hints_t io_selection_hints, kim_string_t in_user)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_user_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_user</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the preferred user name. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>a selection hints object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_user</em>&nbsp;</td><td>a user name string. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g075d83c9ad061c4ac1e14ae62b4ee861" title="Get the preferred user name.">kim_selection_hints_get_user_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g075d83c9ad061c4ac1e14ae62b4ee861"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_user_hint" ref="g075d83c9ad061c4ac1e14ae62b4ee861" args="(kim_selection_hints_t in_selection_hints, kim_string_t *out_user)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_user_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_user</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the preferred user name. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_user</em>&nbsp;</td><td>on exit, the user name string specified in <em>in_selection_hints</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#gde9c9783d58df11d82357a92528e6c93" title="Set the preferred user name.">kim_selection_hints_set_user_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g542c7209995052067bdbaeafacef3040"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_service_realm_hint" ref="g542c7209995052067bdbaeafacef3040" args="(kim_selection_hints_t io_selection_hints, kim_string_t in_service_realm)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_service_realm_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_service_realm</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the preferred service realm. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>a selection hints object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_service_realm</em>&nbsp;</td><td>a service realm string. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g7a505335f3f8252272852e1d2dc2f993" title="Get the preferred service realm.">kim_selection_hints_get_service_realm_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7a505335f3f8252272852e1d2dc2f993"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_service_realm_hint" ref="g7a505335f3f8252272852e1d2dc2f993" args="(kim_selection_hints_t io_selection_hints, kim_string_t *out_service_realm)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_service_realm_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_service_realm</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the preferred service realm. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>a selection hints object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_service_realm</em>&nbsp;</td><td>on exit, the service realm string specified in <em>in_selection_hints</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g542c7209995052067bdbaeafacef3040" title="Set the preferred service realm.">kim_selection_hints_set_service_realm_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gca90aa48104604534b4a9381b9dc2b66"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_service_hint" ref="gca90aa48104604534b4a9381b9dc2b66" args="(kim_selection_hints_t io_selection_hints, kim_string_t in_service)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_service_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_service</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the preferred service name. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>a selection hints object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_service</em>&nbsp;</td><td>a service name string. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g5a962a3a53751cd28d73cd024d50bcb5" title="Get the preferred service name.">kim_selection_hints_get_service_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5a962a3a53751cd28d73cd024d50bcb5"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_service_hint" ref="g5a962a3a53751cd28d73cd024d50bcb5" args="(kim_selection_hints_t in_selection_hints, kim_string_t *out_service)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_service_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_service</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the preferred service name. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_service</em>&nbsp;</td><td>on exit, the service name string specified in <em>in_selection_hints</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#gca90aa48104604534b4a9381b9dc2b66" title="Set the preferred service name.">kim_selection_hints_set_service_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g63db6ce28b437e5293e37a67d652abde"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_server_hint" ref="g63db6ce28b437e5293e37a67d652abde" args="(kim_selection_hints_t io_selection_hints, kim_string_t in_server)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_server_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_server</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the preferred server host name. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>a selection hints object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_server</em>&nbsp;</td><td>a server host name string. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#ga1b90972456ac24454df3c569a6b8d70" title="Get the preferred server host name.">kim_selection_hints_get_server_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga1b90972456ac24454df3c569a6b8d70"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_server_hint" ref="ga1b90972456ac24454df3c569a6b8d70" args="(kim_selection_hints_t in_selection_hints, kim_string_t *out_server)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_server_hint           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_server</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the preferred server host name. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_server</em>&nbsp;</td><td>on exit, the server host name string specified in <em>in_selection_hints</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g63db6ce28b437e5293e37a67d652abde" title="Set the preferred server host name.">kim_selection_hints_set_server_hint()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9904e1b83a1082fbb0752853b3c6ece0"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_application_name" ref="g9904e1b83a1082fbb0752853b3c6ece0" args="(kim_selection_hints_t io_selection_hints, kim_string_t in_application_name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_application_name           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_application_name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the application name for use in user interaction. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>a selection hints object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_application_name</em>&nbsp;</td><td>a localized string containing the full name of the application. </td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>If you do not call this function KIM will attempt to determine the application name at runtime. If that fails (the functionality is only available on some platforms) then KIM will use the application identity string. </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#ge254849dd3bf81a295e1e9054220002b" title="Get the application name for use in user interaction.">kim_selection_hints_get_application_name()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge254849dd3bf81a295e1e9054220002b"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_application_name" ref="ge254849dd3bf81a295e1e9054220002b" args="(kim_selection_hints_t in_selection_hints, kim_string_t *out_application_name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_application_name           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_application_name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the application name for use in user interaction. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_application_name</em>&nbsp;</td><td>on exit, the localized full name of the application specified in <em>in_selection_hints</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g9904e1b83a1082fbb0752853b3c6ece0" title="Set the application name for use in user interaction.">kim_selection_hints_set_application_name()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdde1a442f7ab9913eed7855f06575f92"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_explanation" ref="gdde1a442f7ab9913eed7855f06575f92" args="(kim_selection_hints_t io_selection_hints, kim_string_t in_explanation)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_explanation           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_explanation</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the strings used to prompt the user to select the identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>a selection hints object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_explanation</em>&nbsp;</td><td>a localized string describing why the caller needs the identity. </td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>If the application only does one thing (the reason it needs an identity is obvious) then you may not need to call this function. You may still need to call <a class="el" href="group__kim__selection__hints__reference.html#g9904e1b83a1082fbb0752853b3c6ece0" title="Set the application name for use in user interaction.">kim_selection_hints_set_application_name()</a> </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#gca2b7379231b656f6ee2df551bb7972e" title="Get the strings used to prompt the user to select the identity.">kim_selection_hints_get_explanation()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gca2b7379231b656f6ee2df551bb7972e"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_explanation" ref="gca2b7379231b656f6ee2df551bb7972e" args="(kim_selection_hints_t in_selection_hints, kim_string_t *out_explanation)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_explanation           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_explanation</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the strings used to prompt the user to select the identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_explanation</em>&nbsp;</td><td>on exit, the localized string specified in <em>in_selection_hints</em> which describes why the caller needs the identity. May be NULL. If non-NULL, must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#gdde1a442f7ab9913eed7855f06575f92" title="Set the strings used to prompt the user to select the identity.">kim_selection_hints_set_explanation()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gae79cd94d2184c8ffe4c7144205fd813"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_options" ref="gae79cd94d2184c8ffe4c7144205fd813" args="(kim_selection_hints_t io_selection_hints, kim_options_t in_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_options           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the options which will be used if credentials need to be acquired. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>a selection hints object to modify. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_options</em>&nbsp;</td><td>options to control credential acquisition. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#ge00f6f57e9d24d2e62694d72d43148a4" title="Get the options which will be used if credentials need to be acquired.">kim_selection_hints_get_options()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge00f6f57e9d24d2e62694d72d43148a4"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_options" ref="ge00f6f57e9d24d2e62694d72d43148a4" args="(kim_selection_hints_t in_selection_hints, kim_options_t *out_options)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_options           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_options</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the options which will be used if credentials need to be acquired. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_options</em>&nbsp;</td><td>on exit, the options to control credential acquisition specified in <em>in_selection_hints</em>. May be KIM_OPTIONS_DEFAULT. If not, must be freed with <a class="el" href="group__kim__options__reference.html#g06130689189d5ba4f9e518c8ed68eb7d" title="Free memory associated with an options object.">kim_options_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#gae79cd94d2184c8ffe4c7144205fd813" title="Set the options which will be used if credentials need to be acquired.">kim_selection_hints_set_options()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8a4f9300250b27fec9b0da4b52f0a781"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_allow_user_interaction" ref="g8a4f9300250b27fec9b0da4b52f0a781" args="(kim_selection_hints_t in_selection_hints, kim_boolean_t in_allow_user_interaction)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_allow_user_interaction           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_allow_user_interaction</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set whether or not KIM may interact with the user to select an identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object to modify </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_allow_user_interaction</em>&nbsp;</td><td>a boolean value specifying whether or not KIM should ask the user to select an identity for <em>in_selection_hints</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This setting defaults to TRUE. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g255a01cf3f1e31390b213a802f8b27b4" title="Get whether or not KIM may interact with the user to select an identity.">kim_selection_hints_get_allow_user_interaction</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g255a01cf3f1e31390b213a802f8b27b4"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_allow_user_interaction" ref="g255a01cf3f1e31390b213a802f8b27b4" args="(kim_selection_hints_t in_selection_hints, kim_boolean_t *out_allow_user_interaction)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_allow_user_interaction           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_allow_user_interaction</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get whether or not KIM may interact with the user to select an identity. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object to modify </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_allow_user_interaction</em>&nbsp;</td><td>on exit, a boolean value specifying whether or not KIM should ask the user to select an identity for <em>in_selection_hints</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This setting defaults to TRUE. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g8a4f9300250b27fec9b0da4b52f0a781" title="Set whether or not KIM may interact with the user to select an identity.">kim_selection_hints_set_allow_user_interaction</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd5cf3d5ca0c2d902dbecd07d145631d8"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_set_remember_identity" ref="gd5cf3d5ca0c2d902dbecd07d145631d8" args="(kim_selection_hints_t in_selection_hints, kim_boolean_t in_remember_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_set_remember_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_remember_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set whether or not KIM will use cached mappings for this selection hints object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object to modify </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_remember_identity</em>&nbsp;</td><td>a boolean value specifying whether or not KIM should use a cached mapping between <em>in_selection_hints</em> and a Kerberos identity. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This setting defaults to TRUE. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#gd48667d06fc020680d8def99100dcdc5" title="Get whether or not KIM will use cache mappings for this selection hints object.">kim_selection_hints_get_remember_identity</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd48667d06fc020680d8def99100dcdc5"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_remember_identity" ref="gd48667d06fc020680d8def99100dcdc5" args="(kim_selection_hints_t in_selection_hints, kim_boolean_t *out_remember_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_remember_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_remember_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get whether or not KIM will use cache mappings for this selection hints object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>a selection hints object to modify </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_remember_identity</em>&nbsp;</td><td>on exit, a boolean value specifying whether or not KIM will use a cached mapping between <em>in_selection_hints</em> and a Kerberos identity. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This setting defaults to TRUE. </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#gd5cf3d5ca0c2d902dbecd07d145631d8" title="Set whether or not KIM will use cached mappings for this selection hints object.">kim_selection_hints_set_remember_identity</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4c18a97d53150f0b3536e52ab884973d"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_get_identity" ref="g4c18a97d53150f0b3536e52ab884973d" args="(kim_selection_hints_t in_selection_hints, kim_identity_t *out_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_get_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Choose a client identity based on selection hints. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>the selection hints to add to the cache. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_identity</em>&nbsp;</td><td>the Kerberos identity <em>in_selection_hints</em> maps to. Must be freed with <a class="el" href="group__kim__identity__reference.html#gd384198163f30b97a6a583ad871a0e23" title="Free memory associated with an identity.">kim_identity_free()</a>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd><em>out_identity</em> is the identity mapped to by the current state of <em>in_selection_hints</em>. This function may prompt the user via a GUI to choose that identity. Subsequent modifications to <em>in_selection_hints</em> will not change <em>out_identity</em>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga35356161afa853700734a73ad9e027b"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_remember_identity" ref="ga35356161afa853700734a73ad9e027b" args="(kim_selection_hints_t in_selection_hints, kim_identity_t in_identity)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_remember_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_identity</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add an entry for the selection hints to the selection hints cache, replacing any existing entry. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>the selection hints to add to the cache. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_identity</em>&nbsp;</td><td>the Kerberos identity <em>in_selection_hints</em> maps to. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4550fb53331ba7424853bde07834aa76"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_forget_identity" ref="g4550fb53331ba7424853bde07834aa76" args="(kim_selection_hints_t in_selection_hints)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_selection_hints_forget_identity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_selection_hints</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove an entry for the selection hints from the selection hints cache. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_selection_hints</em>&nbsp;</td><td>the selection hints to remove from the cache. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8221dcbf6d972150252707a8d52ad5e5"></a><!-- doxytag: member="kim_selection_hints.h::kim_selection_hints_free" ref="g8221dcbf6d972150252707a8d52ad5e5" args="(kim_selection_hints_t *io_selection_hints)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_selection_hints_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_selection_hints</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with a selection hints object. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_selection_hints</em>&nbsp;</td><td>the selection hints object to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:20 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__string__reference.html b/doc/kim/html/group__kim__string__reference.html
new file mode 100644 (file)
index 0000000..46d2251
--- /dev/null
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM String Reference Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM String Reference Documentation</h1>
+<p>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__string__reference.html#g13e652cfeb21dd616ab1bf83377a92c9">kim_string_copy</a> (<a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *out_string, const <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_string)
+<dl class="el"><dd class="mdescRight">Copy a string.  <a href="#g13e652cfeb21dd616ab1bf83377a92c9"></a><br></dl><li><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> <a class="el" href="group__kim__string__reference.html#gcb69a7203bd4d8638eb304ae4d75948f">kim_string_compare</a> (<a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_string, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_compare_to_string, <a class="el" href="group__kim__types__reference.html#g304e619e3936990905c7998f07a8800b">kim_comparison_t</a> *out_comparison)
+<dl class="el"><dd class="mdescRight">Compare two strings.  <a href="#gcb69a7203bd4d8638eb304ae4d75948f"></a><br></dl><li>void <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded">kim_string_free</a> (<a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *io_string)
+<dl class="el"><dd class="mdescRight">Free memory associated with a string.  <a href="#ga3e9ac5bcab38b089adfeebd8ba56ded"></a><br></dl></ul>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g13e652cfeb21dd616ab1bf83377a92c9"></a><!-- doxytag: member="kim_string.h::kim_string_copy" ref="g13e652cfeb21dd616ab1bf83377a92c9" args="(kim_string_t *out_string, const kim_string_t in_string)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_string_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_string</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_string</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a string. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>out_string</em>&nbsp;</td><td>on exit, a new string object which is a copy of <em>in_string</em>. Must be freed with <a class="el" href="group__kim__string__reference.html#ga3e9ac5bcab38b089adfeebd8ba56ded" title="Free memory associated with a string.">kim_string_free()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_string</em>&nbsp;</td><td>the string to copy. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcb69a7203bd4d8638eb304ae4d75948f"></a><!-- doxytag: member="kim_string.h::kim_string_compare" ref="gcb69a7203bd4d8638eb304ae4d75948f" args="(kim_string_t in_string, kim_string_t in_compare_to_string, kim_comparison_t *out_comparison)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a> kim_string_compare           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_string</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_compare_to_string</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g304e619e3936990905c7998f07a8800b">kim_comparison_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>out_comparison</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compare two strings. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>in_string</em>&nbsp;</td><td>a string. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>in_compare_to_string</em>&nbsp;</td><td>a string to be compared to <em>in_string</em>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out_comparison</em>&nbsp;</td><td>on exit, a comparison result indicating whether <em>in_string</em> is greater than, less than or equal to <em>in_compare_to_string</em>. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>. On failure, an error object representing the failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga3e9ac5bcab38b089adfeebd8ba56ded"></a><!-- doxytag: member="kim_string.h::kim_string_free" ref="ga3e9ac5bcab38b089adfeebd8ba56ded" args="(kim_string_t *io_string)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void kim_string_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_string</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free memory associated with a string. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>io_string</em>&nbsp;</td><td>a string to be freed. Set to NULL on exit. </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:20 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/group__kim__types__reference.html b/doc/kim/html/group__kim__types__reference.html
new file mode 100644 (file)
index 0000000..c46ec73
--- /dev/null
@@ -0,0 +1,761 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Types and Constants</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>KIM Types and Constants</h1>
+<p>
+<h2>Defines</h2>
+<ul>
+<li>#define <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a>) NULL)
+<li>#define <a class="el" href="group__kim__types__reference.html#g4c4c33563f8fb12f587a0516437c30e5">KIM_NO_ERROR_ECODE</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a>) 0)
+<li>#define <a class="el" href="group__kim__types__reference.html#g322f65f7d72470d57e21a4c8777ee9fb">KIM_IDENTITY_ANY</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>) NULL)
+<li>#define <a class="el" href="group__kim__types__reference.html#ge0384d3f6d9108e3ec84e322c61235a7">KIM_OPTIONS_DEFAULT</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>) NULL)
+<li>#define <a class="el" href="group__kim__types__reference.html#g88d98fa3bd4ca00913bff414d65c3590">KIM_OPTIONS_START_IMMEDIATELY</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a>) 0)
+<li>#define <a class="el" href="group__kim__types__reference.html#g4d38dda6e945454742fd5c0e2038a370">kim_comparison_is_less_than</a>(c)&nbsp;&nbsp;&nbsp;(c &lt; 0)
+<li>#define <a class="el" href="group__kim__types__reference.html#g82110d33192b3618a1c3d8d51965e80f">kim_comparison_is_equal_to</a>(c)&nbsp;&nbsp;&nbsp;(c == 0)
+<li>#define <a class="el" href="group__kim__types__reference.html#g95693c83e1981bd08bc616ab947ee01d">kim_comparison_is_greater_than</a>(c)&nbsp;&nbsp;&nbsp;(c &gt; 0)
+</ul>
+<h2>Typedefs</h2>
+<ul>
+<li>typedef int <a class="el" href="group__kim__types__reference.html#gc26053c4715f113e3580214d554781ad">kim_credential_state_t</a>
+<li>typedef uint32_t <a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a>
+<li>typedef <br>
+<a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a>(* <a class="el" href="group__kim__types__reference.html#g3dc87ed0aa0847e5af0e4f410ba6d7dd">kim_prompt_callback_t</a> )(<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *io_options, <a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a> in_type, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_title, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_message, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_description, void **out_reply)
+<li>typedef int32_t <a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a>
+<li>typedef int64_t <a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a>
+<li>typedef int64_t <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a>
+<li>typedef uint64_t <a class="el" href="group__kim__types__reference.html#g709d3d4d2733bc8dc29dcab2e806dd38">kim_count_t</a>
+<li>typedef int <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>
+<li>typedef int <a class="el" href="group__kim__types__reference.html#g304e619e3936990905c7998f07a8800b">kim_comparison_t</a>
+<li>typedef const char * <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>
+<li>typedef struct <br>
+kim_error_opaque * <a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a>
+<li>typedef struct <br>
+kim_identity_opaque * <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>
+<li>typedef struct <br>
+kim_options_opaque * <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>
+<li>typedef struct <br>
+kim_selection_hints_opaque * <a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>
+<li>typedef struct <br>
+kim_favorite_identities_opaque * <a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a>
+<li>typedef struct <br>
+kim_preferences_opaque * <a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>
+<li>typedef struct <br>
+kim_ccache_iterator_opaque * <a class="el" href="group__kim__types__reference.html#gf19042fb689c87bfbe381654f75af5b9">kim_ccache_iterator_t</a>
+<li>typedef struct <br>
+kim_ccache_opaque * <a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>
+<li>typedef struct <br>
+kim_credential_iterator_opaque * <a class="el" href="group__kim__types__reference.html#gaf149c8bd856b9067a9f42ccd2afdd37">kim_credential_iterator_t</a>
+<li>typedef struct <br>
+kim_credential_opaque * <a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>
+</ul>
+<h2>Enumerations</h2>
+<ul>
+<li>enum <a class="el" href="group__kim__types__reference.html#g6e5c2c986359589562c83f1da2cf0ca0">kim_credential_state_enum</a> { <br>
+&nbsp;&nbsp;<b>kim_credentials_state_valid</b> =  0, 
+<b>kim_credentials_state_expired</b> =  1, 
+<b>kim_credentials_state_not_yet_valid</b> =  2, 
+<b>kim_credentials_state_needs_validation</b> =  3, 
+<br>
+&nbsp;&nbsp;<b>kim_credentials_state_address_mismatch</b> =  4
+<br>
+ }
+<li>enum <b>kim_prompt_type_enum</b> { <b>kim_prompt_type_password</b> =  0, 
+<b>kim_prompt_type_challenge</b> =  1
+ }
+</ul>
+<h2>Functions</h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a> <a class="el" href="group__kim__types__reference.html#gd9cfd6a66e9bdcde30a285dc350eb370">kim_prompt_callback_default</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *io_options, <a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a> in_type, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_title, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_message, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_description, void **out_reply)
+<li><a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a> <a class="el" href="group__kim__types__reference.html#gcfbe7cd3e8716d58713a8475f6909908">kim_prompt_callback_gui</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *io_options, <a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a> in_type, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_title, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_message, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_description, void **out_reply)
+<li><a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a> <a class="el" href="group__kim__types__reference.html#g4b36d86709701623eb73e6d0b95d1dd4">kim_prompt_callback_cli</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *io_options, <a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a> in_type, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_title, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_message, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_description, void **out_reply)
+<li><a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a> <a class="el" href="group__kim__types__reference.html#g9699effd6079690c8b744ff96dff1914">kim_prompt_callback_none</a> (<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *io_options, <a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a> in_type, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_title, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_message, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_description, void **out_reply)
+</ul>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="g8712727bab9e6b02712a8a01285441d1"></a><!-- doxytag: member="kim_error.h::KIM_NO_ERROR" ref="g8712727bab9e6b02712a8a01285441d1" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define KIM_NO_ERROR&nbsp;&nbsp;&nbsp;((<a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a>) NULL)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The kim_error_t returned when no error occurred. Does not need to be freed with <a class="el" href="group__kim__error__reference.html#gc523758c093a0bb7af18af781e9d182c" title="Free memory associated with an error.">kim_error_free()</a>. 
+</div>
+</div><p>
+<a class="anchor" name="g4c4c33563f8fb12f587a0516437c30e5"></a><!-- doxytag: member="kim_error.h::KIM_NO_ERROR_ECODE" ref="g4c4c33563f8fb12f587a0516437c30e5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define KIM_NO_ERROR_ECODE&nbsp;&nbsp;&nbsp;((<a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a>) 0)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The kim_error_code_t for KIM_NO_ERROR. 
+</div>
+</div><p>
+<a class="anchor" name="g322f65f7d72470d57e21a4c8777ee9fb"></a><!-- doxytag: member="kim_identity.h::KIM_IDENTITY_ANY" ref="g322f65f7d72470d57e21a4c8777ee9fb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define KIM_IDENTITY_ANY&nbsp;&nbsp;&nbsp;((<a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>) NULL)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constant to specify any Kerberos identity is acceptable. 
+</div>
+</div><p>
+<a class="anchor" name="ge0384d3f6d9108e3ec84e322c61235a7"></a><!-- doxytag: member="kim_options.h::KIM_OPTIONS_DEFAULT" ref="ge0384d3f6d9108e3ec84e322c61235a7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define KIM_OPTIONS_DEFAULT&nbsp;&nbsp;&nbsp;((<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>) NULL)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Specifies the user's default options. 
+</div>
+</div><p>
+<a class="anchor" name="g88d98fa3bd4ca00913bff414d65c3590"></a><!-- doxytag: member="kim_options.h::KIM_OPTIONS_START_IMMEDIATELY" ref="g88d98fa3bd4ca00913bff414d65c3590" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define KIM_OPTIONS_START_IMMEDIATELY&nbsp;&nbsp;&nbsp;((<a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a>) 0)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Specifies that credentials should be valid immediately. 
+</div>
+</div><p>
+<a class="anchor" name="g4d38dda6e945454742fd5c0e2038a370"></a><!-- doxytag: member="kim_types.h::kim_comparison_is_less_than" ref="g4d38dda6e945454742fd5c0e2038a370" args="(c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define kim_comparison_is_less_than          </td>
+          <td>(</td>
+          <td class="paramtype">c&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%">&nbsp;&nbsp;&nbsp;(c &lt; 0)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convenience macro for interpreting <a class="el" href="group__kim__types__reference.html#g304e619e3936990905c7998f07a8800b">kim_comparison_t</a>. 
+</div>
+</div><p>
+<a class="anchor" name="g82110d33192b3618a1c3d8d51965e80f"></a><!-- doxytag: member="kim_types.h::kim_comparison_is_equal_to" ref="g82110d33192b3618a1c3d8d51965e80f" args="(c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define kim_comparison_is_equal_to          </td>
+          <td>(</td>
+          <td class="paramtype">c&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%">&nbsp;&nbsp;&nbsp;(c == 0)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convenience macro for interpreting <a class="el" href="group__kim__types__reference.html#g304e619e3936990905c7998f07a8800b">kim_comparison_t</a>. 
+</div>
+</div><p>
+<a class="anchor" name="g95693c83e1981bd08bc616ab947ee01d"></a><!-- doxytag: member="kim_types.h::kim_comparison_is_greater_than" ref="g95693c83e1981bd08bc616ab947ee01d" args="(c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define kim_comparison_is_greater_than          </td>
+          <td>(</td>
+          <td class="paramtype">c&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%">&nbsp;&nbsp;&nbsp;(c &gt; 0)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convenience macro for interpreting <a class="el" href="group__kim__types__reference.html#g304e619e3936990905c7998f07a8800b">kim_comparison_t</a>. 
+</div>
+</div><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="gc26053c4715f113e3580214d554781ad"></a><!-- doxytag: member="kim_credential.h::kim_credential_state_t" ref="gc26053c4715f113e3580214d554781ad" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int <a class="el" href="group__kim__types__reference.html#gc26053c4715f113e3580214d554781ad">kim_credential_state_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The state of a credential. See <a class="el" href="group__kim__types__reference.html#g6e5c2c986359589562c83f1da2cf0ca0">kim_credential_state_enum</a> for possible values. 
+</div>
+</div><p>
+<a class="anchor" name="g8d58b8d10d34b30675b1402a12d9fdd1"></a><!-- doxytag: member="kim_options.h::kim_prompt_type_t" ref="g8d58b8d10d34b30675b1402a12d9fdd1" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef uint32_t <a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The type of prompt which needs to be displayed. This value determines what type of user interface is displayed. See <a class="el" href="kim_options_overview.html#kim_options_custom_prompt_callback">Providing a Custom Prompt Callback</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g3dc87ed0aa0847e5af0e4f410ba6d7dd"></a><!-- doxytag: member="kim_options.h::kim_prompt_callback_t" ref="g3dc87ed0aa0847e5af0e4f410ba6d7dd" args=")(kim_options_t *io_options, kim_prompt_type_t in_type, kim_string_t in_title, kim_string_t in_message, kim_string_t in_description, void **out_reply)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a>(* <a class="el" href="group__kim__types__reference.html#g3dc87ed0aa0847e5af0e4f410ba6d7dd">kim_prompt_callback_t</a>)(<a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *io_options, <a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a> in_type, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_title, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_message, <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a> in_description, void **out_reply)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The prompt callback used to display a prompt to the user. See <a class="el" href="kim_options_overview.html#kim_options_custom_prompt_callback">Providing a Custom Prompt Callback</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g8db8bb7876c17d07e1e002b89e5a69eb"></a><!-- doxytag: member="kim_types.h::kim_error_code_t" ref="g8db8bb7876c17d07e1e002b89e5a69eb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int32_t <a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The KIM String type. See <a class="el" href="kim_string_overview.html">KIM String Overview</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g22f06b0741ccb68b739e6395774a53c6"></a><!-- doxytag: member="kim_types.h::kim_time_t" ref="g22f06b0741ccb68b739e6395774a53c6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int64_t <a class="el" href="group__kim__types__reference.html#g22f06b0741ccb68b739e6395774a53c6">kim_time_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A time value represented in seconds since January 1, 1970. 
+</div>
+</div><p>
+<a class="anchor" name="g1dccbe315455ed55fd34045e3a3e5086"></a><!-- doxytag: member="kim_types.h::kim_lifetime_t" ref="g1dccbe315455ed55fd34045e3a3e5086" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int64_t <a class="el" href="group__kim__types__reference.html#g1dccbe315455ed55fd34045e3a3e5086">kim_lifetime_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A duration represented in seconds. 
+</div>
+</div><p>
+<a class="anchor" name="g709d3d4d2733bc8dc29dcab2e806dd38"></a><!-- doxytag: member="kim_types.h::kim_count_t" ref="g709d3d4d2733bc8dc29dcab2e806dd38" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef uint64_t <a class="el" href="group__kim__types__reference.html#g709d3d4d2733bc8dc29dcab2e806dd38">kim_count_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+An quantity, usually used to return the number of elements in an array. 
+</div>
+</div><p>
+<a class="anchor" name="g5a14ff972cd96679e00120c506202d3e"></a><!-- doxytag: member="kim_types.h::kim_boolean_t" ref="g5a14ff972cd96679e00120c506202d3e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int <a class="el" href="group__kim__types__reference.html#g5a14ff972cd96679e00120c506202d3e">kim_boolean_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A boolean value. 0 means false, all other values mean true. 
+</div>
+</div><p>
+<a class="anchor" name="g304e619e3936990905c7998f07a8800b"></a><!-- doxytag: member="kim_types.h::kim_comparison_t" ref="g304e619e3936990905c7998f07a8800b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int <a class="el" href="group__kim__types__reference.html#g304e619e3936990905c7998f07a8800b">kim_comparison_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A comparison between two sortable objects. <ul>
+<li>Less than 0 means the first object is less than the second. </li>
+<li>0 means the two objects are identical. </li>
+<li>Greater than 0 means the first object is greater than the second. <dl class="note" compact><dt><b>Note:</b></dt><dd>Convenience macros are provided for interpreting kim_comparison_ts to improve code readability. See <a class="el" href="group__kim__types__reference.html#g4d38dda6e945454742fd5c0e2038a370">kim_comparison_is_less_than()</a>, kim_comparison_is_equal() and <a class="el" href="group__kim__types__reference.html#g95693c83e1981bd08bc616ab947ee01d">kim_comparison_is_greater_than()</a> </dd></dl>
+</li>
+</ul>
+
+</div>
+</div><p>
+<a class="anchor" name="g6015e25c120b236938e23290177f5dce"></a><!-- doxytag: member="kim_types.h::kim_string_t" ref="g6015e25c120b236938e23290177f5dce" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef const char* <a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The KIM String type. See <a class="el" href="kim_string_overview.html">KIM String Overview</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g9e10dd2df80df19496dab049a47514cc"></a><!-- doxytag: member="kim_types.h::kim_error_t" ref="g9e10dd2df80df19496dab049a47514cc" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct kim_error_opaque* <a class="el" href="group__kim__types__reference.html#g9e10dd2df80df19496dab049a47514cc">kim_error_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A KIM Error object. See <a class="el" href="kim_error_overview.html">KIM Error Overview</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g24e6b0e3dab12f058c4b2f08113e772a"></a><!-- doxytag: member="kim_types.h::kim_identity_t" ref="g24e6b0e3dab12f058c4b2f08113e772a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct kim_identity_opaque* <a class="el" href="group__kim__types__reference.html#g24e6b0e3dab12f058c4b2f08113e772a">kim_identity_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A KIM Principal object. See <a class="el" href="kim_identity_overview.html">KIM Identity Overview</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="gae2b9068386ddb47eb075f8a21823d2e"></a><!-- doxytag: member="kim_types.h::kim_options_t" ref="gae2b9068386ddb47eb075f8a21823d2e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct kim_options_opaque* <a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A KIM Options object. See <a class="el" href="kim_options_overview.html">KIM Options Overview</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g792f9e97aaf39dd7643221545ff475a3"></a><!-- doxytag: member="kim_types.h::kim_selection_hints_t" ref="g792f9e97aaf39dd7643221545ff475a3" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct kim_selection_hints_opaque* <a class="el" href="group__kim__types__reference.html#g792f9e97aaf39dd7643221545ff475a3">kim_selection_hints_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A KIM Selection Hints object. See <a class="el" href="kim_selection_hints_overview.html">KIM Selection Hints Overview</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g732f9e24fe1281aa42ffa2b078a53282"></a><!-- doxytag: member="kim_types.h::kim_favorite_identities_t" ref="g732f9e24fe1281aa42ffa2b078a53282" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct kim_favorite_identities_opaque* <a class="el" href="group__kim__types__reference.html#g732f9e24fe1281aa42ffa2b078a53282">kim_favorite_identities_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A KIM Favorite Realms object. See <a class="el" href="kim_favorite_identities_overview.html">KIM Favorite Identities Overview</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="gdf8ccbcfbb6b79274c31f0ffdf4272eb"></a><!-- doxytag: member="kim_types.h::kim_preferences_t" ref="gdf8ccbcfbb6b79274c31f0ffdf4272eb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct kim_preferences_opaque* <a class="el" href="group__kim__types__reference.html#gdf8ccbcfbb6b79274c31f0ffdf4272eb">kim_preferences_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A KIM Preferences object. See <a class="el" href="kim_preferences_overview.html">KIM Preferences Overview</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="gf19042fb689c87bfbe381654f75af5b9"></a><!-- doxytag: member="kim_types.h::kim_ccache_iterator_t" ref="gf19042fb689c87bfbe381654f75af5b9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct kim_ccache_iterator_opaque* <a class="el" href="group__kim__types__reference.html#gf19042fb689c87bfbe381654f75af5b9">kim_ccache_iterator_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A KIM CCache Iterator object. See <a class="el" href="kim_ccache_overview.html#kim_credential_cache_collection">Acquiring a CCache from the Cache Collection</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g9fd49877bb2360ab487ffbbbe3342393"></a><!-- doxytag: member="kim_types.h::kim_ccache_t" ref="g9fd49877bb2360ab487ffbbbe3342393" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct kim_ccache_opaque* <a class="el" href="group__kim__types__reference.html#g9fd49877bb2360ab487ffbbbe3342393">kim_ccache_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A KIM CCache object. See <a class="el" href="kim_ccache_overview.html">KIM CCache Overview</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="gaf149c8bd856b9067a9f42ccd2afdd37"></a><!-- doxytag: member="kim_types.h::kim_credential_iterator_t" ref="gaf149c8bd856b9067a9f42ccd2afdd37" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct kim_credential_iterator_opaque* <a class="el" href="group__kim__types__reference.html#gaf149c8bd856b9067a9f42ccd2afdd37">kim_credential_iterator_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A KIM Credential Iterator object. See <a class="el" href="kim_credential_overview.html#kim_credential_iterator_t">Iterating over the Credentials in a CCache</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g0a2be074a5ff409066e73e2db5d6384c"></a><!-- doxytag: member="kim_types.h::kim_credential_t" ref="g0a2be074a5ff409066e73e2db5d6384c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct kim_credential_opaque* <a class="el" href="group__kim__types__reference.html#g0a2be074a5ff409066e73e2db5d6384c">kim_credential_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A KIM Credential object. See <a class="el" href="kim_credential_overview.html">KIM Credential Overview</a> for more information. 
+</div>
+</div><p>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="g6e5c2c986359589562c83f1da2cf0ca0"></a><!-- doxytag: member="kim_credential.h::kim_credential_state_enum" ref="g6e5c2c986359589562c83f1da2cf0ca0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="group__kim__types__reference.html#g6e5c2c986359589562c83f1da2cf0ca0">kim_credential_state_enum</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Possible credential states. Credentials may be: <ul>
+<li>valid - The credential can be used. </li>
+<li>expired - The credential's lifetime has been exceeded. </li>
+<li>not_yet_valid - The credential is post dated and the time when it becomes valid has not yet been reached. </li>
+<li>needs_validation - The credential is post-dated and although the time when it becomes valid has been reached it has not yet been validated. </li>
+<li>address_mismatch - The credential contains IP address(es) which do not match the host's local address(es). </li>
+</ul>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gd9cfd6a66e9bdcde30a285dc350eb370"></a><!-- doxytag: member="kim_options.h::kim_prompt_callback_default" ref="gd9cfd6a66e9bdcde30a285dc350eb370" args="(kim_options_t *io_options, kim_prompt_type_t in_type, kim_string_t in_title, kim_string_t in_message, kim_string_t in_description, void **out_reply)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a> kim_prompt_callback_default           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_type</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_title</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_description</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>out_reply</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The default prompt callback. See <a class="el" href="kim_options_overview.html#kim_options_custom_prompt_callback">Providing a Custom Prompt Callback</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="gcfbe7cd3e8716d58713a8475f6909908"></a><!-- doxytag: member="kim_options.h::kim_prompt_callback_gui" ref="gcfbe7cd3e8716d58713a8475f6909908" args="(kim_options_t *io_options, kim_prompt_type_t in_type, kim_string_t in_title, kim_string_t in_message, kim_string_t in_description, void **out_reply)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a> kim_prompt_callback_gui           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_type</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_title</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_description</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>out_reply</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The graphical prompt callback. See <a class="el" href="kim_options_overview.html#kim_options_custom_prompt_callback">Providing a Custom Prompt Callback</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g4b36d86709701623eb73e6d0b95d1dd4"></a><!-- doxytag: member="kim_options.h::kim_prompt_callback_cli" ref="g4b36d86709701623eb73e6d0b95d1dd4" args="(kim_options_t *io_options, kim_prompt_type_t in_type, kim_string_t in_title, kim_string_t in_message, kim_string_t in_description, void **out_reply)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a> kim_prompt_callback_cli           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_type</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_title</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_description</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>out_reply</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The command line prompt callback. See <a class="el" href="kim_options_overview.html#kim_options_custom_prompt_callback">Providing a Custom Prompt Callback</a> for more information. 
+</div>
+</div><p>
+<a class="anchor" name="g9699effd6079690c8b744ff96dff1914"></a><!-- doxytag: member="kim_options.h::kim_prompt_callback_none" ref="g9699effd6079690c8b744ff96dff1914" args="(kim_options_t *io_options, kim_prompt_type_t in_type, kim_string_t in_title, kim_string_t in_message, kim_string_t in_description, void **out_reply)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__kim__types__reference.html#g8db8bb7876c17d07e1e002b89e5a69eb">kim_error_code_t</a> kim_prompt_callback_none           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#gae2b9068386ddb47eb075f8a21823d2e">kim_options_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>io_options</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g8d58b8d10d34b30675b1402a12d9fdd1">kim_prompt_type_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_type</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_title</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__kim__types__reference.html#g6015e25c120b236938e23290177f5dce">kim_string_t</a>&nbsp;</td>
+          <td class="paramname"> <em>in_description</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>out_reply</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The prompt callback which always returns an error. Use to turn off prompting entirely. <dl class="note" compact><dt><b>Note:</b></dt><dd>Using this callback may prevent the user from authenicating. See <a class="el" href="kim_options_overview.html#kim_options_custom_prompt_callback">Providing a Custom Prompt Callback</a> for more information. </dd></dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:20 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/index.html b/doc/kim/html/index.html
new file mode 100644 (file)
index 0000000..fccd684
--- /dev/null
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: Kerberos Identity Management (KIM) API Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>Kerberos Identity Management (KIM) API Documentation</h1>
+<p>
+<h2><a class="anchor" name="introduction">
+Introduction</a></h2>
+The Kerberos Identity Management API is a high level API for managing the selection and management of Kerberos credentials. It is intended for use by applications, credential management applications (eg: kinit, kpasswd, etc) and internally by the Kerberos libraries. Under some circumstances client applications may also benefit from the Kerberos Identity Management API.<h2><a class="anchor" name="conventions">
+API Conventions</a></h2>
+Although KIM currently only provides a C API, it attempts to make that API as object-oriented as possible. KIM functions are grouped by object and all of the object types are opaque, including errors. The reason for this is two-fold. First, the KIM API is rather large. Grouping functions by object allows the API to be broken up into smaller, more manageable chunks. Second, providing an object-like C API will make it easier to port to object oriented languages.<p>
+Because C lacks classes and other object oriented syntax, KIM functions adhere to the following naming conventions to make functions easier to identify:<p>
+<ul>
+<li>Functions beginning with <b>kim_object_create</b> are constructors for an object of type kim_object. On success these functions return a newly allocated object which must later be freed by the caller.</li>
+</ul>
+<ul>
+<li>Functions of the form <b>kim_object_copy</b> are copy constructors. They instantiate a new object of kim_object from an object of the same type.</li>
+</ul>
+<ul>
+<li>Functions of the form <b>kim_object_free</b> are destructors for objects of type kim_object.</li>
+</ul>
+<ul>
+<li>Functions beginning with <b>kim_object_get</b> and <b>kim_object_set</b> examine and modify properties of objects of type kim_object.</li>
+</ul>
+<ul>
+<li>All KIM APIs except destructors and error management APIs return a KIM Error object (kim_error_t).</li>
+</ul>
+<h2><a class="anchor" name="terminology">
+Terminology</a></h2>
+Kerberos organizes its authentication tokens by client identity (the name of the user) and service identity (the name of a service). The following terms are used throughout this documentation:<p>
+<ul>
+<li><b>credential</b> - A token which authenticates a client identity to a service identity.</li>
+</ul>
+<ul>
+<li><b>ccache</b> - Short for "credentials cache". A set of credentials for a single client identity.</li>
+</ul>
+<ul>
+<li><b>cache collection</b> - The set of all credential caches.</li>
+</ul>
+<ul>
+<li><b>default ccache</b> - A credentials cache that the Kerberos libraries will use if no ccache is specified by the caller. Use of the default ccache is now discouraged. Instead applications should use selection hints to choose an appropriate client identity.</li>
+</ul>
+<h2><a class="anchor" name="selection_api">
+Client Identity Selection APIs</a></h2>
+KIM provides high level APIs for applications to select which client identity to use. Use of these APIs is intended to replace the traditional "default ccache" mechanism previously used by Kerberos.<p>
+<b>KIM Selection Hints (kim_selection_hints_t)</b> controls options for selecting a client identity:<ul>
+<li><a class="el" href="kim_selection_hints_overview.html">KIM Selection Hints Overview</a></li><li><a class="el" href="group__kim__selection__hints__reference.html">KIM Selection Hints Reference Documentation</a></li></ul>
+<p>
+<b>KIM Identity (kim_identity_t)</b> provides an immutable Kerberos identity object<ul>
+<li><a class="el" href="kim_identity_overview.html">KIM Identity Overview</a></li><li><a class="el" href="group__kim__identity__reference.html">KIM Identity Reference Documentation</a></li></ul>
+<h2><a class="anchor" name="management_api">
+Credential Management APIs</a></h2>
+KIM also provides APIs for acquiring new credentials over the network by contacting a KDC and for viewing and modifying the existing credentials in the cache collection<p>
+Whether or not you use the credential or ccache APIs depends on whether you want KIM to store any newly acquired credentials in the cache collection. KIM ccache APIs always create a ccache in the cache collection containing newly acquired credentials whereas the KIM credential APIs just return a credential object. In general most callers want to store newly acquired credentials and should use the KIM ccache APIs when acquiring credentials.<p>
+<b>KIM CCache (kim_ccache_t)</b> manipulates credential caches in the cache collection:<ul>
+<li><a class="el" href="kim_ccache_overview.html">KIM CCache Overview</a></li><li><a class="el" href="group__kim__ccache__reference.html">KIM CCache Reference Documentation</a></li></ul>
+<p>
+<b>KIM Credential (kim_credential_t)</b> manipulates credentials:<ul>
+<li><a class="el" href="kim_credential_overview.html">KIM Credential Overview</a></li><li><a class="el" href="group__kim__credential__reference.html">KIM Credential Reference Documentation</a></li></ul>
+<p>
+<b>KIM Options (kim_options_t)</b> control options for credential acquisition:<ul>
+<li><a class="el" href="kim_options_overview.html">KIM Options Overview</a></li><li><a class="el" href="group__kim__options__reference.html">KIM Options Reference Documentation</a></li></ul>
+<p>
+<b>KIM Realms List (kim_favorite_identities_t)</b> views and edits the current user's favorite realms list:<ul>
+<li><a class="el" href="kim_favorite_identities_overview.html">KIM Favorite Identities Overview</a></li><li><a class="el" href="group__kim__favorite__identities__reference.html">KIM Favorite Identities Documentation</a></li></ul>
+<p>
+<b>KIM Preferences (kim_preferences_t)</b> views and edits the current user's preferences:<ul>
+<li><a class="el" href="kim_preferences_overview.html">KIM Preferences Overview</a></li><li><a class="el" href="group__kim__preferences__reference.html">KIM Preferences Documentation</a></li></ul>
+<h2><a class="anchor" name="utility_apis">
+Miscellaneous APIs</a></h2>
+The high and low level APIs depend on the following basic utility classes to manage generic types.<p>
+<b>KIM String (kim_string_t)</b> provides memory management for an immutable string:<ul>
+<li><a class="el" href="kim_string_overview.html">KIM String Overview</a></li><li><a class="el" href="group__kim__string__reference.html">KIM String Reference Documentation</a></li></ul>
+<p>
+<b>KIM Error (kim_error_t)</b> provides a machine and user-readable error message:<ul>
+<li><a class="el" href="kim_error_overview.html">KIM Error Overview</a></li><li><a class="el" href="group__kim__error__reference.html">KIM Error Reference Documentation</a></li></ul>
+<h2><a class="anchor" name="types">
+Types and Constants</a></h2>
+<ul>
+<li><a class="el" href="group__kim__types__reference.html">KIM Types and Constants</a> </li>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/kim_ccache_overview.html b/doc/kim/html/kim_ccache_overview.html
new file mode 100644 (file)
index 0000000..dded05f
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM CCache Overview</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1><a class="anchor" name="kim_ccache_overview">KIM CCache Overview</a></h1><h2><a class="anchor" name="kim_ccache_introduction">
+Introduction</a></h2>
+Kerberos credentials are stored in "ccaches" (short for "credentials caches"). The set of all ccaches which the KIM can use is called the "cache collection". Each ccache has a name and type which uniquely identify it in the cache collection and a client identity. The ccache's client identity is the identity whose credentials are stored in the ccache. This allows for easy lookup of all the credentials for a given identity.<p>
+KIM attempts to preserve a one-to-one relationship between client identities and ccaches. If the KIM is used to manipulate the cache collection, there will be one ccache per identity. However, because low-level APIs allow callers to create multiple ccaches for the same client identity or a single ccache containing credentials for different client identities, KIM handles those situations. In general when searching KIM will find the first ccache matching the requested client identity. It will not find credentials for the requested client identity if they are in a ccache with a different client identity.<p>
+The kim_ccache_t object is a reference to a ccache in the cache collection. If other applications make changes to the the ccache pointed to by a KIM ccache object, the object will immediately show those changes. KIM performs locking on the cache collection to prevent deadlocks and maintain a consistent behavior when multiple applications attempt to modify the cache collection.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>KIM ccache APIs are intended for applications and system tools which manage credentials for the user. They are not a substitute for krb5 and GSSAPI functions which obtain service credentials for the purpose of authenticating a client to an application server.</dd></dl>
+<h2><a class="anchor" name="kim_credential_cache_collection">
+Acquiring a CCache from the Cache Collection</a></h2>
+KIM provides a simple iterator API for iterating over the ccaches in the cache collection. First, call <a class="el" href="group__kim__ccache__iterator__reference.html#g2f116eaf59776453db578c9342b8c3e1" title="Get a ccache iterator to enumerate ccaches in the cache collection.">kim_ccache_iterator_create()</a> to obtain an iterator for the cache collection. Then loop calling <a class="el" href="group__kim__ccache__iterator__reference.html#g71dc66abc8b357e318c48debd2cb7916" title="Get the next ccache in the cache collection.">kim_ccache_iterator_next()</a> until either you find the ccache you are looking for or the API returns a NULL ccache, indicating that there are no more ccaches in the cache collection. When you are done with the iterator, call <a class="el" href="group__kim__ccache__iterator__reference.html#ged070acdb8996a34c622675369733d12" title="Free memory associated with a ccache iterator.">kim_ccache_iterator_free()</a>.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd><a class="el" href="group__kim__ccache__iterator__reference.html#g71dc66abc8b357e318c48debd2cb7916" title="Get the next ccache in the cache collection.">kim_ccache_iterator_next()</a> returns ccache objects which must be freed with <a class="el" href="group__kim__ccache__reference.html#g2e9e82cd849c9815857397a9b869c45c" title="Free memory associated with a ccache.">kim_ccache_free()</a> to avoid leaking memory.</dd></dl>
+KIM also provides a convenient API <a class="el" href="group__kim__ccache__reference.html#gfc1faee53dbb4b1dab1a5daf8f685f64" title="Find a ccache for a client identity in the cache collection.">kim_ccache_create_from_client_identity()</a> which returns the ccache for a specific client identity, if any exists. Typically callers of this API obtain the client identity using <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a>.<h2><a class="anchor" name="kim_ccache_acquire_default">
+Acquiring Credentials from the Default CCache</a></h2>
+<a class="el" href="group__kim__ccache__reference.html#gec7b1b8d8514d76bb0608670106ab31c" title="Get the default ccache.">kim_ccache_create_from_default()</a> returns the default ccache. The default ccache is a legacy concept which was replaced by selection hints. Prior to the existence of selection hints, applications always looked at the default ccache for credentials. By setting the system default ccache, users could manually control which credentials each application used. As the number of ccaches and applications has grown, this mechanism has become unusable. You should avoid using this API whenever possible.<h2><a class="anchor" name="kim_ccache_acquire_new">
+Acquiring New Credentials in a CCache</a></h2>
+KIM provides the <a class="el" href="group__kim__ccache__reference.html#gda206c3632933a811cb895e5be29bba9" title="Acquire a new initial credential and store it in a ccache.">kim_ccache_create_new()</a> API for acquiring new credentials and storing them in a ccache. Credentials can either be obtained for a specific client identity or by specifying <a class="el" href="group__kim__types__reference.html#g322f65f7d72470d57e21a4c8777ee9fb">KIM_IDENTITY_ANY</a> to allow the user to choose. Typically callers of this API obtain the client identity using <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a>. Depending on the kim_options specified, <a class="el" href="group__kim__ccache__reference.html#gda206c3632933a811cb895e5be29bba9" title="Acquire a new initial credential and store it in a ccache.">kim_ccache_create_new()</a> may present a GUI or command line prompt to obtain information from the user.<p>
+<a class="el" href="group__kim__ccache__reference.html#gd4242a5d6b2cc7222bcb065deb5fdf17" title="Find a ccache containing a valid initial credential in the cache collection, or if...">kim_ccache_create_new_if_needed()</a> searches the cache collection for a ccache for the client identity and if no appropriate ccache is available, attempts to acquire new credentials and store them in a new ccache. Depending on the kim_options specified, <a class="el" href="group__kim__ccache__reference.html#gd4242a5d6b2cc7222bcb065deb5fdf17" title="Find a ccache containing a valid initial credential in the cache collection, or if...">kim_ccache_create_new_if_needed()</a> may present a GUI or command line prompt to obtain information from the user. This function exists for convenience and to avoid code duplication. It can be trivially implemented using <a class="el" href="group__kim__ccache__reference.html#gfc1faee53dbb4b1dab1a5daf8f685f64" title="Find a ccache for a client identity in the cache collection.">kim_ccache_create_from_client_identity()</a> and <a class="el" href="group__kim__ccache__reference.html#gda206c3632933a811cb895e5be29bba9" title="Acquire a new initial credential and store it in a ccache.">kim_ccache_create_new()</a>.<p>
+KIM provides the <a class="el" href="group__kim__ccache__reference.html#g21a41ecd65dcb9d5b6a2e4d45d3f690b" title="Acquire a new initial credential from a keytab and store it in a ccache.">kim_ccache_create_from_keytab()</a> to create credentials using a keytab and store them in the cache collection. A keytab is an on-disk copy of a client identity's secret key. Typically sites use keytabs for client identities that identify a machine or service and protect the keytab with disk permissions. Because a keytab is sufficient to obtain credentials, keytabs will normally only be readable by root, Administrator or some other privileged account. Typically applications use credentials obtained from keytabs to obtain credentials for batch processes. These keytabs and credentials are usually for a special identity used for the batch process rather than a user identity.<h2><a class="anchor" name="kim_ccache_validate">
+Validating Credentials in a CCache</a></h2>
+A credential with a start time in the future (ie: after the issue date) is called a post-dated credential. Because the KDC administrator may wish to disable a identity, once the start time is reached, all post-dated credentials must be validated before they can be used. Otherwise an attacker using a compromised account could acquire lots of post-dated credentials to circumvent the acccount being disabled.<p>
+KIM provides the <a class="el" href="group__kim__ccache__reference.html#g8bb7d46268621e73629dceefd15ff639" title="Validate the TGT in a ccache.">kim_ccache_validate()</a> API to validate the TGT credential in a ccache. Note that this API replaces any existing credentials with the validated credential.<h2><a class="anchor" name="kim_ccache_renew">
+Renewing Credentials in a CCache</a></h2>
+A renewable credential can be used to obtain a new identical credential without resending secret information (such as a password) to the KDC. A credential may only be renewed during its renewal lifetime and while valid.<p>
+KIM provides the <a class="el" href="group__kim__ccache__reference.html#gafb44675df9d05af5b899996be14e2b4" title="Renew the TGT in a ccache.">kim_ccache_renew()</a> API to renew the TGT credential in a ccache. Note that this API replaces any existing credentials with the renewed credential.<h2><a class="anchor" name="kim_ccache_verify">
+Verifying Credentials in a CCache</a></h2>
+When a program acquires TGT credentials for the purpose of authenticating itself to the machine it is running on, it is insufficient for the machine to assume that the caller is authorized just because it got credentials. Instead, the credentials must be verified using a key the local machine. The reason this is necessary is because an attacker can trick the machine into obtaining credentials from any KDC, including malicious ones with the same realm name as the local machine's realm. This exploit is called the Zanarotti attack.<p>
+In order to avoid the Zanarotti attack, the local machine must authenticate the process in the same way an application server would authenticate a client. Like an application server, the local machine must have its own identity in its realm and a keytab for that identity on its local disk. However, rather than forcing system daemons to use the network-oriented calls in the krb5 and GSS APIs, KIM provides the <a class="el" href="group__kim__ccache__reference.html#g3d293fc7338ff9b654e167153df33b5c" title="Verify the TGT in a ccache.">kim_ccache_verify()</a> API to verify credentials directly.<p>
+The most common reason for using <a class="el" href="group__kim__ccache__reference.html#g3d293fc7338ff9b654e167153df33b5c" title="Verify the TGT in a ccache.">kim_ccache_verify()</a> is user login. If the local machine wants to use Kerberos to verify the username and password provided by the user, it must call <a class="el" href="group__kim__ccache__reference.html#g3d293fc7338ff9b654e167153df33b5c" title="Verify the TGT in a ccache.">kim_ccache_verify()</a> on the credentials it obtains to make sure they are really from a KDC it trusts. Another common case is a server which is only using Kerberos internally. For example an LDAP or web server might use a username and password obtained over the network to get Kerberos credentials. In order to make sure they aren't being tricked into talking to the wrong KDC, these servers must also call <a class="el" href="group__kim__ccache__reference.html#g3d293fc7338ff9b654e167153df33b5c" title="Verify the TGT in a ccache.">kim_ccache_verify()</a>.<p>
+The Zanarotti attack is only a concern if the act of accessing the machine gives the process special access. Thus a managed cluster machine with Kerberos-authenticated networked home directories does not need to call <a class="el" href="group__kim__ccache__reference.html#g3d293fc7338ff9b654e167153df33b5c" title="Verify the TGT in a ccache.">kim_ccache_verify()</a>. Even though an attacker can log in as any user on the cluster machine, the attacker can't actually access any of the user's data or use any of their privileges because those are all authenticated via Kerberized application servers (and thus require actually having credentials for the real local realm).<p>
+<a class="el" href="group__kim__ccache__reference.html#g3d293fc7338ff9b654e167153df33b5c" title="Verify the TGT in a ccache.">kim_ccache_verify()</a> provides an option to return success even if the machine's host key is not present. This option exists for sites which have a mix of different machines, some of which are vulnerable to the Zanarotti attack and some are not. If this option is used, it is the responsiblity of the machine's maintainer to obtain a keytab for their machine if it needs one.<h2><a class="anchor" name="kim_ccache_properties">
+Examining CCache Properties</a></h2>
+<ul>
+<li><a class="el" href="group__kim__ccache__reference.html#gbf079f8dff05db6bb9aa152df83029fb" title="Get the type of a ccache.">kim_ccache_get_type()</a> returns the type of the ccache. Types include "API" for CCAPI ccaches, "FILE" for file-based ccaches and "MEMORY" for single-process in-memory ccaches.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__ccache__reference.html#gec1c9af407a6554401a7f32c49cabd6a" title="Get the name of a ccache.">kim_ccache_get_name()</a> returns the name of the ccache. A ccache's name identifies the ccache uniquely among ccaches of the same type. Note that two ccaches with different types may have the same name.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__ccache__reference.html#g3a0f51defaf127b77b1e44092a352e31" title="Get the type and name for a ccache in display format.">kim_ccache_get_display_name()</a> returns a display string which uniquely identifies a ccache. A ccache display name is of the form "&lt;type&gt;:&lt;name&gt;" and can be displayed to the user or used as an argument to certain krb5 APIs, such as krb5_cc_resolve().</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__ccache__reference.html#gd5abbe1c6e1a0d191695bb373f9a7957" title="Get the client identity for a ccache.">kim_ccache_get_client_identity()</a> returns the ccache's client identity.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__ccache__reference.html#g78ff442478e0faa46c63774c49a7b51e" title="Get the first valid credential in a ccache.">kim_ccache_get_valid_credential()</a> returns the first valid TGT in the ccache for its client identity. If there are no TGTs in the ccache, it returns the first valid non-TGT credential for the ccache's client identity. TGT credentials (ie: "ticket-granting tickets") are credentials for the krbtgt service: a service identity of the form "krbtgt/&lt;REALM&gt;@&lt;REALM&gt;". These credentials allow the entity named by the client identity to obtain additional credentials without resending shared secrets (such as a password) to the KDC. Kerberos uses TGTs to provide single sign-on authentication.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__ccache__reference.html#gb8793586b7c4054f2219b28920bf12bd" title="Get the time when the credentials in the ccache become valid.">kim_ccache_get_start_time()</a> returns when the credential's in a ccache will become valid. Credentials may be "post-dated" which means that their lifetime starts sometime in the future. Note that when a post-dated credential's start time is reached, the credential must be validated. See <a class="el" href="kim_credential_overview.html#kim_credential_validate">Validating Credentials</a> for more information.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__ccache__reference.html#g2cbb6b78cac2bb2e4359caf8b53d60c5" title="Get the time when the credentials in the ccache will expire.">kim_ccache_get_expiration_time()</a> returns when the credential's in a ccache will expire. Credentials are time limited by the lifetime of the credential. While you can request a credential of any lifetime, the KDC limits the credential lifetime to a administrator-defined maximum. Typically credential lifetime range from 10 to 21 hours.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__ccache__reference.html#gfaad7545fbdb381faed8d2378009bd6e" title="Get the time when the credentials in the ccache will no longer be renewable.">kim_ccache_get_renewal_expiration_time()</a> returns when the credential's in a ccache will no longer be renewable. Valid credentials may be renewed up until their renewal expiration time. Renewing credentials acquires a fresh set of credentials with a full lifetime without resending secrets to the KDC (such as a password). If credentials are not renewable, this function will return an error.</li>
+</ul>
+See <a class="el" href="group__kim__ccache__reference.html">KIM CCache Reference Documentation</a> and <a class="el" href="group__kim__ccache__iterator__reference.html">KIM CCache Iterator Reference Documentation</a> for information on specific APIs. <hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/kim_credential_overview.html b/doc/kim/html/kim_credential_overview.html
new file mode 100644 (file)
index 0000000..cdf33a1
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Credential Overview</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1><a class="anchor" name="kim_credential_overview">KIM Credential Overview</a></h1><h2><a class="anchor" name="kim_credential_introduction">
+Introduction</a></h2>
+A Kerberos credential (also called a "Kerberos ticket") is a time-limited token issued by a KDC which authenticates the entity named by the credential's client identity to the service named by the credential's service identity.<p>
+The kim_credential_t object contains a single Kerberos credential. KIM credentials objects are always copies of credentials, not references to credentials stored in the cache collection. Modifying credential objects in the ccache collection will not change any existing KIM credential objects.<p>
+KIM credential APIs are intended for applications and system tools which manage credentials for the user. They are not a substitute for krb5 and GSSAPI functions which obtain service credentials for the purpose of authenticating a client to an application server.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Many of the APIs listed below have equivalent functions which operate on ccaches. In most cases applications will want to use the ccache versions of these APIs since they automatically store any newly created credentials. See <a class="el" href="kim_ccache_overview.html">KIM CCache Overview</a> for more information.</dd></dl>
+<h2><a class="anchor" name="kim_credential_acquire_new">
+Acquiring New Credentials</a></h2>
+KIM provides the <a class="el" href="group__kim__credential__reference.html#g318fdf6ea1e937a35e947dab6efa695d" title="Acquire a new initial credential.">kim_credential_create_new()</a> API for acquiring new credentials. Credentials can either be obtained for a specific client identity or by specifying <a class="el" href="group__kim__types__reference.html#g322f65f7d72470d57e21a4c8777ee9fb">KIM_IDENTITY_ANY</a> to allow the user to choose. Typically callers of this API obtain the client identity using <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a>. Depending on the kim_options specified, <a class="el" href="group__kim__credential__reference.html#g318fdf6ea1e937a35e947dab6efa695d" title="Acquire a new initial credential.">kim_credential_create_new()</a> may present a GUI or command line prompt to obtain information from the user.<p>
+KIM provides the <a class="el" href="group__kim__credential__reference.html#g465dab295b62d786d7e83e95409fae94" title="Acquire a new initial credential from a keytab.">kim_credential_create_from_keytab()</a> to create credentials using a keytab. A keytab is an on-disk copy of a client identity's secret key. Typically sites use keytabs for client identities that identify a machine or service and protect the keytab with disk permissions. Because a keytab is sufficient to obtain credentials, keytabs will normally only be readable by root, Administrator or some other privileged account. Typically applications use credentials obtained from keytabs to obtain credentials for batch processes. These keytabs and credentials are usually for a special identity used for the batch process rather than a user identity.<h2><a class="anchor" name="kim_credential_validate">
+Validating Credentials</a></h2>
+A credential with a start time in the future (ie: after the issue date) is called a post-dated credential. Because the KDC administrator may wish to disable a identity, once the start time is reached, all post-dated credentials must be validated before they can be used. Otherwise an attacker using a compromised account could acquire lots of post-dated credentials to circumvent the acccount being disabled.<p>
+KIM provides the <a class="el" href="group__kim__credential__reference.html#g9cd6ba59236babb4e79a680fa54b5037" title="Validate a TGT credential.">kim_credential_validate()</a> API to validate a credential. Note that this API replaces the credential object with a new validated credential object. If you wish to store the new credential in the ccache collection you must either call <a class="el" href="group__kim__credential__reference.html#g894c7144185b1112f6872fdf27fb016d" title="Store a credential in a ccache in the cache collection.">kim_credential_store()</a> on the validated credential or use <a class="el" href="group__kim__ccache__reference.html#g8bb7d46268621e73629dceefd15ff639" title="Validate the TGT in a ccache.">kim_ccache_validate()</a> instead.<h2><a class="anchor" name="kim_credential_renew">
+Renewing Credentials</a></h2>
+A renewable credential can be used to obtain a new identical credential without resending secret information (such as a password) to the KDC. A credential may only be renewed during its renewal lifetime and while valid.<p>
+KIM provides the <a class="el" href="group__kim__credential__reference.html#g99ac2c178bec484311cd7fc2cbb7e05e" title="Renew a TGT credential.">kim_credential_renew()</a> API to renew a credential. Note that this API replaces the credential object with a new renewed credential object. If you wish to store the new credential in the ccache collection you must either call <a class="el" href="group__kim__credential__reference.html#g894c7144185b1112f6872fdf27fb016d" title="Store a credential in a ccache in the cache collection.">kim_credential_store()</a> on the renewed credential or use <a class="el" href="group__kim__ccache__reference.html#gafb44675df9d05af5b899996be14e2b4" title="Renew the TGT in a ccache.">kim_ccache_renew()</a> instead.<h2><a class="anchor" name="kim_credential_storing">
+Storing Credentials in the Cache Collection</a></h2>
+KIM credential objects may be stored in the ccache collection using <a class="el" href="group__kim__credential__reference.html#g894c7144185b1112f6872fdf27fb016d" title="Store a credential in a ccache in the cache collection.">kim_credential_store()</a>. This function runs any KIM authentication plugins on the credential and if the plugins return successfully, creates a new ccache for the credential's client identity in the cache collection and stores the credential in that ccache. Any existing ccaches and credentials for that client identity will be overwritten. <a class="el" href="group__kim__credential__reference.html#g894c7144185b1112f6872fdf27fb016d" title="Store a credential in a ccache in the cache collection.">kim_credential_store()</a> may optionally return a kim_ccache_t object for the new ccache if you need to perform further operations on the new ccache.<p>
+Most of the time if you plan to store the credentials you are manipulating, you should use one of KIM ccache APIs. These functions perform the same operations except that they also call <a class="el" href="group__kim__credential__reference.html#g894c7144185b1112f6872fdf27fb016d" title="Store a credential in a ccache in the cache collection.">kim_credential_store()</a> any time the credential object changes. See <a class="el" href="kim_ccache_overview.html">KIM CCache Overview</a> for more information.<h2><a class="anchor" name="kim_credential_iterator_t">
+Iterating over the Credentials in a CCache</a></h2>
+KIM provides a simple iterator API for iterating over the credentials in a ccache. First, call <a class="el" href="group__kim__credential__iterator__reference.html#g4a1f55aa90053b8d59281a0f7d12590c" title="Get a credential iterator to enumerate credentials in a ccache.">kim_credential_iterator_create()</a> to obtain an iterator for a ccache. Then loop calling <a class="el" href="group__kim__credential__iterator__reference.html#ge7f5bc2cf2cc42c3e39fd4f945b474cd" title="Get the next credential in a ccache.">kim_credential_iterator_next()</a> until either you find the credential you are looking for or the API returns a NULL credential, indicating that there are no more credentials in the ccache. When you are done with the iterator, call <a class="el" href="group__kim__credential__iterator__reference.html#gb32e376af0b819cb3c9ca30f3db1c86b" title="Free memory associated with a credential iterator.">kim_credential_iterator_free()</a>.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd><a class="el" href="group__kim__credential__iterator__reference.html#ge7f5bc2cf2cc42c3e39fd4f945b474cd" title="Get the next credential in a ccache.">kim_credential_iterator_next()</a> returns credential objects which must be freed with <a class="el" href="group__kim__credential__reference.html#gb92567dd6b60e525f343cc401e1949aa" title="Free memory associated with a credential object.">kim_credential_free()</a> to avoid leaking memory.</dd></dl>
+<h2><a class="anchor" name="kim_credential_verify">
+Verifying Credentials</a></h2>
+When a program acquires TGT credentials for the purpose of authenticating itself to the machine it is running on, it is insufficient for the machine to assume that the caller is authorized just because it got credentials. Instead, the credentials must be verified using a key the local machine. The reason this is necessary is because an attacker can trick the machine into obtaining credentials from any KDC, including malicious ones with the same realm name as the local machine's realm. This exploit is called the Zanarotti attack.<p>
+In order to avoid the Zanarotti attack, the local machine must authenticate the process in the same way an application server would authenticate a client. Like an application server, the local machine must have its own identity in its realm and a keytab for that identity on its local disk. However, rather than forcing system daemons to use the network-oriented calls in the krb5 and GSS APIs, KIM provides the <a class="el" href="group__kim__credential__reference.html#g390a74d4d834fd1b5c2e7aebcd783e32" title="Verify a TGT credential.">kim_credential_verify()</a> API to verify credentials directly.<p>
+The most common reason for using <a class="el" href="group__kim__credential__reference.html#g390a74d4d834fd1b5c2e7aebcd783e32" title="Verify a TGT credential.">kim_credential_verify()</a> is user login. If the local machine wants to use Kerberos to verify the username and password provided by the user, it must call <a class="el" href="group__kim__credential__reference.html#g390a74d4d834fd1b5c2e7aebcd783e32" title="Verify a TGT credential.">kim_credential_verify()</a> on the credentials it obtains to make sure they are really from a KDC it trusts. Another common case is a server which is only using Kerberos internally. For example an LDAP or web server might use a username and password obtained over the network to get Kerberos credentials. In order to make sure they aren't being tricked into talking to the wrong KDC, these servers must also call <a class="el" href="group__kim__credential__reference.html#g390a74d4d834fd1b5c2e7aebcd783e32" title="Verify a TGT credential.">kim_credential_verify()</a>.<p>
+The Zanarotti attack is only a concern if the act of accessing the machine gives the process special access. Thus a managed cluster machine with Kerberos-authenticated networked home directories does not need to call <a class="el" href="group__kim__credential__reference.html#g390a74d4d834fd1b5c2e7aebcd783e32" title="Verify a TGT credential.">kim_credential_verify()</a>. Even though an attacker can log in as any user on the cluster machine, the attacker can't actually access any of the user's data or use any of their privileges because those are all authenticated via Kerberized application servers (and thus require actually having credentials for the real local realm).<p>
+<a class="el" href="group__kim__credential__reference.html#g390a74d4d834fd1b5c2e7aebcd783e32" title="Verify a TGT credential.">kim_credential_verify()</a> provides an option to return success even if the machine's host key is not present. This option exists for sites which have a mix of different machines, some of which are vulnerable to the Zanarotti attack and some are not. If this option is used, it is the responsiblity of the machine's maintainer to obtain a keytab for their machine if it needs one.<h2><a class="anchor" name="kim_credential_properties">
+Examining Credential Properties</a></h2>
+<ul>
+<li><a class="el" href="group__kim__credential__reference.html#gfab660faba5a6b2dc0f067dfe3e6235f" title="Get the client identity of a credential object.">kim_credential_get_client_identity()</a> returns the credential's client identity.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__credential__reference.html#g3bf00a133fbfe8fd3f9b6cba55ac6045" title="Get the service identity of a credential object.">kim_credential_get_service_identity()</a> returns the credential's service identity.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__credential__reference.html#gdf4e9b444c5050199476721a5cec67f7" title="Check if a credential is a ticket granting ticket.">kim_credential_is_tgt()</a> returns whether the credential is a TGT (ie: "ticket-granting ticket"). TGTs are credentials for the krbtgt service: a service identity of the form "krbtgt/&lt;REALM&gt;@&lt;REALM&gt;". These credentials allow the entity named by the client identity to obtain additional service credentials without resending shared secrets (such as a password) to the KDC. Kerberos uses TGTs to provide single sign-on authentication.</li>
+</ul>
+<ul>
+<li>kim_credential_is_valid() returns whether the credential is valid and if not why the credential is not valid.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__credential__reference.html#g48b41bc28845e209c41b087d28250e2a" title="Get the time when the credentials become valid.">kim_credential_get_start_time()</a> returns when the credential will become valid. Credentials may be "post-dated" which means that their lifetime starts sometime in the future. Note that when a post-dated credential's start time is reached, the credential must be validated. See <a class="el" href="kim_credential_overview.html#kim_credential_validate">Validating Credentials</a> for more information.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__credential__reference.html#g07fc4d11e42bf7d32be67fcac531c372" title="Get the time when the credentials will expire.">kim_credential_get_expiration_time()</a> returns when the credential will expire. Credentials are time limited by the lifetime of the credential. While you can request a credential of any lifetime, the KDC limits the credential lifetime to a administrator-defined maximum. Typically credential lifetime range from 10 to 21 hours.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__credential__reference.html#g1723a7c06e32ee954be214767bc55194" title="Get the time when the credentials will no longer be renewable.">kim_credential_get_renewal_expiration_time()</a> returns when the credential will no longer be renewable. Valid credentials may be renewed up until their renewal expiration time. Renewing credentials acquires a fresh set of credentials with a full lifetime without resending secrets to the KDC (such as a password). If credentials are not renewable, this function will return an error.</li>
+</ul>
+See <a class="el" href="group__kim__credential__reference.html">KIM Credential Reference Documentation</a> and <a class="el" href="group__kim__credential__iterator__reference.html">KIM Credential Iterator Reference Documentation</a> for information on specific APIs. <hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/kim_error_overview.html b/doc/kim/html/kim_error_overview.html
new file mode 100644 (file)
index 0000000..7f3d821
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Error Overview</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1><a class="anchor" name="kim_error_overview">KIM Error Overview</a></h1>An error object. Error objects consist of a machine readable error code for for programmatic error handling and a string describing the error. All KIM APIs return kim_errors with the exception of memory deallocation functions and the kim_error_t APIs which return pieces of a kim_error_t object.<p>
+Functions which return successfully will return <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a> (NULL). Because <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a> does not need to be freed, you may use if-ladders or goto-style error handling when calling the KIM APIs. In addition, <a class="el" href="group__kim__error__reference.html#gc523758c093a0bb7af18af781e9d182c" title="Free memory associated with an error.">kim_error_free()</a> may be called on <a class="el" href="group__kim__types__reference.html#g8712727bab9e6b02712a8a01285441d1">KIM_NO_ERROR</a>.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Certain kim_error_t objects are preallocated by the libraries avoid exacerbating existing problems while trying to report an error. For example, the out of memory error object is preallocated. It is safe to call <a class="el" href="group__kim__error__reference.html#gc523758c093a0bb7af18af781e9d182c" title="Free memory associated with an error.">kim_error_free()</a> on these errors, although the function may not actually free the object.</dd></dl>
+By providing an error object rather than a numeric code, the KIM APIs can tailor error strings to the circumstances of the error. So rather than returning error strings like "Client not found in Kerberos database", we can report "'user@REALM' not found in Kerberos database" while still providing the machine readable error KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN.<p>
+See <a class="el" href="group__kim__error__reference.html">KIM Error Reference Documentation</a> for information on specific APIs. <hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/kim_favorite_identities_overview.html b/doc/kim/html/kim_favorite_identities_overview.html
new file mode 100644 (file)
index 0000000..ae5529d
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Favorite Identities Overview</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1><a class="anchor" name="kim_favorite_identities_overview">KIM Favorite Identities Overview</a></h1><h2><a class="anchor" name="kim_favorite_identities_introduction">
+Introduction</a></h2>
+As Kerberos becomes more widespread, the number of possible Kerberos identities and realms a user might want to use will become very large. Sites may list hundreds of realms in their Kerberos configuration files. In addition, sites may wish to use DNS SRV records to avoid having to list all the realms they use in their Kerberos configuration. As a result, the list of realms in the Kerberos configuration may be exceedingly large and/or incomplete. Users may also use multiple identities from the same realm.<p>
+On platforms which use a GUI to acquire credentials, the KIM would like to to display a list of identities for the user to select from. Depending on what is appropriate for the platform, identities may be displayed in a popup menu or other list.<p>
+To solve this problem, the KIM maintains a list of favorite identities specifically for identity selection. This list is a set of unique identities in alphabetical order (as appropriate for the user's language localization).<p>
+On most platforms the list of favorite identities has both an administrator preference and a user preference which overrides it. The administrator preference exists only to initialize the favorite identities for new user accounts. Once the user modifies the list their favorite identities may diverge from the site favorite identities preference.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The location of user preferences and the semantics of preference synchronization is platform-specific. Where possible KIM will use platform-specific preference mechanisms.</dd></dl>
+Most callers will not need to use the favorite identities APIs. However if you are implementing your own graphical prompt callback or a credential management application, you may to view and/or edit the user's favorite identities.<h2><a class="anchor" name="kim_favorite_identities_edit">
+Viewing and Editing the Favorite Identities</a></h2>
+First, you need to acquire the Favorite Identities stored in the user's preferences using <a class="el" href="group__kim__preferences__reference.html#g88fba2fb35d73c5905eb21dcfad57578" title="Create a new preferences object from the current user&#39;s preferences.">kim_preferences_create()</a> and <a class="el" href="group__kim__preferences__reference.html#g4ce6a3e2d6b92eb335e7110bf43ef1ab" title="Get the user&#39;s preferred list of identities.">kim_preferences_get_favorite_identities()</a>. Or you can use <a class="el" href="group__kim__favorite__identities__reference.html#gce53e4a9c9edb531a9e7e26c37e0a5ea" title="Create a new favorite identities list.">kim_favorite_identities_create()</a> to get an empty identities list if you want to overwrite the user's identities list entirely. See <a class="el" href="kim_preferences_overview.html">KIM Preferences Overview</a> for more information on modifying the user's preferences.<p>
+Then use <a class="el" href="group__kim__favorite__identities__reference.html#g122519ef11a212852a6045f3f1929fdb" title="Get the number of identities in a favorite identities list.">kim_favorite_identities_get_number_of_identities()</a> and <a class="el" href="group__kim__favorite__identities__reference.html#gac6ce0a4eaa521fe77b7ae0dbe5097b9" title="Get the Nth identity in a favorite identities list.">kim_favorite_identities_get_identity_at_index()</a> to display the identities list. Use <a class="el" href="group__kim__favorite__identities__reference.html#gb298ff23c6e8363d0d34b4c9fdb986e3" title="Add an identity to a favorite identities list.">kim_favorite_identities_add_identity()</a> and <a class="el" href="group__kim__favorite__identities__reference.html#g30b32603f1fa3c1fbb275682620c5d83" title="Remove an identity from a identities list.">kim_favorite_identities_remove_identity()</a> to change which identities are in the identities list. Identities are always stored in alphabetical order and duplicate identities are not permitted, so when you add or remove a identity you should redisplay the entire list.<p>
+Once you are done editing the identities list, store changes in the user's preference file using <a class="el" href="group__kim__preferences__reference.html#g2c0ee43f07affdeeec76624777e662d7" title="Set the user&#39;s preferred list of identities.">kim_preferences_set_favorite_identities()</a> and <a class="el" href="group__kim__preferences__reference.html#gd4548bdc2cd52ad21d7a3e1bb60edba0" title="Synchronize a preferences object with the user&#39;s preferences, writing pending...">kim_preferences_synchronize()</a>.<p>
+See <a class="el" href="group__kim__favorite__identities__reference.html">KIM Favorite Identities Documentation</a> for information on specific APIs. <hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/kim_identity_overview.html b/doc/kim/html/kim_identity_overview.html
new file mode 100644 (file)
index 0000000..6a3aa16
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Identity Overview</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1><a class="anchor" name="kim_identity_overview">KIM Identity Overview</a></h1><h2><a class="anchor" name="kim_identity_introduction">
+Introduction</a></h2>
+Identities in Kerberos are named by "principals". These identies may be people (users) or services (a server running on a host). When Kerberos issues credentials which authenticate one identity to another, the identity being authenticated is called the "client identity" and the identity being authenticated to is called the "service identity".<p>
+Kerberos identities are made up of one or more components, as well as the Kerberos realm the entity belongs to. For client identities the first component is usually the client username (eg: "jdoe"). For service identities the first component is the name of the service (eg: "imap").<p>
+Kerberos identities have both a binary (opaque) representation and also a string representation. The string representation consists of the components separated by '/' followed by an '@' and then the realm. For example, the identity "jdoe/admin@EXAMPLE.COM" represents John Doe's administrator identity at the realm EXAMPLE.COM. Note that identity components may contain both '/' and '@' characters. When building a identity from its string representation these syntactic characters must be escaped with '\'.<h2><a class="anchor" name="kim_identity_create_display">
+Creating and Displaying Identities</a></h2>
+KIM Identities can be generated from components, their escaped string representation or from a krb5_principal. Once you have a KIM identity object, you can also get the component, string or krb5_principal representations back out:<p>
+<ul>
+<li><a class="el" href="group__kim__identity__reference.html#gd98419d88372078ff849426c9a9f177e" title="Create a identity from a realm and component strings.">kim_identity_create_from_components()</a> creates an identity object from a list of components. </li>
+<li><a class="el" href="group__kim__identity__reference.html#g6077350272922bf196e9a900e5989c41" title="Get the number of components of an identity.">kim_identity_get_number_of_components()</a> returns the number of components in an identity object. </li>
+<li><a class="el" href="group__kim__identity__reference.html#g1e58b572e65b9771bbf6dee51883d71b" title="Get the Nth component of an identity.">kim_identity_get_component_at_index()</a> return a component of an identity object. </li>
+<li><a class="el" href="group__kim__identity__reference.html#gb5c93208197c70e202209adf61b49a3b" title="Get the realm string of an identity.">kim_identity_get_realm()</a> returns the identity's realm.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__identity__reference.html#ga69ec4892b8a0dc7aa183803d0cb15fd" title="Create a identity from a string.">kim_identity_create_from_string()</a> generates an identity object from an escaped string representation. </li>
+<li><a class="el" href="group__kim__identity__reference.html#gf335ac09504999d0ad61390ede02c113" title="Get the string representation of a identity.">kim_identity_get_string()</a> returns the identity's escaped string representation. </li>
+<li><a class="el" href="group__kim__identity__reference.html#g3421872c143cc80b1bf220c34e26cc21" title="Get a human-readable string representation of an identity.">kim_identity_get_display_string()</a> returns a non-escaped string for display to the user. This string cannot be passed into <a class="el" href="group__kim__identity__reference.html#ga69ec4892b8a0dc7aa183803d0cb15fd" title="Create a identity from a string.">kim_identity_create_from_string()</a>.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__identity__reference.html#g1d5a5aba3dfdc1ff95ddd691b3f18c0a" title="Create an identity object from a krb5_principal.">kim_identity_create_from_krb5_principal()</a> generates an identity object from a krb5_principal object. </li>
+<li><a class="el" href="group__kim__identity__reference.html#g63b40561de2bfe2315990d1579d5db75" title="Get the krb5_principal representation of an identity.">kim_identity_get_krb5_principal()</a> returns a krb5_principal object for an identity object.</li>
+</ul>
+<ul>
+<li><a class="el" href="group__kim__identity__reference.html#g445ddb044181a68fdbad8a63e614add5" title="Get the gss_name_t representation of an identity.">kim_identity_get_gss_name()</a> returns a gss_name_t object for use with gss_acquire_cred().</li>
+</ul>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>If you need to know if two identity objects refer to the same entity, use <a class="el" href="group__kim__identity__reference.html#g8f166b041a651c4f7e2c0229f581a5d2" title="Compare identity objects for equivalency.">kim_identity_compare()</a>.</dd></dl>
+<h2><a class="anchor" name="kim_identity_selection">
+Choosing a Client Identity</a></h2>
+Unfortunately most of the time applications don't know what client identity to use. Users may have identities for multiple Kerberos realms, as well as multiple identities in a single realm (such as a user and administrator identity).<p>
+To solve this problem, <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a> takes information from the application in the form of a selection hints object and returns the best matching client identity, if one is available. See <a class="el" href="kim_selection_hints_overview.html">KIM Selection Hints Overview</a> for more information.<h2><a class="anchor" name="kim_identity_password">
+Changing a Identity's Password</a></h2>
+Many Kerberos sites use passwords for user accounts. Because passwords may be stolen or compromised, they must be frequently changed. KIM provides APIs to change the identity's password directly, and also handles changing the identity's password when it has expired.<p>
+<a class="el" href="group__kim__identity__reference.html#g493fd86d79650af831d52b8a14b2774c" title="Change the password for an identity.">kim_identity_change_password()</a> presents a user interface to obtain the old and new passwords from the user. kim_identity_change_password_with_passwords() takes the old and new passwords as input, but may still present a user interface if it needs to obtain additional information to authenticate.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Not all identities have a password. Some sites use certificates (pkinit) and in the future there may be other authentication mechanisms (eg: smart cards).</dd></dl>
+See <a class="el" href="group__kim__identity__reference.html">KIM Identity Reference Documentation</a> for information on specific APIs. <hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/kim_options_overview.html b/doc/kim/html/kim_options_overview.html
new file mode 100644 (file)
index 0000000..bd7ad84
--- /dev/null
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Options Overview</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1><a class="anchor" name="kim_options_overview">KIM Options Overview</a></h1><h2><a class="anchor" name="kim_options_introduction">
+Introduction</a></h2>
+Kerberos Identity Management Options (kim_options_t) allows you to control how the Kerberos library obtains credentials. When the options structure is initialized with <a class="el" href="group__kim__options__reference.html#g4d00f4d070409ea90aa69a8ac5cb47cf" title="Create new options with default values.">kim_options_create()</a>, each option is filled in with a default value which can then be modified with the kim_options_set_*() APIs. If you only want to use the default values, you may pass <a class="el" href="group__kim__types__reference.html#ge0384d3f6d9108e3ec84e322c61235a7">KIM_OPTIONS_DEFAULT</a> into any KIM function that takes a kim_options_t.<p>
+KIM options fall into two major categories: options for controlling how credentials are acquired and options for controlling what properties the newly acquired credentials will have:<h2><a class="anchor" name="kim_options_credential_acquisition">
+Options for Controlling Credential Acquisition</a></h2>
+In order to acquire credentials, Kerberos needs to obtain one or more secrets from the user. These secrets may be a certificate, password, SecurID pin, or information from a smart card. If obtaining the secret requires interaction with the user, the Kerberos libraries call a "prompter callback" to display a dialog or command line prompt to request information from the user. If you want to provide your own custom dialogs or command line prompts, the KIM APIs provide a mechanism for replacing the default prompt callbacks with your own.<h3><a class="anchor" name="kim_options_custom_prompt_callback">
+Providing a Custom Prompt Callback</a></h3>
+All secrets are obtained from the user through a <a class="el" href="group__kim__types__reference.html#g3dc87ed0aa0847e5af0e4f410ba6d7dd">kim_prompt_callback_t</a>. By default, options use <a class="el" href="group__kim__types__reference.html#gd9cfd6a66e9bdcde30a285dc350eb370">kim_prompt_callback_default</a>, which presents an expanding dialog to request information from the user, or if no graphical access is available, a command line prompt.<p>
+KIM also provides three other callbacks: <a class="el" href="group__kim__types__reference.html#gcfbe7cd3e8716d58713a8475f6909908">kim_prompt_callback_gui</a> only presents a dialog and returns an error if there is no graphical access. <a class="el" href="group__kim__types__reference.html#g4b36d86709701623eb73e6d0b95d1dd4">kim_prompt_callback_cli</a> only presents a command line interface and returns an error if there is no controlling terminal available. <a class="el" href="group__kim__types__reference.html#g9699effd6079690c8b744ff96dff1914">kim_prompt_callback_none</a> always returns an error.<p>
+Using <a class="el" href="group__kim__options__reference.html#gb3342e60ebb03f901307fd605af5a684" title="Set the prompt callback for obtaining information from the user.">kim_options_set_prompt_callback()</a>, you can change the prompt callback to one of the above callbacks or a callback you have defined yourself. Callbacks are called in a loop, one for each prompt. Because network traffic may occur between calls to the prompt callback, your prompt interface should support time passing between calls to the prompter. If you are defining a callback yourself, you should also set your own options data with <a class="el" href="group__kim__options__reference.html#gf8836b9f6f8a8d4350a781b85f4017e5" title="Set caller-specific data for use in library callbacks.">kim_options_set_data()</a> for storing state between calls. Options data is a caller defined pointer value -- the Kerberos libaries make no use of it.<h3><a class="anchor" name="kim_options_preset_prompts">
+Prefetching Prompt Responses</a></h3>
+Sometimes you may have already collected some of the information needed to acquire Kerberos credentials. Rather than creating a prompt callback, you may also prefetch responses to the options directly with <a class="el" href="group__kim__options__reference.html#g55acd6378c0bdf5c534b9535a534c9bd" title="Set a response for a prompt for use when acquiring credentials.">kim_options_set_prompt_response()</a>. Once you have associated your response with a given prompt type, the Kerberos libraries will use this response for the first prompt of that type rather than calling the prompt callback to obtain it.<p>
+Note that even if you prefetch responses, the prompt callback may still be called if you did not provide all the information required for the identity. You may specify the <a class="el" href="group__kim__types__reference.html#g9699effd6079690c8b744ff96dff1914">kim_prompt_callback_none</a> prompt callback to prevent prompting from occuring entirely, however, doing so will tie your application to a particular Kerberos configuration. For example, if your application assumes that all identities only require a password, it will not be able to acquire credentials at sites using SecurID pins.<h2><a class="anchor" name="kim_options_credential_properties">
+Options for Controlling Credential Properties</a></h2>
+Kerberos credentials have a number of different properties which can be requested when credentials are acquired. These properties control when and for how long the credentials are valid and what you can do with them.<p>
+Note that setting these properties in the KIM options only changes what the Kerberos libraries <em>request</em> from the KDC. The KDC itself may choose not to honor your requested properties if they violate the site security policy. For example, most sites place an upper bound on how long credentials may be valid. If you request a credential lifetime longer than this upper bound, the KDC may return credentials with a shorter lifetime than you requested.<h3><a class="anchor" name="kim_options_lifetimes">
+Credential Lifetime</a></h3>
+Kerberos credentials have start time and a lifetime during which they are valid. Once the lifetime has passed, credentials "expire" and can no longer be used.<p>
+The requested credential start time can be set with <a class="el" href="group__kim__options__reference.html#g2193de68adcec22df88069d86e2a145c" title="Set the date when a credential should become valid.">kim_options_set_start_time()</a> and examined with <a class="el" href="group__kim__options__reference.html#g587539ca61a06b5730ed688f914e9fa6" title="Get the date when a credential should become valid.">kim_options_get_start_time()</a>. The requested credential lifetime can be set with <a class="el" href="group__kim__options__reference.html#ga6058acd016b6387be19e0127606fcb1" title="Set the duration during which a credential should be valid.">kim_options_set_lifetime()</a> and examined with <a class="el" href="group__kim__options__reference.html#gc179cfff2a29eb0bbe4ac0b6dab8afad" title="Get the duration during which an acquired credential should be valid.">kim_options_get_lifetime()</a>.<h3><a class="anchor" name="kim_options_renewable">
+Renewable Credentials</a></h3>
+Credentials with very long lifetimes are more convenient since the user does not have authenticate as often. Unfortunately they are also a higher security risk: if credentials are stolen they can be used until they expire. Credential renewal exists to compromise between these two conflicting goals.<p>
+Renewable credentials are TGT credentials which can be used to obtain new TGT credentials without reauthenticating. By regularly renewing credentials the KDC has an opportunity to check to see if the client's credentials have been reported stolen and refuse to renew them. Renewable credentials have a "renewal lifetime" during which credentials can be renewed. This lifetime is relative to the original credential start time. If credentials are renewed shortly before the end of the renewal lifetime, their lifetime will be capped to the end of the renewal lifetime.<p>
+Note that credentials must be valid to be renewed and therefore may not be an appropriate solution for all use cases. Sites which use renewable credentials often create helper processes running as the user which will automatically renew the user's credentials when they get close to expiration.<p>
+Use <a class="el" href="group__kim__options__reference.html#g47a49dca419a7d7f1d79c5acd1f16b7a" title="Set whether or not to request a renewable credential.">kim_options_set_renewable()</a> to change whether or not the Kerberos libraries request renewable credentials and <a class="el" href="group__kim__options__reference.html#gefc2785f119f04379b20d381a79a45af" title="Get whether or not to request a renewable credential.">kim_options_get_renewable()</a> to find out the current setting. Use <a class="el" href="group__kim__options__reference.html#g035bd3841ff3581922cba91b043cd945" title="Set the duration during which a valid credential should be renewable.">kim_options_set_renewal_lifetime()</a> to change the requested renewal lifetime and <a class="el" href="group__kim__options__reference.html#g2a49d92912b6270357788436d2c6fd8f" title="Get the duration during which a valid credential should be renewable.">kim_options_get_renewal_lifetime()</a> to find out the current value.<h3><a class="anchor" name="kim_options_addressless">
+Addressless Credentials</a></h3>
+Traditionally Kerberos used the host's IP address as a mechanism to restrict the user's credentials to a specific host, thus making it harder to use stolen credentials. When authenticating to a remote service with credentials containing addresses, the remote service verifies that the client's IP address is one of the addresses listed in the credential. Unfortunately, modern network technologies such as NAT rewrite the IP address in transit, making it difficult to use credentials with addresses in them. As a result, most Kerberos sites now obtain addressless credentials.<p>
+Use <a class="el" href="group__kim__options__reference.html#g673640ffd337c815cbc71cbef32b4156" title="Set whether or not to request an addressless credential.">kim_options_set_addressless()</a> to change whether or not the Kerberos libraries request addressless credentials. Use <a class="el" href="group__kim__options__reference.html#g8308f996ae22cad938ec4a4782a01322" title="Get whether or not to request an addressless credential.">kim_options_get_addressless()</a> to find out the current setting.<h3><a class="anchor" name="kim_options_forwardable">
+Forwardable Credentials</a></h3>
+Forwardable credentials are TGT credentials which can be forwarded to a service you have authenticated to. If the credentials contain IP addresses, the addresses are changed to reflect the service's IP address. Credential forwarding is most commonly used for Kerberos-authenticated remote login services. By forwarding TGT credentials through the remote login service, the user's credentials will appear on the remote host when the user logs in.<p>
+The forwardable flag only applies to TGT credentials.<p>
+Use <a class="el" href="group__kim__options__reference.html#gc055fb95bb39e93b276dc2380632cd6d" title="Set whether or not to request a forwardable credential.">kim_options_set_forwardable()</a> to change whether or not the Kerberos libraries request forwardable credentials. Use <a class="el" href="group__kim__options__reference.html#g6dc2e2ec0448d28ce847fc8880ce8561" title="Get whether or not to request a forwardable credential.">kim_options_get_forwardable()</a> to find out the current setting.<h3><a class="anchor" name="kim_options_proxiable">
+Proxiable Credentials</a></h3>
+Proxiable credentials are similar to forwardable credentials except that instead of forwarding the a TGT credential itself, a service credential is forwarded instead. Using proxiable credentials, a user can permit a service to perform a specific task as the user using one of the user's service credentials.<p>
+Like forwardability, the proxiable flag only applies to TGT credentials. Unlike forwarded credentials, the IP address of proxiable credentials are not modified for the service when being proxied. This can be solved by also requesting addressless credentials.<p>
+Use <a class="el" href="group__kim__options__reference.html#g4ab6093bff1c28196e2886e146d5e0d0" title="Set whether or not to request a proxiable credential.">kim_options_set_proxiable()</a> to change whether or not the Kerberos libraries request proxiable credentials. Use <a class="el" href="group__kim__options__reference.html#ga36c948940f89e1cca4477b3d1869c84" title="Get whether or not to request a proxiable credential.">kim_options_get_proxiable()</a> to find out the current setting.<h3><a class="anchor" name="kim_options_service_name">
+Service Name</a></h3>
+Normally users acquire TGT credentials (ie "ticket granting tickets") and then use those credentials to acquire service credentials. This allows Kerberos to provide single sign-on while still providing mutual authentication to services. However, sometimes you just want an initial credential for a service. KIM options allows you to set the service name with <a class="el" href="group__kim__options__reference.html#g5914bd9caf4ba781c723d152bf5ddc05" title="Set the service name to request a credential for.">kim_options_set_service_name()</a> and query it with <a class="el" href="group__kim__options__reference.html#ge74278a56626df2ad5a60ed61d8a1836" title="Get the service name to request a credential for.">kim_options_get_service_name()</a>.<p>
+See <a class="el" href="group__kim__options__reference.html">KIM Options Reference Documentation</a> for information on specific APIs. <hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/kim_preferences_overview.html b/doc/kim/html/kim_preferences_overview.html
new file mode 100644 (file)
index 0000000..b388729
--- /dev/null
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Preferences Overview</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1><a class="anchor" name="kim_preferences_overview">KIM Preferences Overview</a></h1><h2><a class="anchor" name="kim_preferences_introduction">
+Introduction</a></h2>
+In addition to the site preferences stored in the Kerberos configuration, users may also want to have their own personal preferences for controlling credential acquisition. As a result, KIM provides user preferences for initial credential options and user interface behavior such as the default client identity and the favorite identities list.<h2><a class="anchor" name="kim_preferences_edit">
+Viewing and Editing the Preferences</a></h2>
+In order to view and edit the user's preferences, call <a class="el" href="group__kim__preferences__reference.html#g88fba2fb35d73c5905eb21dcfad57578" title="Create a new preferences object from the current user&#39;s preferences.">kim_preferences_create()</a> to acquire a preferences object containing the user's preferences. You can examine preferences with the functions starting with "kim_preferences_get_" and change preferences with the functions starting with "kim_preferences_set_". Once you are done making changes, you can write changes back out to the user's preferences with <a class="el" href="group__kim__preferences__reference.html#gd4548bdc2cd52ad21d7a3e1bb60edba0" title="Synchronize a preferences object with the user&#39;s preferences, writing pending...">kim_preferences_synchronize()</a>.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The location of user preferences and the semantics of preference synchronization is platform-specific. Where possible KIM will use platform-specific preference mechanisms.</dd></dl>
+<h2><a class="anchor" name="kim_preferences_options">
+Initial Credential Options Preferences</a></h2>
+KIM provides user preferences for initial credential options. These are the options <a class="el" href="group__kim__options__reference.html#g4d00f4d070409ea90aa69a8ac5cb47cf" title="Create new options with default values.">kim_options_create()</a> will use when creating a new KIM options object. They are also the options specified by KIM_OPTIONS_DEFAULT. You can view and edit the initial credential options using <a class="el" href="group__kim__preferences__reference.html#g634a03cb1109362db8e4024b055afa71" title="Get the user&#39;s preferred options.">kim_preferences_get_options()</a> and <a class="el" href="group__kim__preferences__reference.html#ge7f0f13dd6d50e7730205abddb1a0127" title="Set the user&#39;s preferred options.">kim_preferences_set_options()</a>.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Not all credential options in the kim_options_t object have corresponding user preferences. For example, the prompt callback function is not stored in the user preferences since it has no meaning outside of the current application. Some options which are not currently stored in the preferences may be stored there in the future.</dd></dl>
+If you are implementing a user interface for credentials acquisition, you should be aware that KIM has a user preference to manage the initial credential options preferences. If the user successfully acquires credentials with non-default options and <a class="el" href="group__kim__preferences__reference.html#g804eb8078e5b5a1c73e7e27b0efdb66d" title="Get whether or not to remember the last options the user used to acquire a credential...">kim_preferences_get_remember_options()</a> is set to TRUE, you should store the options used to get credentials with <a class="el" href="group__kim__preferences__reference.html#ge7f0f13dd6d50e7730205abddb1a0127" title="Set the user&#39;s preferred options.">kim_preferences_set_options()</a>.<h2><a class="anchor" name="kim_preferences_client_identity">
+Client Identity Preferences</a></h2>
+KIM also provides user preferences for the default client identity. This identity is used whenever KIM needs to display a graphical dialog for credential acquisition but does not know what client identity to use. You can view and edit the default client identity using <a class="el" href="group__kim__preferences__reference.html#ga7bf4c87813bee177d2485d827c59943" title="Get the user&#39;s preferred client identity.">kim_preferences_get_client_identity()</a> and <a class="el" href="group__kim__preferences__reference.html#g70806a8dfdde27746f8c161b4f845ecb" title="Set the user&#39;s preferred client identity.">kim_preferences_set_client_identity()</a>.<p>
+If you are implementing a user interface for credentials acquisition, you should be aware that KIM has a user preference to manage the client identity preferences. If the user successfully acquires credentials with non-default options and <a class="el" href="group__kim__preferences__reference.html#gd24a4831e3664ae2ec69b2de2ccfca50" title="Get whether or not to remember the last client identity the user acquired a credential...">kim_preferences_get_remember_client_identity()</a> is set to TRUE, you should store the client identity for which credentials were acquired using <a class="el" href="group__kim__preferences__reference.html#g70806a8dfdde27746f8c161b4f845ecb" title="Set the user&#39;s preferred client identity.">kim_preferences_set_client_identity()</a>.<h2><a class="anchor" name="kim_preferences_favorite_identities">
+Favorite Identities Preferences</a></h2>
+When presenting a graphical interface for credential acquisition, KIM may need to display a list of identities for the user to select from. This list is generated by the user's favorite identities preference. You can view and edit the favorite identities preference using <a class="el" href="group__kim__preferences__reference.html#g4ce6a3e2d6b92eb335e7110bf43ef1ab" title="Get the user&#39;s preferred list of identities.">kim_preferences_get_favorite_identities()</a> and <a class="el" href="group__kim__preferences__reference.html#g2c0ee43f07affdeeec76624777e662d7" title="Set the user&#39;s preferred list of identities.">kim_preferences_set_favorite_identities()</a>. Please see the <a class="el" href="kim_favorite_identities_overview.html">KIM Favorite Identities Overview</a> for more information.<p>
+See <a class="el" href="group__kim__preferences__reference.html">KIM Preferences Documentation</a> for information on specific APIs. <hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/kim_selection_hints_overview.html b/doc/kim/html/kim_selection_hints_overview.html
new file mode 100644 (file)
index 0000000..d9be9d2
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM Selection Hints Overview</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1><a class="anchor" name="kim_selection_hints_overview">KIM Selection Hints Overview</a></h1><h2><a class="anchor" name="kim_selection_hints_introduction">
+Introduction</a></h2>
+Most users belong to multiple organizations and thus need to authenticate to multiple Kerberos realms. Traditionally Kerberos sites solved this problem by setting up a cross-realm relationship, which allowed the user to use TGT credentials for their client identity in one realm to obtain credentials in another realm via cross-realm authentication. As a result users could acquire credentials for a single client identity and use them everywhere.<p>
+Setting up cross-realm requires that realms share a secret, so sites must coordinate with one another to set up a cross-realm relationship. In addition, sites must set up authorization policies for users from other realms. As Kerberos becomes increasingly wide-spread, many realms will not have cross-realm relationships, and users will need to manually obtain credentials for their client identity at each realm (eg: "user@BANK.COM", "user@UNIVERSITY.EDU", etc). As a result, users will often have multiple credentials caches, one for each client identity.<p>
+Unfortunately this presents a problem for applications which need to obtain service credentials. Which client identity should they use? Rather than having each application to manually search the cache collection, KIM provides a selection hints API for choosing the best client identity. This API is intended to simplify the process of choosing credentials and provide consistent behavior across all applications.<p>
+Searching the cache collection for credentials may be expensive if there are a large number of caches. If credentials for the client identity are expired or not present, KIM may also wish to prompt the user for new credentials for the appropriate client identity. As a result, applications might want to remember which client identity worked in the past and always request credentials using that identity.<h2><a class="anchor" name="kim_selection_hints_creating">
+Creating KIM Selection Hints</a></h2>
+A KIM selection hints object consists of an application identifier and one or more pieces of information about the service the client application will be contacting. The application identifier is used by user preferences to control how applications share cache entries. It is important to be consistent about what application identifier you provide. Java-style identifiers are recommended to avoid collisions.<h2><a class="anchor" name="kim_selection_hints_searching">
+Selection Hint Search Behavior</a></h2>
+When using selection hints to search for an appropriate client identity, KIM uses a consistent hint search order. This allows applications to specify potentially contradictory information without preventing KIM from locating a single ccache. In addition the selection hint search order may change, especially if more hints are added.<p>
+As a result, callers are encouraged to provide all relevant search hints, even if only a subset of those search hints are necessary to get reasonable behavior in the current implementation. Doing so will provide the most user-friendly selection experience.<p>
+Currently the search order looks like this:<p>
+<ul>
+<li><b>Service Identity</b> The client identity which has obtained a service credential for this service identity. </li>
+<li><b>Server</b> A client identity which has obtained a service credential for this server. </li>
+<li><b>Service Realm</b> A client identity which has obtained a service credential for this realm. </li>
+<li><b>Service</b> A client identity which has obtained a service credential for this service. </li>
+<li><b>Client Realm</b> A client identity in this realm. </li>
+<li><b>User</b> A client identity whose first component is this user string.</li>
+</ul>
+For example, if you specify a service identity and a credential for that identity already exists in the ccache collection, KIM may use that ccache, even if your user and client realm entries in the selection hints would lead it to choose a different ccache. If no credentials for the service identity exist then KIM will fall back on the user and realm hints.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Due to performance and information exposure concerns, currently all searching is done by examining the cache collection. In the future the KIM may also make network requests as part of its search algorithm. For example it might check to see if the TGT credentials in each ccache can obtain credentials for the service identity specified by the selection hints.</dd></dl>
+<h2><a class="anchor" name="kim_selection_hints_selecting">
+Selecting an Identity Using Selection Hints</a></h2>
+Once you have provided search criteria for selecting an identity, use <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a> to obtain an identity object. You can then use <a class="el" href="group__kim__identity__reference.html#g445ddb044181a68fdbad8a63e614add5" title="Get the gss_name_t representation of an identity.">kim_identity_get_gss_name()</a> to obtain a gss_name_t for use in gss_acquire_cred() or use <a class="el" href="group__kim__ccache__reference.html#gfc1faee53dbb4b1dab1a5daf8f685f64" title="Find a ccache for a client identity in the cache collection.">kim_ccache_create_from_client_identity()</a> to obtain a ccache containing credentials for the identity.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd><a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a> obtains an identity based on the current state of the selection hints object. If you change the selection hints object you must call <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a> again.</dd></dl>
+<h2><a class="anchor" name="kim_selection_hints_caching">
+Selection Hint Caching Behavior</a></h2>
+In addition to using selection hints to search for an appropriate client identity, KIM can also use them to remember which client identity worked. KIM maintains a per-user cache mapping selection hints to identities so that applications do not have to maintain their own caches or present user interface for selecting which cache to use.<p>
+When <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a> is called KIM looks up in the cache and returns the identity which the selection hints map to. If there is not a preexisting cache entry for the selection hints then <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a> will search for an identity and prompt the user if it cannot find an appropriate one.<p>
+If the client identity returned by KIM authenticates and passes authorization checks, you should tell KIM to cache the identity by calling <a class="el" href="group__kim__selection__hints__reference.html#ga35356161afa853700734a73ad9e027b" title="Add an entry for the selection hints to the selection hints cache, replacing any...">kim_selection_hints_remember_identity()</a>. This will create a cache entry for the mapping between your selection hints and the identity so that subsequent calls to <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a> do not need to prompt the user.<p>
+If the client identity returned by KIM fails to authenticate or fails authorization checks, you must call <a class="el" href="group__kim__selection__hints__reference.html#g4550fb53331ba7424853bde07834aa76" title="Remove an entry for the selection hints from the selection hints cache.">kim_selection_hints_forget_identity()</a> to remove any mapping that already exists. After this function is called, future calls to <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a> will search for an identity again. You may also wish to call this function if the user changes your application preferences such that the identity might be invalidated.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>It is very important that you call <a class="el" href="group__kim__selection__hints__reference.html#g4550fb53331ba7424853bde07834aa76" title="Remove an entry for the selection hints from the selection hints cache.">kim_selection_hints_forget_identity()</a> if your application fails to successfully establish a connection with the server. Otherwise the user can get "stuck" using the same non-working identity if they chose the wrong one accidentally or if their identity information changes. Because only your application understands the authorization checksof the protocol it uses, KIM cannot tell whether or not the identity worked.</dd></dl>
+If you wish to search and prompt for an identity without using the cached mappings, you can turn off the cached mapping lookups using <a class="el" href="group__kim__selection__hints__reference.html#gd5cf3d5ca0c2d902dbecd07d145631d8" title="Set whether or not KIM will use cached mappings for this selection hints object.">kim_selection_hints_set_remember_identity()</a>. This is not recommended for most applications since it will result in a lot of unnecessary searching and prompting for identities.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Because cache entries key off of selection hints, it is important to always specify the same hints when contacting a particular service. Otherwise KIM will not always find the cache entries.</dd></dl>
+<h2><a class="anchor" name="kim_selection_hints_prompt">
+Selection Hint Prompting Behavior</a></h2>
+If valid credentials for identity in the selection hints cache are unavailable or if no identity could be found using searching or caching when <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d" title="Choose a client identity based on selection hints.">kim_selection_hints_get_identity()</a> is called, KIM may present a GUI to ask the user to select an identity or acquire credentials for an identity.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Because of the caching behavior described above the user will only be prompted to choose an identity when setting up the application or when their identity stops working.</dd></dl>
+In order to let the user know why Kerberos needs their assistance, KIM displays the name of the application which requested the identity selection. Unfortunately, some platforms do not provide a runtime mechanism for determining the name of the calling process. If your application runs on one of these platforms (or is cross-platform) you should provide a localized version of its name with <a class="el" href="group__kim__selection__hints__reference.html#g9904e1b83a1082fbb0752853b3c6ece0" title="Set the application name for use in user interaction.">kim_selection_hints_set_application_name()</a>. You can check what name will be used with <a class="el" href="group__kim__selection__hints__reference.html#ge254849dd3bf81a295e1e9054220002b" title="Get the application name for use in user interaction.">kim_selection_hints_get_application_name()</a>.<p>
+In many cases a single application may select different identities for different purposes. For example an email application might use different identities to check mail for different accounts. If your application has this property you may need to provide the user with a localized string describing how the identity will be used. You can specify this string with <a class="el" href="group__kim__selection__hints__reference.html#gca2b7379231b656f6ee2df551bb7972e" title="Get the strings used to prompt the user to select the identity.">kim_selection_hints_get_explanation()</a>. You can find out what string will be used with <a class="el" href="group__kim__selection__hints__reference.html#gdde1a442f7ab9913eed7855f06575f92" title="Set the strings used to prompt the user to select the identity.">kim_selection_hints_set_explanation()</a>.<p>
+Since the user may choose to acquire credentials when selection an identity, KIM also provides <a class="el" href="group__kim__selection__hints__reference.html#gae79cd94d2184c8ffe4c7144205fd813" title="Set the options which will be used if credentials need to be acquired.">kim_selection_hints_set_options()</a> to set what credential acquisition options are used. <a class="el" href="group__kim__selection__hints__reference.html#ge00f6f57e9d24d2e62694d72d43148a4" title="Get the options which will be used if credentials need to be acquired.">kim_selection_hints_get_options()</a> returns the options which will be used.<p>
+If you need to disable user interaction, use <a class="el" href="group__kim__selection__hints__reference.html#g8a4f9300250b27fec9b0da4b52f0a781" title="Set whether or not KIM may interact with the user to select an identity.">kim_selection_hints_set_allow_user_interaction()</a>. Use <a class="el" href="group__kim__selection__hints__reference.html#g255a01cf3f1e31390b213a802f8b27b4" title="Get whether or not KIM may interact with the user to select an identity.">kim_selection_hints_get_allow_user_interaction()</a> to find out whether or not user interaction is enabled. User interaction is enabled by default.<p>
+See <a class="el" href="group__kim__selection__hints__reference.html">KIM Selection Hints Reference Documentation</a> for information on specific APIs. <hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/kim_string_overview.html b/doc/kim/html/kim_string_overview.html
new file mode 100644 (file)
index 0000000..202d2e6
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: KIM String Overview</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1><a class="anchor" name="kim_string_overview">KIM String Overview</a></h1>A UTF8 string.<p>
+Memory management routines are provided for runtime consistency on operating systems with shared libraries and multiple runtimes.<p>
+See <a class="el" href="group__kim__string__reference.html">KIM String Reference Documentation</a> for information on specific APIs. <hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:19 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/modules.html b/doc/kim/html/modules.html
new file mode 100644 (file)
index 0000000..ee3e888
--- /dev/null
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Kerberos Identity Management: Module Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<h1>Kerberos Identity Management Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__kim__ccache__iterator__reference.html">KIM CCache Iterator Reference Documentation</a>
+<li><a class="el" href="group__kim__ccache__reference.html">KIM CCache Reference Documentation</a>
+<li><a class="el" href="group__kim__credential__iterator__reference.html">KIM Credential Iterator Reference Documentation</a>
+<li><a class="el" href="group__kim__credential__reference.html">KIM Credential Reference Documentation</a>
+<li><a class="el" href="group__kim__error__reference.html">KIM Error Reference Documentation</a>
+<li><a class="el" href="group__kim__identity__reference.html">KIM Identity Reference Documentation</a>
+<li><a class="el" href="group__kim__options__reference.html">KIM Options Reference Documentation</a>
+<li><a class="el" href="group__kim__favorite__identities__reference.html">KIM Favorite Identities Documentation</a>
+<li><a class="el" href="group__kim__preferences__reference.html">KIM Preferences Documentation</a>
+<li><a class="el" href="group__kim__selection__hints__reference.html">KIM Selection Hints Reference Documentation</a>
+<li><a class="el" href="group__kim__string__reference.html">KIM String Reference Documentation</a>
+<li><a class="el" href="group__kim__types__reference.html">KIM Types and Constants</a>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 7 15:22:20 2008 for Kerberos Identity Management by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/doc/kim/html/tab_b.gif b/doc/kim/html/tab_b.gif
new file mode 100644 (file)
index 0000000..0d62348
Binary files /dev/null and b/doc/kim/html/tab_b.gif differ
diff --git a/doc/kim/html/tab_l.gif b/doc/kim/html/tab_l.gif
new file mode 100644 (file)
index 0000000..9b1e633
Binary files /dev/null and b/doc/kim/html/tab_l.gif differ
diff --git a/doc/kim/html/tab_r.gif b/doc/kim/html/tab_r.gif
new file mode 100644 (file)
index 0000000..ce9dd9f
Binary files /dev/null and b/doc/kim/html/tab_r.gif differ
diff --git a/doc/kim/html/tabs.css b/doc/kim/html/tabs.css
new file mode 100644 (file)
index 0000000..c37faaf
--- /dev/null
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+   float            : left;
+   width            : 100%;
+   background       : url("tab_b.gif") repeat-x bottom;
+   margin-bottom    : 4px;
+}
+
+DIV.tabs UL
+{
+   margin           : 0px;
+   padding-left     : 10px;
+   list-style       : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+   display          : inline;
+   margin           : 0px;
+   padding          : 0px;
+}
+
+DIV.tabs FORM
+{
+   float            : right;
+}
+
+DIV.tabs A
+{
+   float            : left;
+   background       : url("tab_r.gif") no-repeat right top;
+   border-bottom    : 1px solid #84B0C7;
+   font-size        : x-small;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+DIV.tabs A:hover
+{
+   background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+       color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+   float            : left;
+   display          : block;
+   background       : url("tab_l.gif") no-repeat left top;
+   padding          : 5px 9px;
+   white-space      : nowrap;
+}
+
+DIV.tabs INPUT
+{
+   float            : right;
+   display          : inline;
+   font-size        : 1em;
+}
+
+DIV.tabs TD
+{
+   font-size        : x-small;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+   background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+   background-position: 100% -150px;
+   border-width     : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+   background-position: 0% -150px;
+   padding-bottom   : 6px;
+}
+
+DIV.nav
+{
+   background       : none;
+   border           : none;
+   border-bottom    : 1px solid #84B0C7;
+}