aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/authdata/greet/greet_auth.c
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2008-08-25 19:43:03 +0000
committerKen Raeburn <raeburn@mit.edu>2008-08-25 19:43:03 +0000
commit2f2343584826983a4920fbad2a0248a42b584cf8 (patch)
treefb1dac3ca2b6bbd66bb701336d5fa52498b5b78e /src/plugins/authdata/greet/greet_auth.c
parent57bd520a5037c2194adefb80cc7c13a06dbee42d (diff)
downloadkrb5-2f2343584826983a4920fbad2a0248a42b584cf8.zip
krb5-2f2343584826983a4920fbad2a0248a42b584cf8.tar.gz
krb5-2f2343584826983a4920fbad2a0248a42b584cf8.tar.bz2
Incorporate Apple's patch
Add a test authorization data scheme, in both built-in and plugin forms; built-in version is #ifdef'ed out. Update configury to create the build directory for the plugin, but don't build or install it by default. Create the new (and normally empty) authorization data plugin directory at install time. Add some (normally disabled) code to log authz data from rd_req. Fix up some comments that still refer to preauth plugins. Add some details in comments on the API, and why it's private for now. Make the plugin init context support work, by not passing null pointers. ticket: 5565 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20691 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/plugins/authdata/greet/greet_auth.c')
-rw-r--r--src/plugins/authdata/greet/greet_auth.c97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/plugins/authdata/greet/greet_auth.c b/src/plugins/authdata/greet/greet_auth.c
new file mode 100644
index 0000000..a9d359e
--- /dev/null
+++ b/src/plugins/authdata/greet/greet_auth.c
@@ -0,0 +1,97 @@
+/*
+ * plugins/authdata/greet/
+ *
+ * Copyright 2008 by the Massachusetts Institute of Technology.
+ *
+ * Export of this software from the United States of America may
+ * require a specific license from the United States Government.
+ * It is the responsibility of any person or organization contemplating
+ * export to obtain such a license before exporting.
+ *
+ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
+ * distribute this software and its documentation for any purpose and
+ * without fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation, and that
+ * the name of M.I.T. not be used in advertising or publicity pertaining
+ * to distribution of the software without specific, written prior
+ * permission. Furthermore if you modify this software you must label
+ * your software as modified software and not distribute it in such a
+ * fashion that it might be confused with the original M.I.T. software.
+ * M.I.T. makes no representations about the suitability of
+ * this software for any purpose. It is provided "as is" without express
+ * or implied warranty.
+ *
+ *
+ * Sample authorization data plugin
+ */
+
+#include <string.h>
+#include <errno.h>
+#include <krb5/authdata_plugin.h>
+
+typedef struct krb5_db_entry krb5_db_entry;
+
+static krb5_error_code
+greet_init(krb5_context ctx, void **blob)
+{
+ *blob = "hello";
+ return 0;
+}
+
+static void
+greet_fini(krb5_context ctx, void *blob)
+{
+}
+
+static krb5_error_code
+greet_authdata(krb5_context ctx, krb5_db_entry *client,
+ krb5_data *req_pkt,
+ krb5_kdc_req *request,
+ krb5_enc_tkt_part * enc_tkt_reply)
+{
+#define GREET_SIZE (20)
+
+ char *p;
+ krb5_authdata *a;
+ size_t count;
+ krb5_authdata **new_ad;
+
+ p = calloc(1, GREET_SIZE);
+ a = calloc(1, sizeof(*a));
+
+ if (p == NULL || a == NULL) {
+ free(p);
+ free(a);
+ return ENOMEM;
+ }
+ strcpy(p, "hello there");
+ a->magic = KV5M_AUTHDATA;
+ a->ad_type = -42;
+ a->length = GREET_SIZE;
+ a->contents = p;
+ if (enc_tkt_reply->authorization_data == 0) {
+ count = 0;
+ } else {
+ for (count = 0; enc_tkt_reply->authorization_data[count] != 0; count++)
+ ;
+ }
+ new_ad = realloc(enc_tkt_reply->authorization_data,
+ (count+2) * sizeof(krb5_authdata *));
+ if (new_ad == NULL) {
+ free(p);
+ free(a);
+ return ENOMEM;
+ }
+ enc_tkt_reply->authorization_data = new_ad;
+ new_ad[count] = a;
+ new_ad[count+1] = NULL;
+ return 0;
+}
+
+krb5plugin_authdata_ftable_v0 authdata_server_0 = {
+ "greet",
+ greet_init,
+ greet_fini,
+ greet_authdata,
+};