Completed SAML 1 assertion schema, started test cases.
[shibboleth/cpp-opensaml.git] / saml / saml1 / core / Assertions.h
index 23cb0ef..eb138ae 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <saml/exceptions.h>
 #include <saml/util/SAMLConstants.h>
+#include <xmltooling/AttributeExtensibleXMLObject.h>
 #include <xmltooling/ElementProxy.h>
 #include <xmltooling/SimpleElement.h>
 #include <xmltooling/XMLObjectBuilder.h>
@@ -44,6 +45,7 @@ namespace opensaml {
      */
     namespace saml1 {
         
+        // Forward references
         class SAML_API Assertion;
         
         DECL_XMLOBJECT_SIMPLE(SAML_API,AssertionIDReference,Reference,SAML 1.x AssertionIDReference element);
@@ -77,12 +79,25 @@ namespace opensaml {
         BEGIN_XMLOBJECT(SAML_API,NameIdentifier,xmltooling::SimpleElement,SAML 1.x NameIdentifier element);
             DECL_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER);
             DECL_STRING_ATTRIB(Format,FORMAT);
+            DECL_XMLOBJECT_CONTENT(Name);
             /** NameIdentifierType local name */
             static const XMLCh TYPE_NAME[];
         END_XMLOBJECT;
 
-        BEGIN_XMLOBJECT(SAML_API,SubjectConfirmationData,xmltooling::ElementProxy,SAML 1.x SubjectConfirmationData element);
-        END_XMLOBJECT;
+        /** SAML 1.x SubjectConfirmationData element */
+        class SAML_API SubjectConfirmationData : public virtual xmltooling::ElementProxy,
+            public virtual xmltooling::AttributeExtensibleXMLObject,
+            public virtual xmltooling::ValidatingXMLObject
+        {
+        protected:
+            SubjectConfirmationData() {}
+        public:
+            virtual ~SubjectConfirmationData() {}
+            /** Type-specific clone method. */
+            virtual SubjectConfirmationData* cloneSubjectConfirmationData() const=0;
+            /** Element local name. */
+            static const XMLCh LOCAL_NAME[];
+        };
         
         BEGIN_XMLOBJECT(SAML_API,SubjectConfirmation,xmltooling::XMLObject,SAML 1.x SubjectConfirmation element);
             DECL_TYPED_CHILDREN(ConfirmationMethod);
@@ -109,7 +124,7 @@ namespace opensaml {
         BEGIN_XMLOBJECT(SAML_API,SubjectLocality,xmltooling::XMLObject,SAML 1.x SubjectLocality element);
             DECL_STRING_ATTRIB(IPAddress,IPADDRESS);
             DECL_STRING_ATTRIB(DNSAddress,DNSADDRESS);
-            /** SubjectLocality local name */
+            /** SubjectLocalityType local name */
             static const XMLCh TYPE_NAME[];
         END_XMLOBJECT;
 
@@ -117,7 +132,7 @@ namespace opensaml {
             DECL_XMLOBJECT_ATTRIB(AuthorityKind,AUTHORITYKIND,xmltooling::QName);
             DECL_STRING_ATTRIB(Location,LOCATION);
             DECL_STRING_ATTRIB(Binding,BINDING);
-            /** AuthorityBinding local name */
+            /** AuthorityBindingType local name */
             static const XMLCh TYPE_NAME[];
         END_XMLOBJECT;
 
@@ -126,7 +141,70 @@ namespace opensaml {
             DECL_DATETIME_ATTRIB(AuthenticationInstant,AUTHENTICATIONINSTANT);
             DECL_TYPED_CHILD(SubjectLocality);
             DECL_TYPED_CHILDREN(AuthorityBinding);
-            /** AuthenticationStatement local name */
+            /** AuthenticationStatementType local name */
+            static const XMLCh TYPE_NAME[];
+        END_XMLOBJECT;
+
+        BEGIN_XMLOBJECT(SAML_API,Action,xmltooling::SimpleElement,SAML 1.x Action element);
+            DECL_STRING_ATTRIB(Namespace,NAMESPACE);
+            DECL_XMLOBJECT_CONTENT(Value);
+            /** ActionType local name */
+            static const XMLCh TYPE_NAME[];
+        END_XMLOBJECT;
+
+        BEGIN_XMLOBJECT(SAML_API,Evidence,xmltooling::XMLObject,SAML 1.x Evidence element);
+            DECL_TYPED_CHILDREN(AssertionIDReference);
+            DECL_TYPED_CHILDREN(Assertion);
+            /** EvidenceType local name */
+            static const XMLCh TYPE_NAME[];
+        END_XMLOBJECT;
+
+        BEGIN_XMLOBJECT(SAML_API,AuthorizationDecisionStatement,SubjectStatement,SAML 1.x AuthorizationDecisionStatement element);
+            DECL_STRING_ATTRIB(Resource,RESOURCE);
+            DECL_STRING_ATTRIB(Decision,DECISION);
+            DECL_TYPED_CHILDREN(Action);
+            DECL_TYPED_CHILD(Evidence);
+            /** AuthorizationDecisionStatementType local name */
+            static const XMLCh TYPE_NAME[];
+            /** Permit Decision */
+            static const XMLCh DECISION_PERMIT[];
+            /** Deny Decision */
+            static const XMLCh DECISION_DENY[];
+            /** Indeterminate Decision */
+            static const XMLCh DECISION_INDETERMINATE[];
+        END_XMLOBJECT;
+
+        BEGIN_XMLOBJECT(SAML_API,AttributeDesignator,xmltooling::XMLObject,SAML 1.x AttributeDesignator element);
+            DECL_STRING_ATTRIB(AttributeName,ATTRIBUTENAME);
+            DECL_STRING_ATTRIB(AttributeNamespace,ATTRIBUTENAMESPACE);
+            /** AttributeDesignatorType local name */
+            static const XMLCh TYPE_NAME[];
+        END_XMLOBJECT;
+
+        BEGIN_XMLOBJECT(SAML_API,Attribute,AttributeDesignator,SAML 1.x Attribute element);
+            DECL_XMLOBJECT_CHILDREN(AttributeValue);
+            /** AttributeType local name */
+            static const XMLCh TYPE_NAME[];
+        END_XMLOBJECT;
+
+        /** SAML 1.x AttributeValue element */
+        class SAML_API AttributeValue : public virtual xmltooling::ElementProxy,
+            public virtual xmltooling::AttributeExtensibleXMLObject,
+            public virtual xmltooling::ValidatingXMLObject
+        {
+        protected:
+            AttributeValue() {}
+        public:
+            virtual ~AttributeValue() {}
+            /** Type-specific clone method. */
+            virtual AttributeValue* cloneAttributeValue() const=0;
+            /** Element local name. */
+            static const XMLCh LOCAL_NAME[];
+        };
+
+        BEGIN_XMLOBJECT(SAML_API,AttributeStatement,SubjectStatement,SAML 1.x AttributeStatement element);
+            DECL_TYPED_CHILDREN(Attribute);
+            /** AttributeStatementType local name */
             static const XMLCh TYPE_NAME[];
         END_XMLOBJECT;
 
@@ -153,16 +231,23 @@ namespace opensaml {
             static const XMLCh TYPE_NAME[];
         END_XMLOBJECT;
 
+        DECL_SAML1OBJECTBUILDER(Action);
         DECL_SAML1OBJECTBUILDER(Advice);
         DECL_SAML1OBJECTBUILDER(Assertion);
         DECL_SAML1OBJECTBUILDER(AssertionIDReference);
+        DECL_SAML1OBJECTBUILDER(Attribute);
+        DECL_SAML1OBJECTBUILDER(AttributeDesignator);
+        DECL_SAML1OBJECTBUILDER(AttributeStatement);
+        DECL_SAML1OBJECTBUILDER(AttributeValue);
         DECL_SAML1OBJECTBUILDER(Audience);
         DECL_SAML1OBJECTBUILDER(AudienceRestrictionCondition);
         DECL_SAML1OBJECTBUILDER(AuthenticationStatement);
+        DECL_SAML1OBJECTBUILDER(AuthorizationDecisionStatement);
         DECL_SAML1OBJECTBUILDER(AuthorityBinding);
-        DECL_SAML1OBJECTBUILDER(DoNotCacheCondition);
         DECL_SAML1OBJECTBUILDER(Conditions);
         DECL_SAML1OBJECTBUILDER(ConfirmationMethod);
+        DECL_SAML1OBJECTBUILDER(DoNotCacheCondition);
+        DECL_SAML1OBJECTBUILDER(Evidence);
         DECL_SAML1OBJECTBUILDER(NameIdentifier);
         DECL_SAML1OBJECTBUILDER(Subject);
         DECL_SAML1OBJECTBUILDER(SubjectConfirmation);