1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
4 * Modifications for Lustre
5 * Copyright 2004, Cluster File Systems, Inc.
7 * Author: Eric Mei <ericm@clusterfs.com>
11 * Somewhat simplified version of the gss api.
13 * Dug Song <dugsong@monkey.org>
14 * Andy Adamson <andros@umich.edu>
15 * Bruce Fields <bfields@umich.edu>
16 * Copyright (c) 2000 The Regents of the University of Michigan
20 #ifndef __SEC_GSS_GSS_API_H_
21 #define __SEC_GSS_GSS_API_H_
25 /* The mechanism-independent gss-api context: */
27 struct gss_api_mech *mech_type;
28 void *internal_ctx_id;
31 #define GSS_C_NO_BUFFER ((rawobj_t) 0)
32 #define GSS_C_NO_CONTEXT ((struct gss_ctx *) 0)
33 #define GSS_C_NULL_OID ((rawobj_t) 0)
35 /*XXX arbitrary length - is this set somewhere? */
36 #define GSS_OID_MAX_LEN 32
38 /* gss-api prototypes; note that these are somewhat simplified versions of
39 * the prototypes specified in RFC 2744. */
40 __u32 kgss_import_sec_context(
41 rawobj_t *input_token,
42 struct gss_api_mech *mech,
43 struct gss_ctx **ctx_id);
44 __u32 kgss_inquire_context(
45 struct gss_ctx *ctx_id,
48 struct gss_ctx *ctx_id,
52 __u32 kgss_verify_mic(
53 struct gss_ctx *ctx_id,
58 struct gss_ctx *ctx_id,
60 rawobj_buf_t *in_token,
63 struct gss_ctx *ctx_id,
67 __u32 kgss_delete_sec_context(
68 struct gss_ctx **ctx_id);
70 struct subflavor_desc {
77 /* Each mechanism is described by the following struct: */
79 struct list_head gm_list;
80 struct module *gm_owner;
84 struct gss_api_ops *gm_ops;
86 struct subflavor_desc *gm_sfs;
89 /* and must provide the following operations: */
91 __u32 (*gss_import_sec_context)(
92 rawobj_t *input_token,
93 struct gss_ctx *ctx_id);
94 __u32 (*gss_inquire_context)(
95 struct gss_ctx *ctx_id,
98 struct gss_ctx *ctx_id,
101 rawobj_t *mic_token);
102 __u32 (*gss_verify_mic)(
103 struct gss_ctx *ctx_id,
110 rawobj_buf_t *in_token,
111 rawobj_t *out_token);
116 rawobj_t *out_token);
117 void (*gss_delete_sec_context)(
118 void *internal_ctx_id);
121 int kgss_mech_register(struct gss_api_mech *mech);
122 void kgss_mech_unregister(struct gss_api_mech *mech);
124 struct gss_api_mech * kgss_OID_to_mech(rawobj_t *);
125 struct gss_api_mech * kgss_name_to_mech(char *name);
126 struct gss_api_mech * kgss_subflavor_to_mech(__u32 subflavor);
128 struct gss_api_mech * kgss_mech_get(struct gss_api_mech *);
129 void kgss_mech_put(struct gss_api_mech *);
131 #endif /* __SEC_GSS_GSS_API_H_ */