OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [sunrpc/] [gss_api.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * linux/include/linux/sunrpc/gss_api.h
3
 *
4
 * Somewhat simplified version of the gss api.
5
 *
6
 * Dug Song <dugsong@monkey.org>
7
 * Andy Adamson <andros@umich.edu>
8
 * Bruce Fields <bfields@umich.edu>
9
 * Copyright (c) 2000 The Regents of the University of Michigan
10
 *
11
 * $Id$
12
 */
13
 
14
#ifndef _LINUX_SUNRPC_GSS_API_H
15
#define _LINUX_SUNRPC_GSS_API_H
16
 
17
#ifdef __KERNEL__
18
#include <linux/sunrpc/xdr.h>
19
#include <linux/uio.h>
20
 
21
/* The mechanism-independent gss-api context: */
22
struct gss_ctx {
23
        struct gss_api_mech     *mech_type;
24
        void                    *internal_ctx_id;
25
};
26
 
27
#define GSS_C_NO_BUFFER         ((struct xdr_netobj) 0)
28
#define GSS_C_NO_CONTEXT        ((struct gss_ctx *) 0)
29
#define GSS_C_NULL_OID          ((struct xdr_netobj) 0)
30
 
31
/*XXX  arbitrary length - is this set somewhere? */
32
#define GSS_OID_MAX_LEN 32
33
 
34
/* gss-api prototypes; note that these are somewhat simplified versions of
35
 * the prototypes specified in RFC 2744. */
36
int gss_import_sec_context(
37
                const void*             input_token,
38
                size_t                  bufsize,
39
                struct gss_api_mech     *mech,
40
                struct gss_ctx          **ctx_id);
41
u32 gss_get_mic(
42
                struct gss_ctx          *ctx_id,
43
                struct xdr_buf          *message,
44
                struct xdr_netobj       *mic_token);
45
u32 gss_verify_mic(
46
                struct gss_ctx          *ctx_id,
47
                struct xdr_buf          *message,
48
                struct xdr_netobj       *mic_token);
49
u32 gss_wrap(
50
                struct gss_ctx          *ctx_id,
51
                int                     offset,
52
                struct xdr_buf          *outbuf,
53
                struct page             **inpages);
54
u32 gss_unwrap(
55
                struct gss_ctx          *ctx_id,
56
                int                     offset,
57
                struct xdr_buf          *inbuf);
58
u32 gss_delete_sec_context(
59
                struct gss_ctx          **ctx_id);
60
 
61
u32 gss_svc_to_pseudoflavor(struct gss_api_mech *, u32 service);
62
u32 gss_pseudoflavor_to_service(struct gss_api_mech *, u32 pseudoflavor);
63
char *gss_service_to_auth_domain_name(struct gss_api_mech *, u32 service);
64
 
65
struct pf_desc {
66
        u32     pseudoflavor;
67
        u32     service;
68
        char    *name;
69
        char    *auth_domain_name;
70
};
71
 
72
/* Different mechanisms (e.g., krb5 or spkm3) may implement gss-api, and
73
 * mechanisms may be dynamically registered or unregistered by modules. */
74
 
75
/* Each mechanism is described by the following struct: */
76
struct gss_api_mech {
77
        struct list_head        gm_list;
78
        struct module           *gm_owner;
79
        struct xdr_netobj       gm_oid;
80
        char                    *gm_name;
81
        const struct gss_api_ops *gm_ops;
82
        /* pseudoflavors supported by this mechanism: */
83
        int                     gm_pf_num;
84
        struct pf_desc *        gm_pfs;
85
};
86
 
87
/* and must provide the following operations: */
88
struct gss_api_ops {
89
        int (*gss_import_sec_context)(
90
                        const void              *input_token,
91
                        size_t                  bufsize,
92
                        struct gss_ctx          *ctx_id);
93
        u32 (*gss_get_mic)(
94
                        struct gss_ctx          *ctx_id,
95
                        struct xdr_buf          *message,
96
                        struct xdr_netobj       *mic_token);
97
        u32 (*gss_verify_mic)(
98
                        struct gss_ctx          *ctx_id,
99
                        struct xdr_buf          *message,
100
                        struct xdr_netobj       *mic_token);
101
        u32 (*gss_wrap)(
102
                        struct gss_ctx          *ctx_id,
103
                        int                     offset,
104
                        struct xdr_buf          *outbuf,
105
                        struct page             **inpages);
106
        u32 (*gss_unwrap)(
107
                        struct gss_ctx          *ctx_id,
108
                        int                     offset,
109
                        struct xdr_buf          *buf);
110
        void (*gss_delete_sec_context)(
111
                        void                    *internal_ctx_id);
112
};
113
 
114
int gss_mech_register(struct gss_api_mech *);
115
void gss_mech_unregister(struct gss_api_mech *);
116
 
117
/* returns a mechanism descriptor given an OID, and increments the mechanism's
118
 * reference count. */
119
struct gss_api_mech * gss_mech_get_by_OID(struct xdr_netobj *);
120
 
121
/* Returns a reference to a mechanism, given a name like "krb5" etc. */
122
struct gss_api_mech *gss_mech_get_by_name(const char *);
123
 
124
/* Similar, but get by pseudoflavor. */
125
struct gss_api_mech *gss_mech_get_by_pseudoflavor(u32);
126
 
127
/* Just increments the mechanism's reference count and returns its input: */
128
struct gss_api_mech * gss_mech_get(struct gss_api_mech *);
129
 
130
/* For every successful gss_mech_get or gss_mech_get_by_* call there must be a
131
 * corresponding call to gss_mech_put. */
132
void gss_mech_put(struct gss_api_mech *);
133
 
134
#endif /* __KERNEL__ */
135
#endif /* _LINUX_SUNRPC_GSS_API_H */
136
 

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.