From 4269d4e6dc55b3f0560ccc08883b807bebfaff89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Wed, 19 Oct 2005 07:35:19 +0000 Subject: [PATCH] Add krb5_cc_start_seq_get and an example. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16182 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/krb5_ccache.3 | 59 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/lib/krb5/krb5_ccache.3 b/lib/krb5/krb5_ccache.3 index fc69b8cf3..98391b572 100644 --- a/lib/krb5/krb5_ccache.3 +++ b/lib/krb5/krb5_ccache.3 @@ -64,7 +64,8 @@ .Nm krb5_cc_retrieve_cred , .Nm krb5_cc_set_default_name , .Nm krb5_cc_set_flags , -.Nm krb5_cc_store_cred , +.Nm krb5_cc_start_seq_get , +.Nm krb5_cc_store_cred .Nd mange credential cache .Sh LIBRARY Kerberos 5 Library (libkrb5, -lkrb5) @@ -192,6 +193,12 @@ Kerberos 5 Library (libkrb5, -lkrb5) .Fa "const char *name" .Fc .Ft krb5_error_code +.Fo krb5_cc_start_seq_get +.Fa "krb5_context context" +.Fa "const krb5_ccache id" +.Fa "krb5_cc_cursor *cursor" +.Fc +.Ft krb5_error_code .Fo krb5_cc_store_cred .Fa "krb5_context *context" .Fa "krb5_ccache id" @@ -408,6 +415,11 @@ in .Fa creds . Return 0 or an error code. .Pp +.Fn krb5_cc_start_seq_get +initiates the +.Li krb5_cc_cursor +structure to be used for iteration over the credential cache. +.Pp .Fn krb5_cc_next_cred retrieves the next cred pointed to by .Fa ( id , @@ -431,6 +443,51 @@ and .Fn krb5_cc_end_seq_get Destroys the cursor .Fa cursor . +.Sh EXAMPLE +This is a minimalistic version of +.Nm klist . +.Pp +.Bd -literal +#include + +int +main (int argc, char **argv) +{ + krb5_context context; + krb5_cc_cursor cursor; + krb5_error_code ret; + krb5_ccache id; + krb5_creds creds; + + if (krb5_init_context (&context) != 0) + errx(1, "krb5_context"); + + ret = krb5_cc_default (context, &id); + if (ret) + krb5_err(context, 1, ret, "krb5_cc_default"); + + ret = krb5_cc_start_seq_get(context, id, &cursor); + if (ret) + krb5_err(context, 1, ret, "krb5_cc_start_seq_get"); + + while((ret = krb5_cc_next_cred(context, id, &cursor, &creds)) == 0){ + char *principal; + + krb5_unparse_name_short(context, creds.server, &principal); + printf("principal: %s\\n", principal); + free(principal); + krb5_free_cred_contents (context, &creds); + } + ret = krb5_cc_end_seq_get(context, id, &cursor); + if (ret) + krb5_err(context, 1, ret, "krb5_cc_end_seq_get"); + + krb5_cc_close(context, id); + + krb5_free_context(context); + return 0; +} +.Ed .Sh SEE ALSO .Xr krb5 3 , .Xr krb5.conf 5 ,