1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
3 * This driver routine is used to test many of the standard Kerberos library
14 #include <sys/types.h>
15 #include <sys/socket.h>
16 #include <netinet/in.h>
17 #include <arpa/inet.h>
21 void test_string_to_timestamp (krb5_context, char *);
22 void test_425_conv_principal (krb5_context, char *, char*, char *);
23 void test_524_conv_principal (krb5_context, char *);
24 void test_parse_name (krb5_context, const char *);
25 void test_set_realm (krb5_context, const char *, const char *);
29 test_string_to_timestamp(krb5_context ctx, char *ktime)
31 krb5_timestamp timestamp;
33 krb5_error_code retval;
35 retval = krb5_string_to_timestamp(ktime, ×tamp);
37 com_err("krb5_string_to_timestamp", retval, 0);
40 t = (time_t) timestamp;
41 printf("Parsed time was %s", ctime(&t));
45 test_425_conv_principal(krb5_context ctx, char *name, char *inst, char *realm)
47 krb5_error_code retval;
51 retval = krb5_425_conv_principal(ctx, name, inst, realm, &princ);
53 com_err("krb5_425_conv_principal", retval, 0);
56 retval = krb5_unparse_name(ctx, princ, &out_name);
58 com_err("krb5_unparse_name", retval, 0);
61 printf("425_converted principal(%s, %s, %s): '%s'\n",
62 name, inst, realm, out_name);
64 krb5_free_principal(ctx, princ);
68 test_524_conv_principal(krb5_context ctx, char *name)
70 krb5_principal princ = 0;
71 krb5_error_code retval;
75 char aname[ANAME_SZ+1], inst[INST_SZ+1], realm[REALM_SZ+1];
77 aname[ANAME_SZ] = inst[INST_SZ] = realm[REALM_SZ] = 0;
78 retval = krb5_parse_name(ctx, name, &princ);
80 com_err("krb5_parse_name", retval, 0);
83 retval = krb5_524_conv_principal(ctx, princ, aname, inst, realm);
85 com_err("krb5_524_conv_principal", retval, 0);
88 printf("524_converted_principal(%s): '%s' '%s' '%s'\n",
89 name, aname, inst, realm);
92 krb5_free_principal (ctx, princ);
96 test_parse_name(krb5_context ctx, const char *name)
98 krb5_error_code retval;
99 krb5_principal princ = 0, princ2 = 0;
102 retval = krb5_parse_name(ctx, name, &princ);
104 com_err("krb5_parse_name", retval, 0);
107 retval = krb5_copy_principal(ctx, princ, &princ2);
109 com_err("krb5_copy_principal", retval, 0);
112 retval = krb5_unparse_name(ctx, princ2, &outname);
114 com_err("krb5_unparse_name", retval, 0);
117 printf("parsed (and unparsed) principal(%s): ", name);
118 if (strcmp(name, outname) == 0)
121 printf("'%s'\n", outname);
126 krb5_free_principal(ctx, princ);
128 krb5_free_principal(ctx, princ2);
132 test_set_realm(krb5_context ctx, const char *name, const char *realm)
134 krb5_error_code retval;
135 krb5_principal princ = 0;
138 retval = krb5_parse_name(ctx, name, &princ);
140 com_err("krb5_parse_name", retval, 0);
143 retval = krb5_set_principal_realm(ctx, princ, realm);
145 com_err("krb5_set_principal_realm", retval, 0);
148 retval = krb5_unparse_name(ctx, princ, &outname);
150 com_err("krb5_unparse_name", retval, 0);
153 printf("old principal: %s, modified principal: %s\n", name,
159 krb5_free_principal(ctx, princ);
163 usage(char *progname)
165 fprintf(stderr, "%s: Usage: %s 425_conv_principal <name> <inst> <realm\n",
167 fprintf(stderr, "\t%s 524_conv_principal <name>\n", progname);
168 fprintf(stderr, "\t%s parse_name <name>\n", progname);
169 fprintf(stderr, "\t%s set_realm <name> <realm>\n", progname);
170 fprintf(stderr, "\t%s string_to_timestamp <time>\n", progname);
175 main(int argc, char **argv)
178 krb5_error_code retval;
180 char *name, *inst, *realm;
182 retval = krb5_init_context(&ctx);
184 fprintf(stderr, "krb5_init_context returned error %ld\n",
190 /* Parse arguments. */
193 if (strcmp(*argv, "425_conv_principal") == 0) {
195 if (!argc) usage(progname);
198 if (!argc) usage(progname);
201 if (!argc) usage(progname);
203 test_425_conv_principal(ctx, name, inst, realm);
204 } else if (strcmp(*argv, "parse_name") == 0) {
206 if (!argc) usage(progname);
208 test_parse_name(ctx, name);
209 } else if (strcmp(*argv, "set_realm") == 0) {
211 if (!argc) usage(progname);
214 if (!argc) usage(progname);
216 test_set_realm(ctx, name, realm);
217 } else if (strcmp(*argv, "string_to_timestamp") == 0) {
219 if (!argc) usage(progname);
220 test_string_to_timestamp(ctx, *argv);
221 } else if (strcmp(*argv, "524_conv_principal") == 0) {
223 if (!argc) usage(progname);
224 test_524_conv_principal(ctx, *argv);
231 krb5_free_context(ctx);