1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
4 * Modifications for Lustre
6 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
8 * Author: Eric Mei <ericm@clusterfs.com>
12 * Somewhat simplified version of the gss api.
14 * Dug Song <dugsong@monkey.org>
15 * Andy Adamson <andros@umich.edu>
16 * Bruce Fields <bfields@umich.edu>
17 * Copyright (c) 2000 The Regents of the University of Michigan
21 #ifndef __PTLRPC_GSS_GSS_API_H_
22 #define __PTLRPC_GSS_GSS_API_H_
26 /* The mechanism-independent gss-api context: */
28 struct gss_api_mech *mech_type;
29 void *internal_ctx_id;
32 #define GSS_C_NO_BUFFER ((rawobj_t) 0)
33 #define GSS_C_NO_CONTEXT ((struct gss_ctx *) 0)
34 #define GSS_C_NULL_OID ((rawobj_t) 0)
37 * gss-api prototypes; note that these are somewhat simplified versions of
38 * the prototypes specified in RFC 2744.
40 __u32 lgss_import_sec_context(
41 rawobj_t *input_token,
42 struct gss_api_mech *mech,
43 struct gss_ctx **ctx);
44 __u32 lgss_copy_reverse_context(
46 struct gss_ctx **ctx_new);
47 __u32 lgss_inquire_context(
49 unsigned long *endtime);
57 __u32 lgss_verify_mic(
77 struct ptlrpc_bulk_desc *desc);
80 struct ptlrpc_bulk_desc *desc,
83 __u32 lgss_unwrap_bulk(
85 struct ptlrpc_bulk_desc *desc,
88 __u32 lgss_delete_sec_context(
89 struct gss_ctx **ctx);
95 struct subflavor_desc {
102 /* Each mechanism is described by the following struct: */
103 struct gss_api_mech {
105 cfs_module_t *gm_owner;
108 cfs_atomic_t gm_count;
109 struct gss_api_ops *gm_ops;
111 struct subflavor_desc *gm_sfs;
114 /* and must provide the following operations: */
116 __u32 (*gss_import_sec_context)(
117 rawobj_t *input_token,
118 struct gss_ctx *ctx);
119 __u32 (*gss_copy_reverse_context)(
121 struct gss_ctx *ctx_new);
122 __u32 (*gss_inquire_context)(
124 unsigned long *endtime);
125 __u32 (*gss_get_mic)(
131 rawobj_t *mic_token);
132 __u32 (*gss_verify_mic)(
138 rawobj_t *mic_token);
144 rawobj_t *out_token);
150 __u32 (*gss_prep_bulk)(
151 struct gss_ctx *gctx,
152 struct ptlrpc_bulk_desc *desc);
153 __u32 (*gss_wrap_bulk)(
154 struct gss_ctx *gctx,
155 struct ptlrpc_bulk_desc *desc,
158 __u32 (*gss_unwrap_bulk)(
159 struct gss_ctx *gctx,
160 struct ptlrpc_bulk_desc *desc,
163 void (*gss_delete_sec_context)(
171 int lgss_mech_register(struct gss_api_mech *mech);
172 void lgss_mech_unregister(struct gss_api_mech *mech);
174 struct gss_api_mech * lgss_OID_to_mech(rawobj_t *oid);
175 struct gss_api_mech * lgss_name_to_mech(char *name);
176 struct gss_api_mech * lgss_subflavor_to_mech(__u32 subflavor);
178 struct gss_api_mech * lgss_mech_get(struct gss_api_mech *mech);
179 void lgss_mech_put(struct gss_api_mech *mech);
181 #endif /* __PTLRPC_GSS_GSS_API_H_ */