Comments
[mech_eap.orig] / util_radius.cpp
1 /*
2  * Copyright (c) 2010, JANET(UK)
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * 3. Neither the name of JANET(UK) nor the names of its contributors
17  *    may be used to endorse or promote products derived from this software
18  *    without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30  * SUCH DAMAGE.
31  */
32
33 #include "gssapiP_eap.h"
34
35 gss_eap_radius_attr_provider::gss_eap_radius_attr_provider(void)
36 {
37     m_authenticated = false;
38 }
39
40 gss_eap_radius_attr_provider::~gss_eap_radius_attr_provider(void)
41 {
42 }
43
44 bool
45 gss_eap_radius_attr_provider::initFromExistingContext(const gss_eap_attr_ctx *manager,
46                                                       const gss_eap_attr_provider *ctx)
47 {
48     if (!gss_eap_attr_provider::initFromExistingContext(manager, ctx))
49         return false;
50
51     return true;
52 }
53
54 bool
55 gss_eap_radius_attr_provider::initFromGssContext(const gss_eap_attr_ctx *manager,
56                                                  const gss_cred_id_t gssCred,
57                                                  const gss_ctx_id_t gssCtx)
58 {
59     if (!gss_eap_attr_provider::initFromGssContext(manager, gssCred, gssCtx))
60         return false;
61
62     return true;
63 }
64
65 bool
66 gss_eap_radius_attr_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute, void *data) const
67 {
68     return true;
69 }
70
71 void
72 gss_eap_radius_attr_provider::setAttribute(int complete,
73                                            const gss_buffer_t attr,
74                                            const gss_buffer_t value)
75 {
76 }
77
78 void
79 gss_eap_radius_attr_provider::deleteAttribute(const gss_buffer_t value)
80 {
81 }
82
83 bool
84 gss_eap_radius_attr_provider::getAttribute(const gss_buffer_t attr,
85                                            int *authenticated,
86                                            int *complete,
87                                            gss_buffer_t value,
88                                            gss_buffer_t display_value,
89                                            int *more) const
90 {
91     return false;
92 }
93
94 bool
95 gss_eap_radius_attr_provider::getAttribute(unsigned int attr,
96                                            int *authenticated,
97                                            int *complete,
98                                            gss_buffer_t value,
99                                            gss_buffer_t display_value,
100                                            int *more) const
101 {
102     return false;
103 }
104
105 gss_any_t
106 gss_eap_radius_attr_provider::mapToAny(int authenticated,
107                                        gss_buffer_t type_id) const
108 {
109     return (gss_any_t)NULL;
110 }
111
112 void
113 gss_eap_radius_attr_provider::releaseAnyNameMapping(gss_buffer_t type_id,
114                                                     gss_any_t input) const
115 {
116 }
117
118 void
119 gss_eap_radius_attr_provider::exportToBuffer(gss_buffer_t buffer) const
120 {
121     buffer->length = 0;
122     buffer->value = NULL;
123 }
124
125 bool
126 gss_eap_radius_attr_provider::initFromBuffer(const gss_eap_attr_ctx *ctx,
127                                              const gss_buffer_t buffer)
128 {
129     if (!gss_eap_attr_provider::initFromBuffer(ctx, buffer))
130         return false;
131
132     return true;
133 }
134
135 bool
136 gss_eap_radius_attr_provider::init(void)
137 {
138     gss_eap_attr_ctx::registerProvider(ATTR_TYPE_RADIUS,
139                                        "urn:ietf:params:gss-eap:radius-avp",
140                                        gss_eap_radius_attr_provider::createAttrContext);
141     return true;
142 }
143
144 void
145 gss_eap_radius_attr_provider::finalize(void)
146 {
147     gss_eap_attr_ctx::unregisterProvider(ATTR_TYPE_RADIUS);
148 }
149
150 gss_eap_attr_provider *
151 gss_eap_radius_attr_provider::createAttrContext(void)
152 {
153     return new gss_eap_radius_attr_provider;
154 }
155
156 OM_uint32
157 gssEapRadiusAttrProviderInit(OM_uint32 *minor)
158 {
159     return gss_eap_radius_attr_provider::init()
160         ? GSS_S_COMPLETE : GSS_S_FAILURE;
161 }
162
163 OM_uint32
164 gssEapRadiusAttrProviderFinalize(OM_uint32 *minor)
165 {
166     gss_eap_radius_attr_provider::finalize();
167     return GSS_S_COMPLETE;
168 }