/*
- * Copyright 2001-2006 Internet2
+ * Copyright 2001-2007 Internet2
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
/**
- * @file Assertions.h
+ * @file saml/saml1/core/Assertions.h
*
* XMLObjects representing the SAML 1.x Assertions schema
*/
-#ifndef __saml_assertions_h__
-#define __saml_assertions_h__
+#ifndef __saml1_assertions_h__
+#define __saml1_assertions_h__
-#include <saml/exceptions.h>
+#include <saml/RootObject.h>
#include <saml/util/SAMLConstants.h>
-#include <xmltooling/AttributeExtensibleXMLObject.h>
+
#include <xmltooling/ElementProxy.h>
-#include <xmltooling/SimpleElement.h>
#include <xmltooling/XMLObjectBuilder.h>
#include <xmltooling/signature/KeyInfo.h>
#include <xmltooling/signature/Signature.h>
#include <xmltooling/util/DateTime.h>
-#include <xmltooling/validation/ValidatingXMLObject.h>
#define DECL_SAML1OBJECTBUILDER(cname) \
- DECL_XMLOBJECTBUILDER(SAML_API,cname,opensaml::SAMLConstants::SAML1_NS,opensaml::SAMLConstants::SAML1_PREFIX)
+ DECL_XMLOBJECTBUILDER(SAML_API,cname,samlconstants::SAML1_NS,samlconstants::SAML1_PREFIX)
namespace opensaml {
/**
- * @namespace saml1
- * SAML 1.x class namespace
+ * @namespace opensaml::saml1
+ * SAML 1.x assertion namespace
*/
namespace saml1 {
// Forward references
class SAML_API Assertion;
- DECL_XMLOBJECT_SIMPLE(SAML_API,AssertionIDReference,Reference,SAML 1.x AssertionIDReference element);
- DECL_XMLOBJECT_SIMPLE(SAML_API,Audience,Uri,SAML 1.x Audience element);
+ DECL_XMLOBJECT_SIMPLE(SAML_API,AssertionIDReference,AssertionID,SAML 1.x AssertionIDReference element);
+ DECL_XMLOBJECT_SIMPLE(SAML_API,Audience,AudienceURI,SAML 1.x Audience element);
DECL_XMLOBJECT_SIMPLE(SAML_API,ConfirmationMethod,Method,SAML 1.x ConfirmationMethod element);
BEGIN_XMLOBJECT(SAML_API,Condition,xmltooling::XMLObject,SAML 1.x Condition element);
END_XMLOBJECT;
BEGIN_XMLOBJECT(SAML_API,Conditions,xmltooling::XMLObject,SAML 1.x Conditions element);
- DECL_XMLOBJECT_ATTRIB(NotBefore,NOTBEFORE,xmltooling::DateTime);
- DECL_XMLOBJECT_ATTRIB(NotOnOrAfter,NOTONORAFTER,xmltooling::DateTime);
+ DECL_DATETIME_ATTRIB(NotBefore,NOTBEFORE);
+ DECL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER);
DECL_TYPED_CHILDREN(AudienceRestrictionCondition);
DECL_TYPED_CHILDREN(DoNotCacheCondition);
DECL_TYPED_CHILDREN(Condition);
static const XMLCh TYPE_NAME[];
END_XMLOBJECT;
- BEGIN_XMLOBJECT(SAML_API,NameIdentifier,xmltooling::SimpleElement,SAML 1.x NameIdentifier element);
+ BEGIN_XMLOBJECT(SAML_API,NameIdentifier,xmltooling::XMLObject,SAML 1.x NameIdentifier element);
DECL_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER);
DECL_STRING_ATTRIB(Format,FORMAT);
- DECL_XMLOBJECT_CONTENT(Name);
+ DECL_SIMPLE_CONTENT(Name);
/** NameIdentifierType local name */
static const XMLCh TYPE_NAME[];
+ /** Unspecified name format ID */
+ static const XMLCh UNSPECIFIED[];
+ /** Email address name format ID */
+ static const XMLCh EMAIL[];
+ /** X.509 subject name format ID */
+ static const XMLCh X509_SUBJECT[];
+ /** Windows domain qualified name format ID */
+ static const XMLCh WIN_DOMAIN_QUALIFIED[];
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,SubjectConfirmationData,xmltooling::ElementProxy,SAML 1.x SubjectConfirmationData element);
+ END_XMLOBJECT;
BEGIN_XMLOBJECT(SAML_API,SubjectConfirmation,xmltooling::XMLObject,SAML 1.x SubjectConfirmation element);
DECL_TYPED_CHILDREN(ConfirmationMethod);
DECL_TYPED_FOREIGN_CHILD(KeyInfo,xmlsignature);
/** SubjectConfirmationType local name */
static const XMLCh TYPE_NAME[];
+ /** Deprecated SAML 1.0 Artifact confirmation method */
+ static const XMLCh ARTIFACT01[];
+ /** Artifact confirmation method */
+ static const XMLCh ARTIFACT[];
+ /** Bearer confirmation method */
+ static const XMLCh BEARER[];
+ /** Holder of key confirmation method */
+ static const XMLCh HOLDER_KEY[];
+ /** Sender vouches confirmation method */
+ static const XMLCh SENDER_VOUCHES[];
END_XMLOBJECT;
BEGIN_XMLOBJECT(SAML_API,Subject,xmltooling::XMLObject,SAML 1.x Subject element);
static const XMLCh TYPE_NAME[];
END_XMLOBJECT;
- BEGIN_XMLOBJECT(SAML_API,Action,xmltooling::SimpleElement,SAML 1.x Action element);
+ BEGIN_XMLOBJECT(SAML_API,Action,xmltooling::XMLObject,SAML 1.x Action element);
DECL_STRING_ATTRIB(Namespace,NAMESPACE);
- DECL_XMLOBJECT_CONTENT(Value);
+ DECL_SIMPLE_CONTENT(Action);
/** ActionType local name */
static const XMLCh TYPE_NAME[];
+ /** Read/Write/Execute/Delete/Control Action Namespace */
+ static const XMLCh RWEDC_NEG_ACTION_NAMESPACE[];
+ /** Read/Write/Execute/Delete/Control with Negation Action Namespace */
+ static const XMLCh RWEDC_ACTION_NAMESPACE[];
+ /** Get/Head/Put/Post Action Namespace */
+ static const XMLCh GHPP_ACTION_NAMESPACE[];
+ /** UNIX File Permissions Action Namespace */
+ static const XMLCh UNIX_ACTION_NAMESPACE[];
END_XMLOBJECT;
BEGIN_XMLOBJECT(SAML_API,Evidence,xmltooling::XMLObject,SAML 1.x Evidence element);
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,AttributeValue,xmltooling::ElementProxy,SAML 1.x AttributeValue element);
+ END_XMLOBJECT;
BEGIN_XMLOBJECT(SAML_API,AttributeStatement,SubjectStatement,SAML 1.x AttributeStatement element);
DECL_TYPED_CHILDREN(Attribute);
static const XMLCh TYPE_NAME[];
END_XMLOBJECT;
- BEGIN_XMLOBJECT(SAML_API,Advice,xmltooling::XMLObject,SAML 1.x Advice element);
+ BEGIN_XMLOBJECT(SAML_API,Advice,xmltooling::ElementExtensibleXMLObject,SAML 1.x Advice element);
DECL_TYPED_CHILDREN(AssertionIDReference);
DECL_TYPED_CHILDREN(Assertion);
- DECL_XMLOBJECT_CHILDREN(Other);
/** AdviceType local name */
static const XMLCh TYPE_NAME[];
END_XMLOBJECT;
- BEGIN_XMLOBJECT(SAML_API,Assertion,xmltooling::XMLObject,SAML 1.x Assertion element);
+ BEGIN_XMLOBJECT(SAML_API,Assertion,RootObject,SAML 1.x Assertion element);
+ bool isAssertion() const {
+ return true;
+ }
DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
DECL_STRING_ATTRIB(AssertionID,ASSERTIONID);
DECL_STRING_ATTRIB(Issuer,ISSUER);
- DECL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
+ DECL_INHERITED_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
DECL_TYPED_CHILD(Conditions);
DECL_TYPED_CHILD(Advice);
DECL_TYPED_CHILDREN(Statement);
DECL_TYPED_CHILDREN(SubjectStatement);
DECL_TYPED_CHILDREN(AuthenticationStatement);
- DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
+ DECL_TYPED_CHILDREN(AttributeStatement);
+ DECL_TYPED_CHILDREN(AuthorizationDecisionStatement);
+ DECL_INHERITED_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
/** AssertionType local name */
static const XMLCh TYPE_NAME[];
END_XMLOBJECT;
DECL_SAML1OBJECTBUILDER(SubjectLocality);
/**
- * Registers builders and validators for Assertion classes into the runtime.
+ * Registers builders and validators for SAML 1.x Assertion classes into the runtime.
*/
void SAML_API registerAssertionClasses();
};
};
-#endif /* __saml_assertions_h__ */
+#endif /* __saml1_assertions_h__ */