1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
4 * Modifications for Lustre
6 * Copyright 2008 Sun Microsystems, Inc. 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,
87 __u32 lgss_delete_sec_context(
88 struct gss_ctx **ctx);
94 struct subflavor_desc {
101 /* Each mechanism is described by the following struct: */
102 struct gss_api_mech {
103 struct list_head gm_list;
104 struct module *gm_owner;
108 struct gss_api_ops *gm_ops;
110 struct subflavor_desc *gm_sfs;
113 /* and must provide the following operations: */
115 __u32 (*gss_import_sec_context)(
116 rawobj_t *input_token,
117 struct gss_ctx *ctx);
118 __u32 (*gss_copy_reverse_context)(
120 struct gss_ctx *ctx_new);
121 __u32 (*gss_inquire_context)(
123 unsigned long *endtime);
124 __u32 (*gss_get_mic)(
130 rawobj_t *mic_token);
131 __u32 (*gss_verify_mic)(
137 rawobj_t *mic_token);
143 rawobj_t *out_token);
149 __u32 (*gss_prep_bulk)(
150 struct gss_ctx *gctx,
151 struct ptlrpc_bulk_desc *desc);
152 __u32 (*gss_wrap_bulk)(
153 struct gss_ctx *gctx,
154 struct ptlrpc_bulk_desc *desc,
157 __u32 (*gss_unwrap_bulk)(
158 struct gss_ctx *gctx,
159 struct ptlrpc_bulk_desc *desc,
161 void (*gss_delete_sec_context)(
169 int lgss_mech_register(struct gss_api_mech *mech);
170 void lgss_mech_unregister(struct gss_api_mech *mech);
172 struct gss_api_mech * lgss_OID_to_mech(rawobj_t *oid);
173 struct gss_api_mech * lgss_name_to_mech(char *name);
174 struct gss_api_mech * lgss_subflavor_to_mech(__u32 subflavor);
176 struct gss_api_mech * lgss_mech_get(struct gss_api_mech *mech);
177 void lgss_mech_put(struct gss_api_mech *mech);
179 #endif /* __PTLRPC_GSS_GSS_API_H_ */