+
+ class SAML_DLLLOCAL DigestMethodImpl : public virtual DigestMethod,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ public:
+ virtual ~DigestMethodImpl() {
+ XMLString::release(&m_Algorithm);
+ }
+
+ DigestMethodImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ m_Algorithm = nullptr;
+ }
+
+ DigestMethodImpl(const DigestMethodImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ setAlgorithm(src.getAlgorithm());
+ VectorOf(XMLObject) v=getUnknownXMLObjects();
+ for (vector<XMLObject*>::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i)
+ v.push_back((*i)->clone());
+ }
+
+ IMPL_STRING_ATTRIB(Algorithm);
+
+ IMPL_XMLOBJECT_CLONE(DigestMethod);
+ IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
+
+ protected:
+ void marshallAttributes(DOMElement* domElement) const {
+ MARSHALL_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
+ }
+
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ // Unknown child.
+ getUnknownXMLObjects().push_back(childXMLObject);
+ }
+
+ void processAttribute(const DOMAttr* attribute) {
+ PROC_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
+ }
+ };
+
+ class SAML_DLLLOCAL SigningMethodImpl : public virtual SigningMethod,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ public:
+ virtual ~SigningMethodImpl() {
+ XMLString::release(&m_Algorithm);
+ XMLString::release(&m_MinKeySize);
+ XMLString::release(&m_MaxKeySize);
+ }
+
+ SigningMethodImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ m_Algorithm = nullptr;
+ m_MinKeySize = nullptr;
+ m_MaxKeySize = nullptr;
+ }
+
+ SigningMethodImpl(const SigningMethodImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ setAlgorithm(src.getAlgorithm());
+ setMinKeySize(src.m_MinKeySize);
+ setMaxKeySize(src.m_MaxKeySize);
+ VectorOf(XMLObject) v=getUnknownXMLObjects();
+ for (vector<XMLObject*>::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i)
+ v.push_back((*i)->clone());
+ }
+
+ IMPL_XMLOBJECT_CLONE(SigningMethod);
+ IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
+
+ IMPL_STRING_ATTRIB(Algorithm);
+ IMPL_INTEGER_ATTRIB(MinKeySize);
+ IMPL_INTEGER_ATTRIB(MaxKeySize);
+
+ protected:
+ void marshallAttributes(DOMElement* domElement) const {
+ MARSHALL_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
+ MARSHALL_INTEGER_ATTRIB(MinKeySize,MINKEYSIZE,nullptr);
+ MARSHALL_INTEGER_ATTRIB(MaxKeySize,MAXKEYSIZE,nullptr);
+ }
+
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ // Unknown child.
+ getUnknownXMLObjects().push_back(childXMLObject);
+ }
+
+ void processAttribute(const DOMAttr* attribute) {
+ PROC_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
+ PROC_INTEGER_ATTRIB(MinKeySize,MINKEYSIZE,nullptr);
+ PROC_INTEGER_ATTRIB(MaxKeySize,MAXKEYSIZE,nullptr);
+ }
+ };
+