Remove keytab configuration
[mspang/pyceo.git] / src / kadm.c
1 #include <kadm5/admin.h>
2
3 #include "kadm.h"
4 #include "krb5.h"
5 #include "util.h"
6 #include "config.h"
7
8 extern char *prog;
9
10 static void *handle;
11
12 void ceo_kadm_init() {
13     krb5_error_code retval;
14     kadm5_config_params params;
15     memset((void *) &params, 0, sizeof(params));
16
17     retval = kadm5_init_with_skey(admin_principal, NULL /*admin_keytab */,
18                 KADM5_ADMIN_SERVICE, &params, KADM5_STRUCT_VERSION,
19                 KADM5_API_VERSION_2, &handle);
20     if (retval) {
21         com_err(prog, retval, "while initializing kadm5");
22         exit(1);
23     }
24 }
25
26 void ceo_kadm_cleanup() {
27     kadm5_destroy(handle);
28 }
29
30 int ceo_add_princ(char *user, char *password) {
31     krb5_error_code retval;
32     kadm5_principal_ent_rec princ;
33     memset((void *) &princ, 0, sizeof(princ));
34
35     if ((retval = krb5_parse_name(context, user, &princ.principal))) {
36         com_err(prog, retval, "while parsing principal name");
37         return retval;
38     }
39
40     if ((retval = kadm5_create_principal(handle, &princ, KADM5_PRINCIPAL, password))) {
41         com_err(prog, retval, "while creating principal");
42         return retval;
43     }
44
45     krb5_free_principal(context, princ.principal);
46     return 0;
47 }
48
49 int ceo_del_princ(char *user) {
50     krb5_error_code retval;
51     krb5_principal princ;
52
53     if ((retval = krb5_parse_name(context, user, &princ))) {
54         com_err(prog, retval, "while parsing principal name");
55         return retval;
56     }
57
58     retval = kadm5_delete_principal(handle, princ);
59     if (retval && retval != KADM5_UNK_PRINC) {
60         com_err(prog, retval, "while deleting principal");
61         return retval;
62     }
63
64     krb5_free_principal(context, princ);
65     return 0;
66 }