1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 #include <kadm5/admin.h>
3 #include <com_err.h>
4 #include <stdio.h>
5 #include <krb5.h>
6 #include <sys/socket.h>
7 #include <sys/file.h>
8 #include <unistd.h>
9 #include <netinet/in.h>
10 #ifdef CLIENT_TEST
11 #include <kadm5/client_internal.h>
12 #else
13 #include <kadm5/server_internal.h>
14 #include <kadm5/admin.h>
15 #endif
16 
main(int argc,char * argv[])17 int main(int argc, char *argv[])
18 {
19     kadm5_ret_t ret;
20     void *server_handle;
21     kadm5_server_handle_t handle;
22     kadm5_server_handle_rec orig_handle;
23     kadm5_policy_ent_rec       pol;
24     kadm5_principal_ent_t    princ;
25     kadm5_principal_ent_rec  kprinc;
26     krb5_keyblock      *key;
27     krb5_principal     tprinc;
28     krb5_context       context;
29 
30 
31     kadm5_init_krb5_context(&context);
32 
33     ret = kadm5_init(context, "admin/none", "admin", KADM5_ADMIN_SERVICE, NULL,
34                      KADM5_STRUCT_VERSION, KADM5_API_VERSION_4, NULL,
35                      &server_handle);
36     if(ret != KADM5_OK) {
37         com_err("test", ret, "init");
38         exit(2);
39     }
40     handle = (kadm5_server_handle_t) server_handle;
41     orig_handle = *handle;
42     handle->magic_number = KADM5_STRUCT_VERSION;
43     krb5_parse_name(context, "testuser", &tprinc);
44     ret = kadm5_get_principal(server_handle, tprinc, &kprinc,
45                               KADM5_PRINCIPAL_NORMAL_MASK);
46     if(ret != KADM5_BAD_SERVER_HANDLE) {
47         fprintf(stderr, "%s -- returned -- %s\n", "get-principal",
48                 error_message(ret));
49         exit(1);
50     }
51 
52     ret = kadm5_get_policy(server_handle, "pol1", &pol);
53     if(ret != KADM5_BAD_SERVER_HANDLE) {
54         fprintf(stderr, "%s -- returned -- %s\n", "get-policy",
55                 error_message(ret));
56         exit(1);
57     }
58 
59     princ = &kprinc;
60     ret = kadm5_create_principal(server_handle, princ, KADM5_PRINCIPAL, "pass");
61     if(ret != KADM5_BAD_SERVER_HANDLE) {
62         fprintf(stderr, "%s -- returned -- %s\n", "create-principal",
63                 error_message(ret));
64         exit(1);
65     }
66 
67     ret = kadm5_create_policy(server_handle, &pol, KADM5_POLICY);
68     if(ret != KADM5_BAD_SERVER_HANDLE) {
69         fprintf(stderr, "%s -- returned -- %s\n", "create-policy",
70                 error_message(ret));
71         exit(1);
72     }
73 
74     ret = kadm5_modify_principal(server_handle, princ, KADM5_PW_EXPIRATION);
75     if(ret != KADM5_BAD_SERVER_HANDLE) {
76         fprintf(stderr, "%s -- returned -- %s\n", "modify-principal",
77                 error_message(ret));
78         exit(1);
79     }
80 
81     ret = kadm5_modify_policy(server_handle, &pol, KADM5_PW_MAX_LIFE);
82     if(ret != KADM5_BAD_SERVER_HANDLE) {
83         fprintf(stderr, "%s -- returned -- %s\n", "modify-policy",
84                 error_message(ret));
85         exit(1);
86     }
87 
88     ret = kadm5_delete_principal(server_handle, tprinc);
89     if(ret != KADM5_BAD_SERVER_HANDLE) {
90         fprintf(stderr, "%s -- returned -- %s\n", "delete-principal",
91                 error_message(ret));
92         exit(1);
93     }
94 
95     ret = kadm5_delete_policy(server_handle, "pol1");
96     if(ret != KADM5_BAD_SERVER_HANDLE) {
97         fprintf(stderr, "%s -- returned -- %s\n", "delete-policy",
98                 error_message(ret));
99         exit(1);
100     }
101 
102     ret = kadm5_chpass_principal(server_handle, tprinc, "FooBar");
103     if(ret != KADM5_BAD_SERVER_HANDLE) {
104         fprintf(stderr, "%s -- returned -- %s\n", "chpass",
105                 error_message(ret));
106         exit(1);
107     }
108     ret = kadm5_randkey_principal(server_handle, tprinc, &key, NULL);
109     if(ret != KADM5_BAD_SERVER_HANDLE) {
110         fprintf(stderr, "%s -- returned -- %s\n", "randkey",
111                 error_message(ret));
112         exit(1);
113     }
114 
115     ret = kadm5_rename_principal(server_handle, tprinc, tprinc);
116     if(ret != KADM5_BAD_SERVER_HANDLE) {
117         fprintf(stderr, "%s -- returned -- %s\n", "rename",
118                 error_message(ret));
119         exit(1);
120     }
121 
122     ret = kadm5_destroy(server_handle);
123     if(ret != KADM5_BAD_SERVER_HANDLE) {
124         fprintf(stderr, "%s -- returned -- %s\n", "destroy",
125                 error_message(ret));
126         exit(1);
127     }
128 
129     *handle = orig_handle;
130     ret = kadm5_destroy(server_handle);
131     if (ret != KADM5_OK) {
132         fprintf(stderr, "valid %s -- returned -- %s\n", "destroy",
133                 error_message(ret));
134         exit(1);
135     }
136 
137     krb5_free_principal(context, tprinc);
138     krb5_free_context(context);
139     exit(0);
140 }
141