1/*	$NetBSD$	*/
2
3#include <krb5/krb5.h>
4#include <krb5/hdb.h>
5#include <krb5/kdc.h>
6#include <windc_plugin.h>
7
8static krb5_error_code
9windc_init(krb5_context context, void **ctx)
10{
11    krb5_warnx(context, "windc init");
12    *ctx = NULL;
13    return 0;
14}
15
16static void
17windc_fini(void *ctx)
18{
19}
20
21static krb5_error_code
22pac_generate(void *ctx, krb5_context context,
23	     struct hdb_entry_ex *client, krb5_pac *pac)
24{
25    krb5_error_code ret;
26    krb5_data data;
27
28    krb5_warnx(context, "pac generate");
29
30    data.data = "\x00\x01";
31    data.length = 2;
32
33    ret = krb5_pac_init(context, pac);
34    if (ret)
35	return ret;
36
37    ret = krb5_pac_add_buffer(context, *pac, 1, &data);
38    if (ret)
39	return ret;
40
41    return 0;
42}
43
44static krb5_error_code
45pac_verify(void *ctx, krb5_context context,
46	   const krb5_principal client_principal,
47	   struct hdb_entry_ex *client,
48	   struct hdb_entry_ex *server,
49	   struct hdb_entry_ex *krbtgt,
50	   krb5_pac *pac)
51{
52    krb5_error_code ret;
53    krb5_data data;
54
55    krb5_warnx(context, "pac_verify");
56
57    ret = krb5_pac_get_buffer(context, *pac, 1, &data);
58    if (ret)
59	return ret;
60
61    krb5_data_free(&data);
62
63    return 0;
64}
65
66static krb5_error_code
67client_access(void *ctx,
68	      krb5_context context,
69	      krb5_kdc_configuration *config,
70	      hdb_entry_ex *client, const char *client_name,
71	      hdb_entry_ex *server, const char *server_name,
72	      KDC_REQ *req,
73	      krb5_data *e_data)
74{
75    krb5_warnx(context, "client_access");
76    return 0;
77}
78
79krb5plugin_windc_ftable windc = {
80    KRB5_WINDC_PLUGING_MINOR,
81    windc_init,
82    windc_fini,
83    pac_generate,
84    pac_verify,
85    client_access
86};
87