aboutsummaryrefslogtreecommitdiff
path: root/crypto/heimdal/tests/plugin/windc.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/heimdal/tests/plugin/windc.c')
-rw-r--r--crypto/heimdal/tests/plugin/windc.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/crypto/heimdal/tests/plugin/windc.c b/crypto/heimdal/tests/plugin/windc.c
new file mode 100644
index 000000000000..7c78847f797d
--- /dev/null
+++ b/crypto/heimdal/tests/plugin/windc.c
@@ -0,0 +1,77 @@
+#include <krb5.h>
+#include <hdb.h>
+#include <windc_plugin.h>
+
+static krb5_error_code
+windc_init(krb5_context context, void **ctx)
+{
+ krb5_warnx(context, "windc init");
+ *ctx = NULL;
+ return 0;
+}
+
+static void
+windc_fini(void *ctx)
+{
+}
+
+static krb5_error_code
+pac_generate(void *ctx, krb5_context context,
+ struct hdb_entry_ex *client, krb5_pac *pac)
+{
+ krb5_error_code ret;
+ krb5_data data;
+
+ krb5_warnx(context, "pac generate");
+
+ data.data = "\x00\x01";
+ data.length = 2;
+
+ ret = krb5_pac_init(context, pac);
+ if (ret)
+ return ret;
+
+ ret = krb5_pac_add_buffer(context, *pac, 1, &data);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+
+static krb5_error_code
+pac_verify(void *ctx, krb5_context context,
+ const krb5_principal client_principal,
+ struct hdb_entry_ex *client,
+ struct hdb_entry_ex *server,
+ krb5_pac *pac)
+{
+ krb5_error_code ret;
+ krb5_data data;
+
+ krb5_warnx(context, "pac_verify");
+
+ ret = krb5_pac_get_buffer(context, *pac, 1, &data);
+ if (ret)
+ return ret;
+
+ krb5_data_free(&data);
+
+ return 0;
+}
+
+static krb5_error_code
+client_access(void *ctx, krb5_context context,
+ struct hdb_entry_ex *client, KDC_REQ *req)
+{
+ krb5_warnx(context, "client_access");
+ return 0;
+}
+
+krb5plugin_windc_ftable windc = {
+ KRB5_WINDC_PLUGING_MINOR,
+ windc_init,
+ windc_fini,
+ pac_generate,
+ pac_verify,
+ client_access
+};