diff options
| author | Greg Hudson <ghudson@mit.edu> | 2011-10-06 20:08:29 +0000 |
|---|---|---|
| committer | Greg Hudson <ghudson@mit.edu> | 2011-10-06 20:08:29 +0000 |
| commit | f80666416e33efe29bfb1ffc711d482d67fc0873 (patch) | |
| tree | 419ebe99016559fc1f5e3d7726a48c4eb1d07079 | |
| parent | d9ed152c4ba1fc5b8d2ca6f894e25e449d685c0c (diff) | |
| download | krb5-f80666416e33efe29bfb1ffc711d482d67fc0873.tar.gz krb5-f80666416e33efe29bfb1ffc711d482d67fc0873.tar.xz krb5-f80666416e33efe29bfb1ffc711d482d67fc0873.zip | |
Add get_string, free_string kdcpreauth callbacks
String attributes should be useful to preauth modules without having
to link against libkdb5. Add a callback to make client string
attributes accessible to modules.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25318 dc483132-0cff-0310-8789-dd5450dbe970
| -rw-r--r-- | src/include/krb5/preauth_plugin.h | 10 | ||||
| -rw-r--r-- | src/kdc/kdc_preauth.c | 15 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/include/krb5/preauth_plugin.h b/src/include/krb5/preauth_plugin.h index 1646263d9f..e4f9de2e75 100644 --- a/src/include/krb5/preauth_plugin.h +++ b/src/include/krb5/preauth_plugin.h @@ -355,6 +355,16 @@ typedef struct krb5_kdcpreauth_callbacks_st { krb5_keyblock *(*fast_armor)(krb5_context context, krb5_kdcpreauth_rock rock); + /* Retrieve a string attribute from the client DB entry, or NULL if no such + * attribute is set. Free the result with the free_string callback. */ + krb5_error_code (*get_string)(krb5_context context, + krb5_kdcpreauth_rock rock, const char *key, + char **value_out); + + /* Free the result of get_string. */ + void (*free_string)(krb5_context context, krb5_kdcpreauth_rock rock, + char *string); + /* Get a pointer to the client DB entry (returned as a void pointer to * avoid a dependency on a libkdb5 type). */ void *(*client_entry)(krb5_context context, krb5_kdcpreauth_rock rock); diff --git a/src/kdc/kdc_preauth.c b/src/kdc/kdc_preauth.c index 7e9cde1f9e..6a04ff2aa7 100644 --- a/src/kdc/kdc_preauth.c +++ b/src/kdc/kdc_preauth.c @@ -574,6 +574,19 @@ fast_armor(krb5_context context, krb5_kdcpreauth_rock rock) return rock->rstate->armor_key; } +static krb5_error_code +get_string(krb5_context context, krb5_kdcpreauth_rock rock, const char *key, + char **value_out) +{ + return krb5_dbe_get_string(context, rock->client, key, value_out); +} + +static void +free_string(krb5_context context, krb5_kdcpreauth_rock rock, char *string) +{ + krb5_dbe_free_string(context, string); +} + static void * client_entry(krb5_context context, krb5_kdcpreauth_rock rock) { @@ -587,6 +600,8 @@ static struct krb5_kdcpreauth_callbacks_st callbacks = { free_keys, request_body, fast_armor, + get_string, + free_string, client_entry }; |
