diff options
| author | Tom Yu <tlyu@mit.edu> | 2009-10-31 00:48:38 +0000 |
|---|---|---|
| committer | Tom Yu <tlyu@mit.edu> | 2009-10-31 00:48:38 +0000 |
| commit | 02d6bcbc98a214e7aeaaa9f45f0db8784a7b743b (patch) | |
| tree | 61b9147863cd8be3eff63903dc36cae168254bd5 /src/lib/kadm5/unit-test | |
| parent | 162ab371748cba0cc6f172419bd6e71fa04bb878 (diff) | |
| download | krb5-02d6bcbc98a214e7aeaaa9f45f0db8784a7b743b.tar.gz krb5-02d6bcbc98a214e7aeaaa9f45f0db8784a7b743b.tar.xz krb5-02d6bcbc98a214e7aeaaa9f45f0db8784a7b743b.zip | |
make mark-cstyle
make reindent
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@23100 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/kadm5/unit-test')
| -rw-r--r-- | src/lib/kadm5/unit-test/destroy-test.c | 62 | ||||
| -rw-r--r-- | src/lib/kadm5/unit-test/handle-test.c | 129 | ||||
| -rw-r--r-- | src/lib/kadm5/unit-test/init-test.c | 49 | ||||
| -rw-r--r-- | src/lib/kadm5/unit-test/iter-test.c | 88 | ||||
| -rw-r--r-- | src/lib/kadm5/unit-test/lock-test.c | 167 | ||||
| -rw-r--r-- | src/lib/kadm5/unit-test/randkey-test.c | 54 | ||||
| -rw-r--r-- | src/lib/kadm5/unit-test/setkey-test.c | 387 |
7 files changed, 467 insertions, 469 deletions
diff --git a/src/lib/kadm5/unit-test/destroy-test.c b/src/lib/kadm5/unit-test/destroy-test.c index 9aabb1a86d..b12d42fa64 100644 --- a/src/lib/kadm5/unit-test/destroy-test.c +++ b/src/lib/kadm5/unit-test/destroy-test.c @@ -1,3 +1,4 @@ +/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ #include <kadm5/admin.h> #include <com_err.h> #include <stdio.h> @@ -9,39 +10,38 @@ #include <kadm5/client_internal.h> #include <string.h> -#define TEST_NUM 25 +#define TEST_NUM 25 int main() { - kadm5_ret_t ret; - char *cp; - int x; - void *server_handle; - kadm5_server_handle_t handle; - krb5_context context; + kadm5_ret_t ret; + char *cp; + int x; + void *server_handle; + kadm5_server_handle_t handle; + krb5_context context; - ret = kadm5_init_krb5_context(&context); - if (ret != 0) { - com_err("test", ret, "context init"); - exit(2); - } - for(x = 0; x < TEST_NUM; x++) { - ret = kadm5_init(context, "admin", "admin", KADM5_ADMIN_SERVICE, 0, - KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, - &server_handle); - if(ret != KADM5_OK) { - com_err("test", ret, "init"); - exit(2); - } - handle = (kadm5_server_handle_t) server_handle; - cp = strdup(strchr(handle->cache_name, ':') + 1); - kadm5_destroy(server_handle); - if(access(cp, F_OK) == 0) { - puts("ticket cache not destroyed"); - exit(2); - } - free(cp); - } - exit(0); + ret = kadm5_init_krb5_context(&context); + if (ret != 0) { + com_err("test", ret, "context init"); + exit(2); + } + for(x = 0; x < TEST_NUM; x++) { + ret = kadm5_init(context, "admin", "admin", KADM5_ADMIN_SERVICE, 0, + KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, + &server_handle); + if(ret != KADM5_OK) { + com_err("test", ret, "init"); + exit(2); + } + handle = (kadm5_server_handle_t) server_handle; + cp = strdup(strchr(handle->cache_name, ':') + 1); + kadm5_destroy(server_handle); + if(access(cp, F_OK) == 0) { + puts("ticket cache not destroyed"); + exit(2); + } + free(cp); + } + exit(0); } - diff --git a/src/lib/kadm5/unit-test/handle-test.c b/src/lib/kadm5/unit-test/handle-test.c index 6c26e5f0dd..56eac844a1 100644 --- a/src/lib/kadm5/unit-test/handle-test.c +++ b/src/lib/kadm5/unit-test/handle-test.c @@ -1,3 +1,4 @@ +/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ #include <kadm5/admin.h> #include <com_err.h> #include <stdio.h> @@ -11,120 +12,120 @@ int main(int argc, char *argv[]) { - kadm5_ret_t ret; - void *server_handle; - kadm5_server_handle_t handle; - kadm5_server_handle_rec orig_handle; - kadm5_policy_ent_rec pol; - kadm5_principal_ent_t princ; - krb5_keyblock *key; - krb5_principal tprinc; - krb5_context context; + kadm5_ret_t ret; + void *server_handle; + kadm5_server_handle_t handle; + kadm5_server_handle_rec orig_handle; + kadm5_policy_ent_rec pol; + kadm5_principal_ent_t princ; + krb5_keyblock *key; + krb5_principal tprinc; + krb5_context context; kadm5_init_krb5_context(&context); - + ret = kadm5_init(context, "admin/none", "admin", KADM5_ADMIN_SERVICE, NULL, - KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, - &server_handle); + KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, + &server_handle); if(ret != KADM5_OK) { - com_err("test", ret, "init"); - exit(2); + com_err("test", ret, "init"); + exit(2); } handle = (kadm5_server_handle_t) server_handle; orig_handle = *handle; handle->magic_number = KADM5_STRUCT_VERSION; krb5_parse_name(context, "testuser", &tprinc); ret = kadm5_get_principal(server_handle, tprinc, &princ, - KADM5_PRINCIPAL_NORMAL_MASK); + KADM5_PRINCIPAL_NORMAL_MASK); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "get-principal", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "get-principal", + error_message(ret)); + exit(1); } - + ret = kadm5_get_policy(server_handle, "pol1", &pol); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "get-policy", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "get-policy", + error_message(ret)); + exit(1); } - + ret = kadm5_create_principal(server_handle, princ, KADM5_PRINCIPAL, "pass"); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "create-principal", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "create-principal", + error_message(ret)); + exit(1); } - + ret = kadm5_create_policy(server_handle, &pol, KADM5_POLICY); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "create-policy", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "create-policy", + error_message(ret)); + exit(1); } - + ret = kadm5_modify_principal(server_handle, princ, KADM5_PW_EXPIRATION); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "modify-principal", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "modify-principal", + error_message(ret)); + exit(1); } - + ret = kadm5_modify_policy(server_handle, &pol, KADM5_PW_MAX_LIFE); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "modify-policy", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "modify-policy", + error_message(ret)); + exit(1); } - + ret = kadm5_delete_principal(server_handle, tprinc); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "delete-principal", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "delete-principal", + error_message(ret)); + exit(1); } - + ret = kadm5_delete_policy(server_handle, "pol1"); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "delete-policy", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "delete-policy", + error_message(ret)); + exit(1); } - + ret = kadm5_chpass_principal(server_handle, tprinc, "FooBar"); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "chpass", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "chpass", + error_message(ret)); + exit(1); } ret = kadm5_randkey_principal(server_handle, tprinc, &key, NULL); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "randkey", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "randkey", + error_message(ret)); + exit(1); } - + ret = kadm5_rename_principal(server_handle, tprinc, tprinc); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "rename", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "rename", + error_message(ret)); + exit(1); } - + ret = kadm5_destroy(server_handle); if(ret != KADM5_BAD_SERVER_HANDLE) { - fprintf(stderr, "%s -- returned -- %s\n", "destroy", - error_message(ret)); - exit(1); + fprintf(stderr, "%s -- returned -- %s\n", "destroy", + error_message(ret)); + exit(1); } *handle = orig_handle; ret = kadm5_destroy(server_handle); if (ret != KADM5_OK) { - fprintf(stderr, "valid %s -- returned -- %s\n", "destroy", - error_message(ret)); - exit(1); + fprintf(stderr, "valid %s -- returned -- %s\n", "destroy", + error_message(ret)); + exit(1); } exit(0); diff --git a/src/lib/kadm5/unit-test/init-test.c b/src/lib/kadm5/unit-test/init-test.c index cfa79374b6..a7f065db50 100644 --- a/src/lib/kadm5/unit-test/init-test.c +++ b/src/lib/kadm5/unit-test/init-test.c @@ -1,3 +1,4 @@ +/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ #include <kadm5/admin.h> #include <com_err.h> #include <stdio.h> @@ -7,29 +8,29 @@ int main() { - kadm5_ret_t ret; - void *server_handle; - kadm5_config_params params; - krb5_context context; + kadm5_ret_t ret; + void *server_handle; + kadm5_config_params params; + krb5_context context; - memset(¶ms, 0, sizeof(params)); - params.mask |= KADM5_CONFIG_NO_AUTH; - ret = kadm5_init_krb5_context(&context); - if (ret != 0) { - com_err("init-test", ret, "while initializing krb5 context"); - exit(1); - } - ret = kadm5_init(context, "admin", "admin", NULL, ¶ms, - KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, - &server_handle); - if (ret == KADM5_RPC_ERROR) - exit(0); - else if (ret != 0) { - com_err("init-test", ret, "while initializing without auth"); - exit(1); - } else { - fprintf(stderr, "Unexpected success while initializing without auth!\n"); - (void) kadm5_destroy(server_handle); - exit(1); - } + memset(¶ms, 0, sizeof(params)); + params.mask |= KADM5_CONFIG_NO_AUTH; + ret = kadm5_init_krb5_context(&context); + if (ret != 0) { + com_err("init-test", ret, "while initializing krb5 context"); + exit(1); + } + ret = kadm5_init(context, "admin", "admin", NULL, ¶ms, + KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, + &server_handle); + if (ret == KADM5_RPC_ERROR) + exit(0); + else if (ret != 0) { + com_err("init-test", ret, "while initializing without auth"); + exit(1); + } else { + fprintf(stderr, "Unexpected success while initializing without auth!\n"); + (void) kadm5_destroy(server_handle); + exit(1); + } } diff --git a/src/lib/kadm5/unit-test/iter-test.c b/src/lib/kadm5/unit-test/iter-test.c index be15407355..bc7cfdcfac 100644 --- a/src/lib/kadm5/unit-test/iter-test.c +++ b/src/lib/kadm5/unit-test/iter-test.c @@ -1,51 +1,51 @@ +/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ #include <stdio.h> #include <kadm5/admin.h> #include <string.h> int main(int argc, char **argv) { - kadm5_ret_t ret; - void *server_handle; - char **names; - int count, princ, i; - krb5_context context; - - if (argc != 3) { - fprintf(stderr, "Usage: %s [-princ|-pol] exp\n", argv[0]); - exit(1); - } - princ = (strcmp(argv[1], "-princ") == 0); - - ret = kadm5_init_krb5_context(&context); - if (ret != KADM5_OK) { - com_err("iter-test", ret, "while initializing context"); - exit(1); - } - ret = kadm5_init("admin", "admin", KADM5_ADMIN_SERVICE, 0, - KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, - &server_handle); - if (ret != KADM5_OK) { - com_err("iter-test", ret, "while initializing"); - exit(1); - } - - if (princ) - ret = kadm5_get_principals(server_handle, argv[2], &names, &count); - else - ret = kadm5_get_policies(server_handle, argv[2], &names, &count); - - if (ret != KADM5_OK) { - com_err("iter-test", ret, "while retrieving list"); - exit(1); - } - - for (i = 0; i < count; i++) - printf("%d: %s\n", i, names[i]); - - kadm5_free_name_list(server_handle, names, count); - - (void) kadm5_destroy(server_handle); - - return 0; + kadm5_ret_t ret; + void *server_handle; + char **names; + int count, princ, i; + krb5_context context; + + if (argc != 3) { + fprintf(stderr, "Usage: %s [-princ|-pol] exp\n", argv[0]); + exit(1); + } + princ = (strcmp(argv[1], "-princ") == 0); + + ret = kadm5_init_krb5_context(&context); + if (ret != KADM5_OK) { + com_err("iter-test", ret, "while initializing context"); + exit(1); + } + ret = kadm5_init("admin", "admin", KADM5_ADMIN_SERVICE, 0, + KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, + &server_handle); + if (ret != KADM5_OK) { + com_err("iter-test", ret, "while initializing"); + exit(1); + } + + if (princ) + ret = kadm5_get_principals(server_handle, argv[2], &names, &count); + else + ret = kadm5_get_policies(server_handle, argv[2], &names, &count); + + if (ret != KADM5_OK) { + com_err("iter-test", ret, "while retrieving list"); + exit(1); + } + + for (i = 0; i < count; i++) + printf("%d: %s\n", i, names[i]); + + kadm5_free_name_list(server_handle, names, count); + + (void) kadm5_destroy(server_handle); + + return 0; } - diff --git a/src/lib/kadm5/unit-test/lock-test.c b/src/lib/kadm5/unit-test/lock-test.c index 85049a7e7f..5a0501b277 100644 --- a/src/lib/kadm5/unit-test/lock-test.c +++ b/src/lib/kadm5/unit-test/lock-test.c @@ -1,3 +1,4 @@ +/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ #include <stdio.h> #include <krb5.h> #include <kadm5/admin.h> @@ -8,99 +9,99 @@ char *whoami; static void usage() { - fprintf(stderr, - "Usage: %s {shared|exclusive|permanent|release|" - "get name|wait} ...\n", whoami); - exit(1); + fprintf(stderr, + "Usage: %s {shared|exclusive|permanent|release|" + "get name|wait} ...\n", whoami); + exit(1); } int main(int argc, char **argv) { - krb5_error_code ret; - osa_policy_ent_t entry; - krb5_context context; - kadm5_config_params params; - krb5_error_code kret; + krb5_error_code ret; + osa_policy_ent_t entry; + krb5_context context; + kadm5_config_params params; + krb5_error_code kret; - whoami = argv[0]; + whoami = argv[0]; - kret = kadm5_init_krb5_context(&context); - if (kret) { - com_err(whoami, kret, "while initializing krb5"); - exit(1); - } + kret = kadm5_init_krb5_context(&context); + if (kret) { + com_err(whoami, kret, "while initializing krb5"); + exit(1); + } - params.mask = 0; - ret = kadm5_get_config_params(context, 1, ¶ms, ¶ms); - if (ret) { - com_err(whoami, ret, "while retrieving configuration parameters"); - exit(1); - } - if (! (params.mask & KADM5_CONFIG_ADBNAME)) { - com_err(whoami, KADM5_BAD_SERVER_PARAMS, - "while retrieving configuration parameters"); - exit(1); - } + params.mask = 0; + ret = kadm5_get_config_params(context, 1, ¶ms, ¶ms); + if (ret) { + com_err(whoami, ret, "while retrieving configuration parameters"); + exit(1); + } + if (! (params.mask & KADM5_CONFIG_ADBNAME)) { + com_err(whoami, KADM5_BAD_SERVER_PARAMS, + "while retrieving configuration parameters"); + exit(1); + } - ret = krb5_db_open( context, NULL, KRB5_KDB_OPEN_RW); - if (ret) { - com_err(whoami, ret, "while opening database"); - exit(1); - } + ret = krb5_db_open( context, NULL, KRB5_KDB_OPEN_RW); + if (ret) { + com_err(whoami, ret, "while opening database"); + exit(1); + } - argc--; argv++; - while (argc) { - if (strcmp(*argv, "shared") == 0) { - ret = krb5_db_lock(context, KRB5_DB_LOCKMODE_SHARED); - if (ret) - com_err(whoami, ret, "while getting shared lock"); - else - printf("shared\n"); - } else if (strcmp(*argv, "exclusive") == 0) { - ret = krb5_db_lock(context, KRB5_DB_LOCKMODE_EXCLUSIVE ); - if (ret) - com_err(whoami, ret, "while getting exclusive lock"); - else - printf("exclusive\n"); - } else if (strcmp(*argv, "permanent") == 0) { - ret = krb5_db_lock(context, KRB5_DB_LOCKMODE_EXCLUSIVE ); - if (ret) - com_err(whoami, ret, "while getting permanent lock"); - else - printf("permanent\n"); - } else if (strcmp(*argv, "release") == 0) { - ret = krb5_db_unlock(context); - if (ret) - com_err(whoami, ret, "while releasing lock"); - else - printf("released\n"); - } else if (strcmp(*argv, "get") == 0) { - int cnt = 1; - argc--; argv++; - if (!argc) usage(); - if ((ret = krb5_db_get_policy(context, *argv, - &entry, &cnt)) ) { - com_err(whoami, ret, "while getting policy"); - } else { - printf("retrieved\n"); - krb5_db_free_policy(context, entry); - } - } else if (strcmp(*argv, "wait") == 0) { - getchar(); - } else { - fprintf(stderr, "%s: Invalid argument \"%s\"\n", - whoami, *argv); - usage(); - } + argc--; argv++; + while (argc) { + if (strcmp(*argv, "shared") == 0) { + ret = krb5_db_lock(context, KRB5_DB_LOCKMODE_SHARED); + if (ret) + com_err(whoami, ret, "while getting shared lock"); + else + printf("shared\n"); + } else if (strcmp(*argv, "exclusive") == 0) { + ret = krb5_db_lock(context, KRB5_DB_LOCKMODE_EXCLUSIVE ); + if (ret) + com_err(whoami, ret, "while getting exclusive lock"); + else + printf("exclusive\n"); + } else if (strcmp(*argv, "permanent") == 0) { + ret = krb5_db_lock(context, KRB5_DB_LOCKMODE_EXCLUSIVE ); + if (ret) + com_err(whoami, ret, "while getting permanent lock"); + else + printf("permanent\n"); + } else if (strcmp(*argv, "release") == 0) { + ret = krb5_db_unlock(context); + if (ret) + com_err(whoami, ret, "while releasing lock"); + else + printf("released\n"); + } else if (strcmp(*argv, "get") == 0) { + int cnt = 1; + argc--; argv++; + if (!argc) usage(); + if ((ret = krb5_db_get_policy(context, *argv, + &entry, &cnt)) ) { + com_err(whoami, ret, "while getting policy"); + } else { + printf("retrieved\n"); + krb5_db_free_policy(context, entry); + } + } else if (strcmp(*argv, "wait") == 0) { + getchar(); + } else { + fprintf(stderr, "%s: Invalid argument \"%s\"\n", + whoami, *argv); + usage(); + } - argc--; argv++; - } + argc--; argv++; + } - ret = krb5_db_fini(context); - if (ret) { - com_err(whoami, ret, "while closing database"); - exit(1); - } + ret = krb5_db_fini(context); + if (ret) { + com_err(whoami, ret, "while closing database"); + exit(1); + } - return 0; + return 0; } diff --git a/src/lib/kadm5/unit-test/randkey-test.c b/src/lib/kadm5/unit-test/randkey-test.c index 4e6787a1b2..7cf4ee8aca 100644 --- a/src/lib/kadm5/unit-test/randkey-test.c +++ b/src/lib/kadm5/unit-test/randkey-test.c @@ -1,3 +1,4 @@ +/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ #include <kadm5/admin.h> #include <com_err.h> #include <stdio.h> @@ -6,37 +7,36 @@ #include <netinet/in.h> #include <string.h> -#define TEST_NUM 1000 +#define TEST_NUM 1000 int main() { - kadm5_ret_t ret; - krb5_keyblock *keys[TEST_NUM]; - krb5_principal tprinc; - krb5_keyblock *newkey; - krb5_context context; - void *server_handle; + kadm5_ret_t ret; + krb5_keyblock *keys[TEST_NUM]; + krb5_principal tprinc; + krb5_keyblock *newkey; + krb5_context context; + void *server_handle; - int x, i; + int x, i; - kadm5_init_krb5_context(&context); + kadm5_init_krb5_context(&context); - krb5_parse_name(context, "testuser", &tprinc); - ret = kadm5_init(context, "admin", "admin", KADM5_ADMIN_SERVICE, NULL, - KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, - &server_handle); - if(ret != KADM5_OK) { - com_err("test", ret, "init"); - exit(2); - } - for(x = 0; x < TEST_NUM; x++) { - kadm5_randkey_principal(server_handle, tprinc, &keys[x], NULL); - for(i = 0; i < x; i++) { - if (!memcmp(newkey->contents, keys[i]->contents, newkey->length)) - puts("match found"); - } - } - kadm5_destroy(server_handle); - exit(0); + krb5_parse_name(context, "testuser", &tprinc); + ret = kadm5_init(context, "admin", "admin", KADM5_ADMIN_SERVICE, NULL, + KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, + &server_handle); + if(ret != KADM5_OK) { + com_err("test", ret, "init"); + exit(2); + } + for(x = 0; x < TEST_NUM; x++) { + kadm5_randkey_principal(server_handle, tprinc, &keys[x], NULL); + for(i = 0; i < x; i++) { + if (!memcmp(newkey->contents, keys[i]->contents, newkey->length)) + puts("match found"); + } + } + kadm5_destroy(server_handle); + exit(0); } - diff --git a/src/lib/kadm5/unit-test/setkey-test.c b/src/lib/kadm5/unit-test/setkey-test.c index 1dadfc72ad..53056e4345 100644 --- a/src/lib/kadm5/unit-test/setkey-test.c +++ b/src/lib/kadm5/unit-test/setkey-test.c @@ -1,46 +1,47 @@ +/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ #include <stdio.h> #include <k5-int.h> #include <kadm5/admin.h> -#if HAVE_SRAND48 -#define RAND() lrand48() -#define SRAND(a) srand48(a) -#define RAND_TYPE long -#elif HAVE_SRAND -#define RAND() rand() -#define SRAND(a) srand(a) -#define RAND_TYPE int -#elif HAVE_SRANDOM -#define RAND() random() -#define SRAND(a) srandom(a) -#define RAND_TYPE long -#else /* no random */ +#if HAVE_SRAND48 +#define RAND() lrand48() +#define SRAND(a) srand48(a) +#define RAND_TYPE long +#elif HAVE_SRAND +#define RAND() rand() +#define SRAND(a) srand(a) +#define RAND_TYPE int +#elif HAVE_SRANDOM +#define RAND() random() +#define SRAND(a) srandom(a) +#define RAND_TYPE long +#else /* no random */ need a random number generator -#endif /* no random */ +#endif /* no random */ krb5_keyblock test1[] = { {0, ENCTYPE_DES_CBC_CRC, 0, 0}, {-1}, }; krb5_keyblock test2[] = { - {0, ENCTYPE_DES_CBC_RAW, 0, 0}, - {-1}, + {0, ENCTYPE_DES_CBC_RAW, 0, 0}, + {-1}, }; krb5_keyblock test3[] = { - {0, ENCTYPE_DES_CBC_MD5, 0, 0}, - {-1}, + {0, ENCTYPE_DES_CBC_MD5, 0, 0}, + {-1}, }; -krb5_keyblock *tests[] = { - test1, test2, test3, NULL +krb5_keyblock *tests[] = { + test1, test2, test3, NULL }; #if 0 int keyblocks_equal(krb5_keyblock *kb1, krb5_keyblock *kb2) { - return (kb1->enctype == kb2->enctype && - kb1->length == kb2->length && - memcmp(kb1->contents, kb2->contents, kb1->length) == 0); + return (kb1->enctype == kb2->enctype && + kb1->length == kb2->length && + memcmp(kb1->contents, kb2->contents, kb1->length) == 0); } #endif @@ -57,177 +58,171 @@ extern krb5_kt_ops krb5_ktf_writable_ops; int main(int argc, char **argv) { - krb5_context context; - krb5_keytab kt; - krb5_keytab_entry ktent; - krb5_encrypt_block eblock; - krb5_creds my_creds; - kadm5_principal_ent_rec princ_ent; - krb5_principal princ, server; - char pw[16]; - char *whoami, *principal, *authprinc; - krb5_data pwdata; - void *handle; - int ret, i, test, encnum; - - whoami = argv[0]; - - if (argc != 2 && argc != 3) { - fprintf(stderr, "Usage: %s principal [authuser]\n", whoami); - exit(1); - } - principal = argv[1]; - authprinc = argv[2] ? argv[2] : argv[0]; - - /* - * Setup. Initialize data structures, open keytab, open connection - * to kadm5 server. - */ - - memset(&context, 0, sizeof(context)); - kadm5_init_krb5_context(&context); - - ret = krb5_parse_name(context, principal, &princ); - if (ret) { - com_err(whoami, ret, "while parsing principal name %s", principal); - exit(1); - } - - if((ret = krb5_build_principal_ext(context, &server, - krb5_princ_realm(kcontext, princ)->length, - krb5_princ_realm(kcontext, princ)->data, - tgtname.length, tgtname.data, - krb5_princ_realm(kcontext, princ)->length, - krb5_princ_realm(kcontext, princ)->data, - 0))) { - com_err(whoami, ret, "while building server name"); - exit(1); - } - - /* register the WRFILE keytab type */ - ret = krb5_kt_register(context, &krb5_ktf_writable_ops); - if (ret) { - com_err(whoami, ret, - "while registering writable key table functions"); - exit(1); - } - - ret = krb5_kt_default(context, &kt); - if (ret) { - com_err(whoami, ret, "while opening keytab"); - exit(1); - } - - ret = kadm5_init(context, authprinc, NULL, KADM5_ADMIN_SERVICE, NULL, - KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, - &handle); - if (ret) { - com_err(whoami, ret, "while initializing connection"); - exit(1); - } - - /* these pw's don't need to be secure, just different every time */ - SRAND((RAND_TYPE)time((void *) NULL)); - pwdata.data = pw; - pwdata.length = sizeof(pw); - - /* - * For each test: - * - * For each enctype in the test, construct a random password/key. - * Assign all keys to principal with kadm5_setkey_principal. Add - * each key to the keytab, and acquire an initial ticket with the - * keytab (XXX can I specify the enctype & kvno explicitly?). If - * krb5_get_in_tkt_with_keytab succeeds, then the keys were set - * successfully. - */ - for (test = 0; tests[test] != NULL; test++) { - krb5_keyblock *testp = tests[test]; - printf("+ Test %d:\n", test); - - for (encnum = 0; testp[encnum].magic != -1; encnum++) { - for (i = 0; i < sizeof(pw); i++) - pw[i] = (RAND() % 26) + '0'; /* XXX */ - - krb5_use_enctype(context, &eblock, testp[encnum].enctype); - ret = krb5_string_to_key(context, &eblock, &testp[encnum], - &pwdata, NULL); - if (ret) { - com_err(whoami, ret, "while converting string to key"); - exit(1); - } - } - - /* now, encnum == # of keyblocks in testp */ - ret = kadm5_setkey_principal(handle, princ, testp, encnum); - if (ret) { - com_err(whoami, ret, "while setting keys"); - exit(1); - } - - ret = kadm5_get_principal(handle, princ, &princ_ent, KADM5_KVNO); - if (ret) { - com_err(whoami, ret, "while retrieving principal"); - exit(1); - } - - for (encnum = 0; testp[encnum].magic != -1; encnum++) { - printf("+ enctype %d\n", testp[encnum].enctype); - - memset(&ktent, 0, sizeof(ktent)); - ktent.principal = princ; - ktent.key = testp[encnum]; - ktent.vno = princ_ent.kvno; - - ret = krb5_kt_add_entry(context, kt, &ktent); - if (ret) { - com_err(whoami, ret, "while adding keytab entry"); - exit(1); - } - - memset(&my_creds, 0, sizeof(my_creds)); - my_creds.client = princ; - my_creds.server = server; - - ktypes[0] = testp[encnum].enctype; - ret = krb5_get_in_tkt_with_keytab(context, - 0 /* options */, - NULL /* addrs */, - ktypes, - NULL /* preauth */, - kt, 0, - &my_creds, 0); - if (ret) { - com_err(whoami, ret, "while acquiring initial ticket"); - exit(1); - } - - /* since I can't specify enctype explicitly ... */ - ret = krb5_kt_remove_entry(context, kt, &ktent); - if (ret) { - com_err(whoami, ret, "while removing keytab entry"); - exit(1); - } - } - } - - ret = krb5_kt_close(context, kt); - if (ret) { - com_err(whoami, ret, "while closing keytab"); - exit(1); - } - - ret = kadm5_destroy(handle); - if (ret) { - com_err(whoami, ret, "while closing kadmin connection"); - exit(1); - } - - return 0; + krb5_context context; + krb5_keytab kt; + krb5_keytab_entry ktent; + krb5_encrypt_block eblock; + krb5_creds my_creds; + kadm5_principal_ent_rec princ_ent; + krb5_principal princ, server; + char pw[16]; + char *whoami, *principal, *authprinc; + krb5_data pwdata; + void *handle; + int ret, i, test, encnum; + + whoami = argv[0]; + + if (argc != 2 && argc != 3) { + fprintf(stderr, "Usage: %s principal [authuser]\n", whoami); + exit(1); + } + principal = argv[1]; + authprinc = argv[2] ? argv[2] : argv[0]; + + /* + * Setup. Initialize data structures, open keytab, open connection + * to kadm5 server. + */ + + memset(&context, 0, sizeof(context)); + kadm5_init_krb5_context(&context); + + ret = krb5_parse_name(context, principal, &princ); + if (ret) { + com_err(whoami, ret, "while parsing principal name %s", principal); + exit(1); + } + + if((ret = krb5_build_principal_ext(context, &server, + krb5_princ_realm(kcontext, princ)->length, + krb5_princ_realm(kcontext, princ)->data, + tgtname.length, tgtname.data, + krb5_princ_realm(kcontext, princ)->length, + krb5_princ_realm(kcontext, princ)->data, + 0))) { + com_err(whoami, ret, "while building server name"); + exit(1); + } + + /* register the WRFILE keytab type */ + ret = krb5_kt_register(context, &krb5_ktf_writable_ops); + if (ret) { + com_err(whoami, ret, + "while registering writable key table functions"); + exit(1); + } + + ret = krb5_kt_default(context, &kt); + if (ret) { + com_err(whoami, ret, "while opening keytab"); + exit(1); + } + + ret = kadm5_init(context, authprinc, NULL, KADM5_ADMIN_SERVICE, NULL, + KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, + &handle); + if (ret) { + com_err(whoami, ret, "while initializing connection"); + exit(1); + } + + /* these pw's don't need to be secure, just different every time */ + SRAND((RAND_TYPE)time((void *) NULL)); + pwdata.data = pw; + pwdata.length = sizeof(pw); + + /* + * For each test: + * + * For each enctype in the test, construct a random password/key. + * Assign all keys to principal with kadm5_setkey_principal. Add + * each key to the keytab, and acquire an initial ticket with the + * keytab (XXX can I specify the enctype & kvno explicitly?). If + * krb5_get_in_tkt_with_keytab succeeds, then the keys were set + * successfully. + */ + for (test = 0; tests[test] != NULL; test++) { + krb5_keyblock *testp = tests[test]; + printf("+ Test %d:\n", test); + + for (encnum = 0; testp[encnum].magic != -1; encnum++) { + for (i = 0; i < sizeof(pw); i++) + pw[i] = (RAND() % 26) + '0'; /* XXX */ + + krb5_use_enctype(context, &eblock, testp[encnum].enctype); + ret = krb5_string_to_key(context, &eblock, &testp[encnum], + &pwdata, NULL); + if (ret) { + com_err(whoami, ret, "while converting string to key"); + exit(1); + } + } + + /* now, encnum == # of keyblocks in testp */ + ret = kadm5_setkey_principal(handle, princ, testp, encnum); + if (ret) { + com_err(whoami, ret, "while setting keys"); + exit(1); + } + + ret = kadm5_get_principal(handle, princ, &princ_ent, KADM5_KVNO); + if (ret) { + com_err(whoami, ret, "while retrieving principal"); + exit(1); + } + + for (encnum = 0; testp[encnum].magic != -1; encnum++) { + printf("+ enctype %d\n", testp[encnum].enctype); + + memset(&ktent, 0, sizeof(ktent)); + ktent.principal = princ; + ktent.key = testp[encnum]; + ktent.vno = princ_ent.kvno; + + ret = krb5_kt_add_entry(context, kt, &ktent); + if (ret) { + com_err(whoami, ret, "while adding keytab entry"); + exit(1); + } + + memset(&my_creds, 0, sizeof(my_creds)); + my_creds.client = princ; + my_creds.server = server; + + ktypes[0] = testp[encnum].enctype; + ret = krb5_get_in_tkt_with_keytab(context, + 0 /* options */, + NULL /* addrs */, + ktypes, + NULL /* preauth */, + kt, 0, + &my_creds, 0); + if (ret) { + com_err(whoami, ret, "while acquiring initial ticket"); + exit(1); + } + + /* since I can't specify enctype explicitly ... */ + ret = krb5_kt_remove_entry(context, kt, &ktent); + if (ret) { + com_err(whoami, ret, "while removing keytab entry"); + exit(1); + } + } + } + + ret = krb5_kt_close(context, kt); + if (ret) { + com_err(whoami, ret, "while closing keytab"); + exit(1); + } + + ret = kadm5_destroy(handle); + if (ret) { + com_err(whoami, ret, "while closing kadmin connection"); + exit(1); + } + + return 0; } - - - - - - |
