Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/crypto/krb5/src/tests/gssapi/t_store_cred.c
34914 views
1
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
/* tests/gssapi/t_store_cred.c - gss_store_cred() test harness */
3
/*
4
* Copyright (C) 2021 by the Massachusetts Institute of Technology.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
*
14
* * Redistributions in binary form must reproduce the above copyright
15
* notice, this list of conditions and the following disclaimer in
16
* the documentation and/or other materials provided with the
17
* distribution.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
24
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
30
* OF THE POSSIBILITY OF SUCH DAMAGE.
31
*/
32
33
/*
34
* Usage: t_store_cred [-d] [-i] [-o] src_ccname [dest_ccname]
35
*
36
* Acquires creds from src_ccname using gss_acquire_cred_from() and then stores
37
* them, using gss_store_cred_into() if -i is specified or gss_store_cred()
38
* otherwise. If dest_ccname is specified with -i, it is included in the cred
39
* store for the store operation; if it is specified without -i, it is set with
40
* gss_krb5_ccache_name() before the store operation. If -d and/or -o are
41
* specified they set the default_cred and overwrite_cred flags to true
42
* respectively.
43
*/
44
45
#include "k5-platform.h"
46
#include <gssapi/gssapi_ext.h>
47
#include "common.h"
48
49
int
50
main(int argc, char *argv[])
51
{
52
OM_uint32 major, minor;
53
gss_key_value_set_desc store;
54
gss_key_value_element_desc elem;
55
gss_cred_id_t cred;
56
krb5_boolean def = FALSE, into = FALSE, overwrite = FALSE;
57
const char *src_ccname, *dest_ccname;
58
int c;
59
60
/* Parse arguments. */
61
while ((c = getopt(argc, argv, "dio")) != -1) {
62
switch (c) {
63
case 'd':
64
def = TRUE;
65
break;
66
case 'i':
67
into = TRUE;
68
break;
69
case 'o':
70
overwrite = TRUE;
71
break;
72
default:
73
abort();
74
}
75
}
76
argc -= optind;
77
argv += optind;
78
assert(argc == 1 || argc == 2);
79
src_ccname = argv[0];
80
dest_ccname = argv[1];
81
82
elem.key = "ccache";
83
elem.value = src_ccname;
84
store.count = 1;
85
store.elements = &elem;
86
major = gss_acquire_cred_from(&minor, GSS_C_NO_NAME, GSS_C_INDEFINITE,
87
&mechset_krb5, GSS_C_INITIATE, &store, &cred,
88
NULL, NULL);
89
check_gsserr("acquire_cred", major, minor);
90
91
if (into) {
92
if (dest_ccname != NULL) {
93
elem.key = "ccache";
94
elem.value = dest_ccname;
95
store.count = 1;
96
} else {
97
store.count = 0;
98
}
99
major = gss_store_cred_into(&minor, cred, GSS_C_INITIATE, &mech_krb5,
100
overwrite, def, &store, NULL, NULL);
101
check_gsserr("store_cred_into", major, minor);
102
} else {
103
if (dest_ccname != NULL) {
104
major = gss_krb5_ccache_name(&minor, dest_ccname, NULL);
105
check_gsserr("ccache_name", major, minor);
106
}
107
major = gss_store_cred(&minor, cred, GSS_C_INITIATE, &mech_krb5,
108
overwrite, def, NULL, NULL);
109
check_gsserr("store_cred", major, minor);
110
}
111
112
gss_release_cred(&minor, &cred);
113
return 0;
114
}
115
116