Completed 2.0 assertions schema classes.
[shibboleth/cpp-opensaml.git] / saml / saml1 / core / Protocols.h
1 /*
2  *  Copyright 2001-2006 Internet2
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /**
18  * @file Protocols.h
19  * 
20  * XMLObjects representing the SAML 1.x Protocols schema
21  */
22
23 #ifndef __saml1_protocols_h__
24 #define __saml1_protocols_h__
25
26 #include <saml/saml1/core/Assertions.h>
27
28 #define DECL_SAML1POBJECTBUILDER(cname) \
29     DECL_XMLOBJECTBUILDER(SAML_API,cname,opensaml::SAMLConstants::SAML1P_NS,opensaml::SAMLConstants::SAML1P_PREFIX)
30
31 namespace opensaml {
32
33     /**
34      * @namespace saml1p
35      * SAML 1.x protocol namespace
36      */
37     namespace saml1p {
38         
39         DECL_XMLOBJECT_SIMPLE(SAML_API,AssertionArtifact,Artifact,SAML 1.x AssertionArtifact element);
40         DECL_XMLOBJECT_SIMPLE(SAML_API,StatusMessage,Message,SAML 1.x StatusMessage element);
41         
42         BEGIN_XMLOBJECT(SAML_API,RespondWith,xmltooling::XMLObject,SAML 1.x RespondWith element);
43             /** Gets the QName content of the element. */
44             virtual xmltooling::QName* getQName() const=0;
45             /** Sets the QName content of the element. */
46             virtual void setQName(const xmltooling::QName* qname)=0;
47         END_XMLOBJECT;
48
49         BEGIN_XMLOBJECT(SAML_API,Query,xmltooling::XMLObject,SAML 1.x Query element);
50         END_XMLOBJECT;
51
52         BEGIN_XMLOBJECT(SAML_API,SubjectQuery,Query,SAML 1.x SubjectQuery element);
53             DECL_TYPED_FOREIGN_CHILD(Subject,saml1);
54         END_XMLOBJECT;
55
56         BEGIN_XMLOBJECT(SAML_API,AuthenticationQuery,SubjectQuery,SAML 1.x AuthenticationQuery element);
57             DECL_STRING_ATTRIB(AuthenticationMethod,AUTHENTICATIONMETHOD);
58             /** AuthenticationQueryType local name */
59             static const XMLCh TYPE_NAME[];
60         END_XMLOBJECT;
61
62         BEGIN_XMLOBJECT(SAML_API,AttributeQuery,SubjectQuery,SAML 1.x AttributeQuery element);
63             DECL_STRING_ATTRIB(Resource,RESOURCE);
64             DECL_TYPED_FOREIGN_CHILDREN(AttributeDesignator,saml1);
65             /** AttributeQueryType local name */
66             static const XMLCh TYPE_NAME[];
67         END_XMLOBJECT;
68
69         BEGIN_XMLOBJECT(SAML_API,AuthorizationDecisionQuery,SubjectQuery,SAML 1.x AuthorizationDecisionQuery element);
70             DECL_STRING_ATTRIB(Resource,RESOURCE);
71             DECL_TYPED_FOREIGN_CHILDREN(Action,saml1);
72             DECL_TYPED_FOREIGN_CHILD(Evidence,saml1);
73             /** AuthorizationDecisionQueryType local name */
74             static const XMLCh TYPE_NAME[];
75         END_XMLOBJECT;
76
77         BEGIN_XMLOBJECT(SAML_API,AbstractRequest,SignableObject,SAML 1.x RequestAbstractType base type);
78             DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
79             DECL_STRING_ATTRIB(RequestID,REQUESTID);
80             DECL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
81             DECL_TYPED_CHILDREN(RespondWith);
82             DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
83         END_XMLOBJECT;
84
85         BEGIN_XMLOBJECT(SAML_API,Request,AbstractRequest,SAML 1.x Request element);
86             DECL_TYPED_CHILD(Query);
87             DECL_TYPED_CHILD(SubjectQuery);
88             DECL_TYPED_CHILD(AuthenticationQuery);
89             DECL_TYPED_CHILD(AttributeQuery);
90             DECL_TYPED_CHILD(AuthorizationDecisionQuery);
91             DECL_TYPED_FOREIGN_CHILDREN(AssertionIDReference,saml1);
92             DECL_TYPED_CHILDREN(AssertionArtifact);
93             /** RequestType local name */
94             static const XMLCh TYPE_NAME[];
95         END_XMLOBJECT;
96
97         BEGIN_XMLOBJECT(SAML_API,StatusCode,xmltooling::XMLObject,SAML 1.x StatusCode element);
98             DECL_XMLOBJECT_ATTRIB(Value,VALUE,xmltooling::QName);
99             DECL_TYPED_CHILD(StatusCode);
100             /** StatusCodeType local name */
101             static const XMLCh TYPE_NAME[];
102             /** Success Status Code */
103             static xmltooling::QName SUCCESS;
104             /** Requester Error Status Code */
105             static xmltooling::QName REQUESTER;
106             /** Responder Error Status Code */
107             static xmltooling::QName RESPONDER;
108             /** Version Mismatch Error Status Code */
109             static xmltooling::QName VERSIONMISMATCH;
110         END_XMLOBJECT;
111
112         BEGIN_XMLOBJECT(SAML_API,StatusDetail,xmltooling::XMLObject,SAML 1.x StatusDetail element);
113             DECL_XMLOBJECT_CHILDREN(Detail);
114             /** StatusDetailType local name */
115             static const XMLCh TYPE_NAME[];
116         END_XMLOBJECT;
117
118         BEGIN_XMLOBJECT(SAML_API,Status,xmltooling::XMLObject,SAML 1.x Status element);
119             DECL_TYPED_CHILD(StatusCode);
120             DECL_TYPED_CHILD(StatusMessage);
121             DECL_TYPED_CHILD(StatusDetail);
122             /** StatusType local name */
123             static const XMLCh TYPE_NAME[];
124         END_XMLOBJECT;
125
126         BEGIN_XMLOBJECT(SAML_API,AbstractResponse,SignableObject,SAML 1.x ResponseAbstractType base type);
127             DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
128             DECL_STRING_ATTRIB(ResponseID,RESPONSEID);
129             DECL_STRING_ATTRIB(InResponseTo,INRESPONSETO);
130             DECL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
131             DECL_STRING_ATTRIB(Recipient,RECIPIENT);
132             DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
133         END_XMLOBJECT;
134
135         BEGIN_XMLOBJECT(SAML_API,Response,AbstractResponse,SAML 1.x Response element);
136             DECL_TYPED_CHILD(Status);
137             DECL_TYPED_FOREIGN_CHILDREN(Assertion,saml1);
138             /** ResponseType local name */
139             static const XMLCh TYPE_NAME[];
140         END_XMLOBJECT;
141
142         DECL_SAML1POBJECTBUILDER(AssertionArtifact);
143         DECL_SAML1POBJECTBUILDER(AttributeQuery);
144         DECL_SAML1POBJECTBUILDER(AuthenticationQuery);
145         DECL_SAML1POBJECTBUILDER(AuthorizationDecisionQuery);
146         DECL_SAML1POBJECTBUILDER(Request);
147         DECL_SAML1POBJECTBUILDER(RespondWith);
148         DECL_SAML1POBJECTBUILDER(Response);
149         DECL_SAML1POBJECTBUILDER(Status);
150         DECL_SAML1POBJECTBUILDER(StatusCode);
151         DECL_SAML1POBJECTBUILDER(StatusDetail);
152         DECL_SAML1POBJECTBUILDER(StatusMessage);
153         
154         /**
155          * Registers builders and validators for Protocol classes into the runtime.
156          */
157         void SAML_API registerProtocolClasses();
158     };
159 };
160
161 #endif /* __saml1_protocols_h__ */