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
13 void test_string_to_timestamp (krb5_context, char *);
14 void test_425_conv_principal (krb5_context, char *, char*, char *);
15 void test_524_conv_principal (krb5_context, char *);
16 void test_parse_name (krb5_context, const char *);
17 void test_set_realm (krb5_context, const char *, const char *);
21 test_string_to_timestamp(krb5_context ctx, char *ktime)
23 krb5_timestamp timestamp;
25 krb5_error_code retval;
27 retval = krb5_string_to_timestamp(ktime, ×tamp);
29 com_err("krb5_string_to_timestamp", retval, 0);
33 printf("Parsed time was %s", ctime(&t));
37 test_425_conv_principal(krb5_context ctx, char *name, char *inst, char *realm)
39 krb5_error_code retval;
43 retval = krb5_425_conv_principal(ctx, name, inst, realm, &princ);
45 com_err("krb5_425_conv_principal", retval, 0);
48 retval = krb5_unparse_name(ctx, princ, &out_name);
50 com_err("krb5_unparse_name", retval, 0);
53 printf("425_converted principal(%s, %s, %s): '%s'\n",
54 name, inst, realm, out_name);
56 krb5_free_principal(ctx, princ);
60 test_524_conv_principal(krb5_context ctx, char *name)
62 krb5_principal princ = 0;
63 krb5_error_code retval;
67 char aname[ANAME_SZ+1], inst[INST_SZ+1], realm[REALM_SZ+1];
69 aname[ANAME_SZ] = inst[INST_SZ] = realm[REALM_SZ] = 0;
70 retval = krb5_parse_name(ctx, name, &princ);
72 com_err("krb5_parse_name", retval, 0);
75 retval = krb5_524_conv_principal(ctx, princ, aname, inst, realm);
77 com_err("krb5_524_conv_principal", retval, 0);
80 printf("524_converted_principal(%s): '%s' '%s' '%s'\n",
81 name, aname, inst, realm);
84 krb5_free_principal (ctx, princ);
88 test_parse_name(krb5_context ctx, const char *name)
90 krb5_error_code retval;
91 krb5_principal princ = 0, princ2 = 0;
94 retval = krb5_parse_name(ctx, name, &princ);
96 com_err("krb5_parse_name", retval, 0);
99 retval = krb5_copy_principal(ctx, princ, &princ2);
101 com_err("krb5_copy_principal", retval, 0);
104 retval = krb5_unparse_name(ctx, princ2, &outname);
106 com_err("krb5_unparse_name", retval, 0);
109 printf("parsed (and unparsed) principal(%s): ", name);
110 if (strcmp(name, outname) == 0)
113 printf("'%s'\n", outname);
118 krb5_free_principal(ctx, princ);
120 krb5_free_principal(ctx, princ2);
124 test_set_realm(krb5_context ctx, const char *name, const char *realm)
126 krb5_error_code retval;
127 krb5_principal princ = 0;
130 retval = krb5_parse_name(ctx, name, &princ);
132 com_err("krb5_parse_name", retval, 0);
135 retval = krb5_set_principal_realm(ctx, princ, realm);
137 com_err("krb5_set_principal_realm", retval, 0);
140 retval = krb5_unparse_name(ctx, princ, &outname);
142 com_err("krb5_unparse_name", retval, 0);
145 printf("old principal: %s, modified principal: %s\n", name,
151 krb5_free_principal(ctx, princ);
155 usage(char *progname)
157 fprintf(stderr, "%s: Usage: %s 425_conv_principal <name> <inst> <realm\n",
159 fprintf(stderr, "\t%s 524_conv_principal <name>\n", progname);
160 fprintf(stderr, "\t%s parse_name <name>\n", progname);
161 fprintf(stderr, "\t%s set_realm <name> <realm>\n", progname);
162 fprintf(stderr, "\t%s string_to_timestamp <time>\n", progname);
167 main(int argc, char **argv)
170 krb5_error_code retval;
172 char *name, *inst, *realm;
174 retval = krb5_init_context(&ctx);
176 fprintf(stderr, "krb5_init_context returned error %ld\n",
182 /* Parse arguments. */
185 if (strcmp(*argv, "425_conv_principal") == 0) {
187 if (!argc) usage(progname);
190 if (!argc) usage(progname);
193 if (!argc) usage(progname);
195 test_425_conv_principal(ctx, name, inst, realm);
196 } else if (strcmp(*argv, "parse_name") == 0) {
198 if (!argc) usage(progname);
200 test_parse_name(ctx, name);
201 } else if (strcmp(*argv, "set_realm") == 0) {
203 if (!argc) usage(progname);
206 if (!argc) usage(progname);
208 test_set_realm(ctx, name, realm);
209 } else if (strcmp(*argv, "string_to_timestamp") == 0) {
211 if (!argc) usage(progname);
212 test_string_to_timestamp(ctx, *argv);
213 } else if (strcmp(*argv, "524_conv_principal") == 0) {
215 if (!argc) usage(progname);
216 test_524_conv_principal(ctx, *argv);
223 krb5_free_context(ctx);