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