2 * Modifications for Lustre
4 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
6 * Author: Eric Mei <ericm@clusterfs.com>
10 * Somewhat simplified version of the gss api.
12 * Dug Song <dugsong@monkey.org>
13 * Andy Adamson <andros@umich.edu>
14 * Bruce Fields <bfields@umich.edu>
15 * Copyright (c) 2000 The Regents of the University of Michigan
19 #ifndef __PTLRPC_GSS_GSS_API_H_
20 #define __PTLRPC_GSS_GSS_API_H_
22 #include <uapi/linux/lustre/lgss.h>
26 typedef int (*digest_hash)(
27 struct ahash_request *req, rawobj_t *hdr,
28 int msgcnt, rawobj_t *msgs,
29 int iovcnt, struct bio_vec *iovs);
31 /* The mechanism-independent gss-api context: */
33 struct gss_api_mech *mech_type;
34 void *internal_ctx_id;
35 digest_hash hash_func;
38 #define GSS_C_NO_BUFFER ((rawobj_t) 0)
39 #define GSS_C_NO_CONTEXT ((struct gss_ctx *) 0)
40 #define GSS_C_NULL_OID ((rawobj_t) 0)
43 * gss-api prototypes; note that these are somewhat simplified versions of
44 * the prototypes specified in RFC 2744.
46 __u32 lgss_import_sec_context(
47 rawobj_t *input_token,
48 struct gss_api_mech *mech,
49 struct gss_ctx **ctx);
50 __u32 lgss_copy_reverse_context(
52 struct gss_ctx **ctx_new);
53 __u32 lgss_inquire_context(
63 __u32 lgss_verify_mic(
83 struct ptlrpc_bulk_desc *desc);
86 struct ptlrpc_bulk_desc *desc,
89 __u32 lgss_unwrap_bulk(
91 struct ptlrpc_bulk_desc *desc,
94 __u32 lgss_delete_sec_context(
95 struct gss_ctx **ctx);
101 struct subflavor_desc {
108 /* Each mechanism is described by the following struct: */
109 struct gss_api_mech {
110 struct list_head gm_list;
111 struct module *gm_owner;
115 struct gss_api_ops *gm_ops;
117 struct subflavor_desc *gm_sfs;
120 /* and must provide the following operations: */
122 __u32 (*gss_import_sec_context)(
123 rawobj_t *input_token,
124 struct gss_ctx *ctx);
125 __u32 (*gss_copy_reverse_context)(
127 struct gss_ctx *ctx_new);
128 __u32 (*gss_inquire_context)(
131 __u32 (*gss_get_mic)(
136 struct bio_vec *iovs,
137 rawobj_t *mic_token);
138 __u32 (*gss_verify_mic)(
143 struct bio_vec *iovs,
144 rawobj_t *mic_token);
150 rawobj_t *out_token);
156 __u32 (*gss_prep_bulk)(
157 struct gss_ctx *gctx,
158 struct ptlrpc_bulk_desc *desc);
159 __u32 (*gss_wrap_bulk)(
160 struct gss_ctx *gctx,
161 struct ptlrpc_bulk_desc *desc,
164 __u32 (*gss_unwrap_bulk)(
165 struct gss_ctx *gctx,
166 struct ptlrpc_bulk_desc *desc,
169 void (*gss_delete_sec_context)(
177 int lgss_mech_register(struct gss_api_mech *mech);
178 void lgss_mech_unregister(struct gss_api_mech *mech);
180 struct gss_api_mech * lgss_OID_to_mech(rawobj_t *oid);
181 struct gss_api_mech * lgss_name_to_mech(char *name);
182 struct gss_api_mech * lgss_subflavor_to_mech(__u32 subflavor);
184 struct gss_api_mech * lgss_mech_get(struct gss_api_mech *mech);
185 void lgss_mech_put(struct gss_api_mech *mech);
187 #endif /* __PTLRPC_GSS_GSS_API_H_ */