Support for GSS-API contexts attached to requests.
[shibboleth/cpp-sp.git] / shibsp / GSSRequest.h
1 /*\r
2  *  Copyright 2010 Internet2\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 /**\r
18  * @file shibsp/GSSRequest.h\r
19  *\r
20  * Interface to a GSS-authenticated request.\r
21  */\r
22 \r
23 #if !defined(__shibsp_gssreq_h__) && defined(HAVE_GSSAPI)\r
24 #define __shibsp_gssreq_h__\r
25 \r
26 #include <shibsp/base.h>\r
27 #include <xmltooling/io/GenericRequest.h>\r
28 \r
29 #ifdef HAVE_GSSGNU\r
30 # include <gss.h>\r
31 #elif defined HAVE_GSSMIT\r
32 # include <gssapi/gssapi.h>\r
33 # include <gssapi/gssapi_generic.h>\r
34 #else\r
35 # include <gssapi.h>\r
36 #endif\r
37 \r
38 namespace shibsp {\r
39 \r
40     /**\r
41      * Interface to a GSS-authenticated request.\r
42      */\r
43     class SHIBSP_API GSSRequest : public virtual xmltooling::GenericRequest\r
44     {\r
45     protected:\r
46         GSSRequest();\r
47     public:\r
48         virtual ~GSSRequest();\r
49 \r
50         /**\r
51          * Returns the GSS-API context established for this request, or\r
52          * GSS_C_NO_CONTEXT if none is available.\r
53          *\r
54          * @return  a GSS-API context handle, or GSS_C_NO_CONTEXT\r
55          */\r
56         virtual gss_ctx_id_t getGSSContext() const=0;\r
57     };\r
58 };\r
59 \r
60 #endif /* __shibsp_gssreq_h__ */\r