diff options
author | Greg Hudson <ghudson@mit.edu> | 2013-12-09 00:45:08 -0500 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2013-12-12 00:16:17 -0500 |
commit | 6211396239897a3a9c207690ea2d6dc9ec580bc2 (patch) | |
tree | eb3d30abd94cbaccce2564630096fc4ec509cff9 /src/tests/s2p.c | |
parent | 23a2a3d2f2c5f3ba3393aeca4908d2b2cb0bbe65 (diff) | |
download | krb5-6211396239897a3a9c207690ea2d6dc9ec580bc2.tar.gz krb5-6211396239897a3a9c207690ea2d6dc9ec580bc2.tar.xz krb5-6211396239897a3a9c207690ea2d6dc9ec580bc2.zip |
Add tests for krb5_sname_to_principal
Diffstat (limited to 'src/tests/s2p.c')
-rw-r--r-- | src/tests/s2p.c | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/tests/s2p.c b/src/tests/s2p.c new file mode 100644 index 0000000000..8fb2a94d6a --- /dev/null +++ b/src/tests/s2p.c @@ -0,0 +1,81 @@ +/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +/* tests/s2p.c - krb5_name_to_principal test harness */ +/* + * Copyright (C) 2013 by the Massachusetts Institute of Technology. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <stdio.h> +#include <string.h> +#include <assert.h> +#include <krb5.h> + +static krb5_context ctx; + +static void +check(krb5_error_code code) +{ + const char *errmsg; + + if (code) { + errmsg = krb5_get_error_message(ctx, code); + fprintf(stderr, "%s\n", errmsg); + krb5_free_error_message(ctx, errmsg); + exit(1); + } +} + +int +main(int argc, char **argv) +{ + krb5_principal princ; + krb5_int32 type; + const char *service, *hostname; + char *name; + + /* Parse arguments. */ + assert(argc == 4); + hostname = argv[1]; + service = argv[2]; + if (strcmp(argv[3], "unknown") == 0) + type = KRB5_NT_UNKNOWN; + else if (strcmp(argv[3], "srv-hst") == 0) + type = KRB5_NT_SRV_HST; + else + abort(); + + check(krb5_init_context(&ctx)); + check(krb5_sname_to_principal(ctx, hostname, service, type, &princ)); + check(krb5_unparse_name(ctx, princ, &name)); + printf("%s\n", name); + + krb5_free_unparsed_name(ctx, name); + krb5_free_principal(ctx, princ); + krb5_free_context(ctx); + return 0; +} |