]> git.ipfire.org Git - thirdparty/squid.git/blob - acinclude/krb5.m4
Merged from trunk
[thirdparty/squid.git] / acinclude / krb5.m4
1 dnl
2 dnl AUTHOR: Squid Web Cache team
3 dnl
4 dnl SQUID Web Proxy Cache http://www.squid-cache.org/
5 dnl ----------------------------------------------------------
6 dnl Squid is the result of efforts by numerous individuals from
7 dnl the Internet community; see the CONTRIBUTORS file for full
8 dnl details. Many organizations have provided support for Squid's
9 dnl development; see the SPONSORS file for full details. Squid is
10 dnl Copyrighted (C) 2001 by the Regents of the University of
11 dnl California; see the COPYRIGHT file for full details. Squid
12 dnl incorporates software developed and/or copyrighted by other
13 dnl sources; see the CREDITS file for full details.
14 dnl
15 dnl This program is free software; you can redistribute it and/or modify
16 dnl it under the terms of the GNU General Public License as published by
17 dnl the Free Software Foundation; either version 2 of the License, or
18 dnl (at your option) any later version.
19 dnl
20 dnl This program is distributed in the hope that it will be useful,
21 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
22 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 dnl GNU General Public License for more details.
24 dnl
25 dnl You should have received a copy of the GNU General Public License
26 dnl along with this program; if not, write to the Free Software
27 dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
28
29 dnl these checks must be performed in the same order as here defined,
30 dnl and have mostly been lifted out of an inlined configure.in.
31
32 dnl checks for a broken solaris header file, and sets squid_cv_broken_krb5_h
33 dnl to yes if that's the case
34 AC_DEFUN([SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H], [
35 AC_CACHE_CHECK([for broken Solaris krb5.h],squid_cv_broken_krb5_h, [
36 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
37 #include <krb5.h>
38 int i;
39 ]])], [ squid_cv_broken_krb5_h=no ], [
40 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
41 #if defined(__cplusplus)
42 #define KRB5INT_BEGIN_DECLS extern "C" {
43 #define KRB5INT_END_DECLS
44 KRB5INT_BEGIN_DECLS
45 #endif
46 #include <krb5.h>
47 int i;
48 ]])], [ squid_cv_broken_krb5_h=yes ], [ squid_cv_broken_krb5_h=no ])
49 ])
50 ])
51 ]) dnl SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
52
53
54 AC_DEFUN([SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H], [
55 AC_CACHE_CHECK([for broken Heimdal krb5.h],squid_cv_broken_heimdal_krb5_h, [
56 AC_RUN_IFELSE([AC_LANG_SOURCE([[
57 #include <krb5.h>
58 int
59 main(void)
60 {
61 krb5_context context;
62
63 krb5_init_context(&context);
64
65 return 0;
66 }
67 ]])], [ squid_cv_broken_heimdal_krb5_h=no ], [
68 AC_RUN_IFELSE([AC_LANG_SOURCE([[
69 #if defined(__cplusplus)
70 extern "C" {
71 #endif
72 #include <krb5.h>
73 #if defined(__cplusplus)
74 }
75 #endif
76 int
77 main(void)
78 {
79 krb5_context context;
80
81 krb5_init_context(&context);
82
83 return 0;
84 }
85 ]])], [ squid_cv_broken_heimdal_krb5_h=yes ], [ squid_cv_broken_heimdal_krb5_h=no ])
86 ])
87 ])
88 ]) dnl SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
89
90 dnl check the max skew in the krb5 context, and sets squid_cv_max_skew_context
91 AC_DEFUN([SQUID_CHECK_MAX_SKEW_IN_KRB5_CONTEXT],[
92 AC_CACHE_CHECK([for max_skew in struct krb5_context],
93 squid_cv_max_skew_context, [
94 AC_COMPILE_IFELSE([
95 AC_LANG_PROGRAM([[
96 #if HAVE_BROKEN_SOLARIS_KRB5_H
97 #if defined(__cplusplus)
98 #define KRB5INT_BEGIN_DECLS extern "C" {
99 #define KRB5INT_END_DECLS
100 KRB5INT_BEGIN_DECLS
101 #endif
102 #endif
103 #include <krb5.h>
104 krb5_context kc; kc->max_skew = 1;
105 ]])
106 ],[ squid_cv_max_skew_context=yes ],
107 [ squid_cv_max_skew_context=no ])
108 ])
109 ])
110
111 dnl check whether the kerberos context has a memory cache. Sets
112 dnl squid_cv_memory_cache if that's the case.
113 AC_DEFUN([SQUID_CHECK_KRB5_CONTEXT_MEMORY_CACHE],[
114 AC_CACHE_CHECK([for memory cache], squid_cv_memory_cache, [
115 AC_RUN_IFELSE([
116 AC_LANG_SOURCE([[
117 #if HAVE_BROKEN_SOLARIS_KRB5_H
118 #if defined(__cplusplus)
119 #define KRB5INT_BEGIN_DECLS extern "C" {
120 #define KRB5INT_END_DECLS
121 KRB5INT_BEGIN_DECLS
122 #endif
123 #endif
124 #include <krb5.h>
125 main()
126 {
127 krb5_context context;
128 krb5_ccache cc;
129
130 krb5_init_context(&context);
131 return krb5_cc_resolve(context, "MEMORY:test_cache", &cc);
132 }
133 ]])
134 ], [ squid_cv_memory_cache=yes ], [ squid_cv_memory_cache=no ], [:])
135 ])
136 ])
137
138
139 dnl checks that gssapi is ok, and sets squid_cv_working_gssapi accordingly
140 AC_DEFUN([SQUID_CHECK_WORKING_GSSAPI], [
141 AC_CACHE_CHECK([for working gssapi], squid_cv_working_gssapi, [
142 AC_RUN_IFELSE([AC_LANG_SOURCE([[
143 #ifdef HAVE_HEIMDAL_KERBEROS
144 #ifdef HAVE_GSSAPI_GSSAPI_H
145 #include <gssapi/gssapi.h>
146 #elif defined(HAVE_GSSAPI_H)
147 #include <gssapi.h>
148 #endif
149 #else
150 #ifdef HAVE_GSSAPI_GSSAPI_H
151 #include <gssapi/gssapi.h>
152 #elif defined(HAVE_GSSAPI_H)
153 #include <gssapi.h>
154 #endif
155 #ifdef HAVE_GSSAPI_GSSAPI_KRB5_H
156 #include <gssapi/gssapi_krb5.h>
157 #endif
158 #ifdef HAVE_GSSAPI_GSSAPI_GENERIC_H
159 #include <gssapi/gssapi_generic.h>
160 #endif
161 #endif
162 int
163 main(void)
164 {
165 OM_uint32 val;
166 gss_OID_set set;
167
168 gss_create_empty_oid_set(&val, &set);
169
170 return 0;
171 }
172 ]])], [ squid_cv_working_gssapi=yes ], [ squid_cv_working_gssapi=no ], [:])])
173 ])
174
175
176 dnl check for a working spnego, and set squid_cv_have_spnego
177 AC_DEFUN([SQUID_CHECK_SPNEGO_SUPPORT], [
178 AC_CACHE_CHECK([for spnego support], squid_cv_have_spnego, [
179 AC_RUN_IFELSE([AC_LANG_SOURCE([[
180 #ifdef HAVE_HEIMDAL_KERBEROS
181 #ifdef HAVE_GSSAPI_GSSAPI_H
182 #include <gssapi/gssapi.h>
183 #elif defined(HAVE_GSSAPI_H)
184 #include <gssapi.h>
185 #endif
186 #else
187 #ifdef HAVE_GSSAPI_GSSAPI_H
188 #include <gssapi/gssapi.h>
189 #elif defined(HAVE_GSSAPI_H)
190 #include <gssapi.h>
191 #endif
192 #ifdef HAVE_GSSAPI_GSSAPI_KRB5_H
193 #include <gssapi/gssapi_krb5.h>
194 #endif
195 #ifdef HAVE_GSSAPI_GSSAPI_GENERIC_H
196 #include <gssapi/gssapi_generic.h>
197 #endif
198 #endif
199 #include <string.h>
200 int main(int argc, char *argv[]) {
201 OM_uint32 major_status,minor_status;
202 gss_OID_set gss_mech_set;
203 int i;
204
205 static gss_OID_desc _gss_mech_spnego = {6, (void *)"\x2b\x06\x01\x05\x05\x02"};
206 gss_OID gss_mech_spnego = &_gss_mech_spnego;
207
208 major_status = gss_indicate_mechs( &minor_status, &gss_mech_set);
209
210 for (i=0;i<gss_mech_set->count;i++) {
211 if (!memcmp(gss_mech_set->elements[i].elements,gss_mech_spnego->elements,gss_mech_set->elements[i].length)) {
212 return 0;
213 }
214 }
215
216 return 1;
217 }
218 ]])],
219 [ squid_cv_have_spnego=yes ], [ squid_cv_have_spnego=no ],[:])])
220 ])
221
222 dnl checks that krb5 is functional. Sets squid_cv_working_krb5
223 AC_DEFUN([SQUID_CHECK_WORKING_KRB5],[
224 AC_CACHE_CHECK([for working krb5], squid_cv_working_krb5, [
225 AC_RUN_IFELSE([AC_LANG_SOURCE([[
226 #ifdef HAVE_KRB5_H
227 #if HAVE_BROKEN_SOLARIS_KRB5_H
228 #if defined(__cplusplus)
229 #define KRB5INT_BEGIN_DECLS extern "C" {
230 #define KRB5INT_END_DECLS
231 KRB5INT_BEGIN_DECLS
232 #endif
233 #endif
234 #if HAVE_BROKEN_HEIMDAL_KRB5_H
235 extern "C" {
236 #include <krb5.h>
237 }
238 #else
239 #include <krb5.h>
240 #endif
241 #endif
242
243 int
244 main(void)
245 {
246 krb5_context context;
247
248 krb5_init_context(&context);
249
250 return 0;
251 }
252 ]])], [ squid_cv_working_krb5=yes ], [ squid_cv_working_krb5=no ],[:])])
253 ])