/*
-* Copyright 2001-2006 Internet2
+ * Copyright 2001-2009 Internet2
*
-* Licensed under the Apache License, Version 2.0 (the "License");
+ * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
/**
* KeyInfoImpl.cpp
*
- * Implementation classes for KeyInfo schema
+ * Implementation classes for KeyInfo schema.
*/
#include "internal.h"
-#include "AbstractElementProxy.h"
+#include "AbstractComplexElement.h"
+#include "AbstractSimpleElement.h"
#include "exceptions.h"
#include "io/AbstractXMLObjectMarshaller.h"
#include "io/AbstractXMLObjectUnmarshaller.h"
#include "signature/KeyInfo.h"
#include "util/XMLHelper.h"
-#include "validation/AbstractValidatingXMLObject.h"
#include <xercesc/util/XMLUniDefs.hpp>
using namespace xmlsignature;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
+using xmlconstants::XMLSIG_NS;
#if defined (_MSC_VER)
#pragma warning( push )
namespace xmlsignature {
- class XMLTOOL_DLLLOCAL DSAKeyValueImpl : public DSAKeyValue,
+ class XMLTOOL_DLLLOCAL DSAKeyValueImpl : public virtual DSAKeyValue,
+ public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
- public AbstractValidatingXMLObject,
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
public:
virtual ~DSAKeyValueImpl() {}
- DSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ DSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
DSAKeyValueImpl(const DSAKeyValueImpl& src)
- : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src), AbstractValidatingXMLObject(src) {
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setP(src.getP());
- setQ(src.getQ());
- setG(src.getG());
- setY(src.getY());
- setJ(src.getJ());
- setSeed(src.getSeed());
- setPgenCounter(src.getPgenCounter());
+ if (src.getP())
+ setP(src.getP()->cloneP());
+ if (src.getQ())
+ setQ(src.getQ()->cloneQ());
+ if (src.getG())
+ setG(src.getG()->cloneG());
+ if (src.getY())
+ setY(src.getY()->cloneY());
+ if (src.getJ())
+ setJ(src.getJ()->cloneJ());
+ if (src.getSeed())
+ setSeed(src.getSeed()->cloneSeed());
+ if (src.getPgenCounter())
+ setPgenCounter(src.getPgenCounter()->clonePgenCounter());
}
void init() {
}
IMPL_XMLOBJECT_CLONE(DSAKeyValue);
- IMPL_XMLOBJECT_CHILD(P);
- IMPL_XMLOBJECT_CHILD(Q);
- IMPL_XMLOBJECT_CHILD(G);
- IMPL_XMLOBJECT_CHILD(Y);
- IMPL_XMLOBJECT_CHILD(J);
- IMPL_XMLOBJECT_CHILD(Seed);
- IMPL_XMLOBJECT_CHILD(PgenCounter);
+ IMPL_TYPED_CHILD(P);
+ IMPL_TYPED_CHILD(Q);
+ IMPL_TYPED_CHILD(G);
+ IMPL_TYPED_CHILD(Y);
+ IMPL_TYPED_CHILD(J);
+ IMPL_TYPED_CHILD(Seed);
+ IMPL_TYPED_CHILD(PgenCounter);
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
- PROC_XMLOBJECT_CHILD(P,XMLConstants::XMLSIG_NS);
- PROC_XMLOBJECT_CHILD(Q,XMLConstants::XMLSIG_NS);
- PROC_XMLOBJECT_CHILD(G,XMLConstants::XMLSIG_NS);
- PROC_XMLOBJECT_CHILD(Y,XMLConstants::XMLSIG_NS);
- PROC_XMLOBJECT_CHILD(J,XMLConstants::XMLSIG_NS);
- PROC_XMLOBJECT_CHILD(Seed,XMLConstants::XMLSIG_NS);
- PROC_XMLOBJECT_CHILD(PgenCounter,XMLConstants::XMLSIG_NS);
- throw UnmarshallingException("Invalid child element: $1",params(1,childXMLObject->getElementQName().toString().c_str()));
+ PROC_TYPED_CHILD(P,XMLSIG_NS,false);
+ PROC_TYPED_CHILD(Q,XMLSIG_NS,false);
+ PROC_TYPED_CHILD(G,XMLSIG_NS,false);
+ PROC_TYPED_CHILD(Y,XMLSIG_NS,false);
+ PROC_TYPED_CHILD(J,XMLSIG_NS,false);
+ PROC_TYPED_CHILD(Seed,XMLSIG_NS,false);
+ PROC_TYPED_CHILD(PgenCounter,XMLSIG_NS,false);
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
};
- class XMLTOOL_DLLLOCAL RSAKeyValueImpl : public RSAKeyValue,
+ class XMLTOOL_DLLLOCAL RSAKeyValueImpl : public virtual RSAKeyValue,
+ public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
- public AbstractValidatingXMLObject,
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
public:
virtual ~RSAKeyValueImpl() {}
- RSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ RSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
RSAKeyValueImpl(const RSAKeyValueImpl& src)
- : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src), AbstractValidatingXMLObject(src) {
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setModulus(src.getModulus());
- setExponent(src.getExponent());
+ if (src.getModulus())
+ setModulus(src.getModulus()->cloneModulus());
+ if (src.getExponent())
+ setExponent(src.getExponent()->cloneExponent());
}
void init() {
}
IMPL_XMLOBJECT_CLONE(RSAKeyValue);
- IMPL_XMLOBJECT_CHILD(Modulus);
- IMPL_XMLOBJECT_CHILD(Exponent);
+ IMPL_TYPED_CHILD(Modulus);
+ IMPL_TYPED_CHILD(Exponent);
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
- PROC_XMLOBJECT_CHILD(Modulus,XMLConstants::XMLSIG_NS);
- PROC_XMLOBJECT_CHILD(Exponent,XMLConstants::XMLSIG_NS);
- throw UnmarshallingException("Invalid child element: $1",params(1,childXMLObject->getElementQName().toString().c_str()));
+ PROC_TYPED_CHILD(Modulus,XMLSIG_NS,false);
+ PROC_TYPED_CHILD(Exponent,XMLSIG_NS,false);
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
};
- class XMLTOOL_DLLLOCAL KeyValueImpl : public KeyValue,
+ class XMLTOOL_DLLLOCAL KeyValueImpl : public virtual KeyValue,
+ public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
- public AbstractValidatingXMLObject,
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
public:
virtual ~KeyValueImpl() {}
- KeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ KeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
KeyValueImpl(const KeyValueImpl& src)
- : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src), AbstractValidatingXMLObject(src) {
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setDSAKeyValue(src.getDSAKeyValue());
- setRSAKeyValue(src.getRSAKeyValue());
- setXMLObject(src.getXMLObject());
- setTextContent(src.getTextContent());
+ if (src.getDSAKeyValue())
+ setDSAKeyValue(src.getDSAKeyValue()->cloneDSAKeyValue());
+ if (src.getRSAKeyValue())
+ setRSAKeyValue(src.getRSAKeyValue()->cloneRSAKeyValue());
+ if (src.getUnknownXMLObject())
+ setUnknownXMLObject(src.getUnknownXMLObject()->clone());
}
void init() {
- m_TextContent=NULL;
m_DSAKeyValue=NULL;
m_RSAKeyValue=NULL;
- m_XMLObject=NULL;
+ m_UnknownXMLObject=NULL;
m_children.push_back(NULL);
m_children.push_back(NULL);
m_children.push_back(NULL);
m_pos_DSAKeyValue=m_children.begin();
m_pos_RSAKeyValue=m_pos_DSAKeyValue;
++m_pos_RSAKeyValue;
- m_pos_XMLObject=m_pos_RSAKeyValue;
- ++m_pos_XMLObject;
+ m_pos_UnknownXMLObject=m_pos_RSAKeyValue;
+ ++m_pos_UnknownXMLObject;
}
IMPL_XMLOBJECT_CLONE(KeyValue);
- IMPL_XMLOBJECT_CHILD(DSAKeyValue);
- IMPL_XMLOBJECT_CHILD(RSAKeyValue);
- IMPL_XMLOBJECT_CHILD(XMLObject);
- IMPL_XMLOBJECT_CONTENT(TextContent);
+ IMPL_TYPED_CHILD(DSAKeyValue);
+ IMPL_TYPED_CHILD(RSAKeyValue);
+ IMPL_XMLOBJECT_CHILD(UnknownXMLObject);
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
- PROC_XMLOBJECT_CHILD(DSAKeyValue,XMLConstants::XMLSIG_NS);
- PROC_XMLOBJECT_CHILD(RSAKeyValue,XMLConstants::XMLSIG_NS);
+ PROC_TYPED_CHILD(DSAKeyValue,XMLSIG_NS,false);
+ PROC_TYPED_CHILD(RSAKeyValue,XMLSIG_NS,false);
// Unknown child.
const XMLCh* nsURI=root->getNamespaceURI();
- if (!XMLString::equals(nsURI,XMLConstants::XMLSIG_NS) && nsURI && *nsURI)
- setXMLObject(childXMLObject);
+ if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
+ setUnknownXMLObject(childXMLObject);
+ return;
+ }
- throw UnmarshallingException("Invalid child element: $1",params(1,childXMLObject->getElementQName().toString().c_str()));
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
};
- class XMLTOOL_DLLLOCAL TransformImpl : public Transform,
+ class XMLTOOL_DLLLOCAL TransformImpl : public virtual Transform,
+ public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
- public AbstractElementProxy,
- public AbstractValidatingXMLObject,
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
public:
- virtual ~TransformImpl() {}
+ virtual ~TransformImpl() {
+ XMLString::release(&m_Algorithm);
+ }
- TransformImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ TransformImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Algorithm(NULL) {
}
TransformImpl(const TransformImpl& src)
- : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src), AbstractElementProxy(src),
- AbstractValidatingXMLObject(src), m_Algorithm(XMLString::replicate(src.m_Algorithm)) {
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src),
+ m_Algorithm(XMLString::replicate(src.m_Algorithm)) {
for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
if (*i) {
XPath* x=dynamic_cast<XPath*>(*i);
getXPaths().push_back(x->cloneXPath());
continue;
}
- getXMLObjects().push_back((*i)->clone());
+ getUnknownXMLObjects().push_back((*i)->clone());
}
}
}
IMPL_XMLOBJECT_CLONE(Transform);
- IMPL_XMLOBJECT_ATTRIB(Algorithm);
- IMPL_XMLOBJECT_CHILDREN(XPath,m_children.end());
+ IMPL_STRING_ATTRIB(Algorithm);
+ IMPL_TYPED_CHILDREN(XPath,m_children.end());
+ IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
protected:
void marshallAttributes(DOMElement* domElement) const {
- MARSHALL_XMLOBJECT_ATTRIB(Algorithm,ALGORITHM,NULL);
- }
-
- void marshallElementContent(DOMElement* domElement) const {
- if(getTextContent()) {
- domElement->appendChild(domElement->getOwnerDocument()->createTextNode(getTextContent()));
- }
- }
-
- void processElementContent(const XMLCh* elementContent) {
- setTextContent(elementContent);
+ MARSHALL_STRING_ATTRIB(Algorithm,ALGORITHM,NULL);
}
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
- PROC_XMLOBJECT_CHILDREN(XPath,XMLConstants::XMLSIG_NS);
+ PROC_TYPED_CHILDREN(XPath,XMLSIG_NS,false);
// Unknown child.
const XMLCh* nsURI=root->getNamespaceURI();
- if (!XMLString::equals(nsURI,XMLConstants::XMLSIG_NS) && nsURI && *nsURI)
- getXMLObjects().push_back(childXMLObject);
+ if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
+ getUnknownXMLObjects().push_back(childXMLObject);
+ return;
+ }
- throw UnmarshallingException("Invalid child element: $1",params(1,childXMLObject->getElementQName().toString().c_str()));
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
void processAttribute(const DOMAttr* attribute) {
- PROC_XMLOBJECT_ATTRIB(Algorithm,ALGORITHM,NULL);
+ PROC_STRING_ATTRIB(Algorithm,ALGORITHM,NULL);
+ AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
- class XMLTOOL_DLLLOCAL TransformsImpl : public Transforms,
+ class XMLTOOL_DLLLOCAL TransformsImpl : public virtual Transforms,
+ public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
- public AbstractValidatingXMLObject,
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
public:
virtual ~TransformsImpl() {}
- TransformsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ TransformsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
TransformsImpl(const TransformsImpl& src)
- : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src), AbstractValidatingXMLObject(src) {
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
VectorOf(Transform) v=getTransforms();
for (vector<Transform*>::const_iterator i=src.m_Transforms.begin(); i!=src.m_Transforms.end(); i++) {
if (*i) {
}
IMPL_XMLOBJECT_CLONE(Transforms);
- IMPL_XMLOBJECT_CHILDREN(Transform,m_children.end());
+ IMPL_TYPED_CHILDREN(Transform,m_children.end());
+
+ protected:
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ PROC_TYPED_CHILDREN(Transform,XMLSIG_NS,false);
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
+ }
+ };
+
+ class XMLTOOL_DLLLOCAL RetrievalMethodImpl : public virtual RetrievalMethod,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ public:
+ virtual ~RetrievalMethodImpl() {
+ XMLString::release(&m_URI);
+ XMLString::release(&m_Type);
+ }
+
+ RetrievalMethodImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ init();
+ }
+
+ RetrievalMethodImpl(const RetrievalMethodImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ init();
+ setURI(getURI());
+ setType(getType());
+ if (src.getTransforms())
+ setTransforms(src.getTransforms()->cloneTransforms());
+ }
+
+ void init() {
+ m_URI=m_Type=NULL;
+ m_Transforms=NULL;
+ m_children.push_back(NULL);
+ m_pos_Transforms=m_children.begin();
+ }
+
+ IMPL_XMLOBJECT_CLONE(RetrievalMethod);
+ IMPL_STRING_ATTRIB(URI);
+ IMPL_STRING_ATTRIB(Type);
+ IMPL_TYPED_CHILD(Transforms);
+
+ protected:
+ void marshallAttributes(DOMElement* domElement) const {
+ MARSHALL_STRING_ATTRIB(URI,URI,NULL);
+ MARSHALL_STRING_ATTRIB(Type,TYPE,NULL);
+ }
+
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ PROC_TYPED_CHILD(Transforms,XMLSIG_NS,false);
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
+ }
+
+ void processAttribute(const DOMAttr* attribute) {
+ PROC_STRING_ATTRIB(URI,URI,NULL);
+ PROC_STRING_ATTRIB(Type,TYPE,NULL);
+ AbstractXMLObjectUnmarshaller::processAttribute(attribute);
+ }
+ };
+
+ class XMLTOOL_DLLLOCAL X509IssuerSerialImpl : public virtual X509IssuerSerial,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ public:
+ virtual ~X509IssuerSerialImpl() {}
+
+ X509IssuerSerialImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ init();
+ }
+
+ X509IssuerSerialImpl(const X509IssuerSerialImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ init();
+ if (src.getX509IssuerName())
+ setX509IssuerName(src.getX509IssuerName()->cloneX509IssuerName());
+ if (src.getX509SerialNumber())
+ setX509SerialNumber(src.getX509SerialNumber()->cloneX509SerialNumber());
+ }
+
+ void init() {
+ m_X509IssuerName=NULL;
+ m_X509SerialNumber=NULL;
+ m_children.push_back(NULL);
+ m_children.push_back(NULL);
+ m_pos_X509IssuerName=m_children.begin();
+ m_pos_X509SerialNumber=m_pos_X509IssuerName;
+ ++m_pos_X509SerialNumber;
+ }
+
+ IMPL_XMLOBJECT_CLONE(X509IssuerSerial);
+ IMPL_TYPED_CHILD(X509IssuerName);
+ IMPL_TYPED_CHILD(X509SerialNumber);
+
+ protected:
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ PROC_TYPED_CHILD(X509IssuerName,XMLSIG_NS,false);
+ PROC_TYPED_CHILD(X509SerialNumber,XMLSIG_NS,false);
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
+ }
+ };
+
+ class XMLTOOL_DLLLOCAL X509DataImpl : public virtual X509Data,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ public:
+ virtual ~X509DataImpl() {}
+
+ X509DataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ }
+
+ X509DataImpl(const X509DataImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
+ if (*i) {
+ X509Certificate* xcert=dynamic_cast<X509Certificate*>(*i);
+ if (xcert) {
+ getX509Certificates().push_back(xcert->cloneX509Certificate());
+ continue;
+ }
+
+ X509CRL* xcrl=dynamic_cast<X509CRL*>(*i);
+ if (xcrl) {
+ getX509CRLs().push_back(xcrl->cloneX509CRL());
+ continue;
+ }
+
+ X509SubjectName* xsn=dynamic_cast<X509SubjectName*>(*i);
+ if (xsn) {
+ getX509SubjectNames().push_back(xsn->cloneX509SubjectName());
+ continue;
+ }
+
+ X509IssuerSerial* xis=dynamic_cast<X509IssuerSerial*>(*i);
+ if (xis) {
+ getX509IssuerSerials().push_back(xis->cloneX509IssuerSerial());
+ continue;
+ }
+
+ X509SKI* xski=dynamic_cast<X509SKI*>(*i);
+ if (xski) {
+ getX509SKIs().push_back(xski->cloneX509SKI());
+ continue;
+ }
+
+ getUnknownXMLObjects().push_back((*i)->clone());
+ }
+ }
+ }
+
+ IMPL_XMLOBJECT_CLONE(X509Data);
+ IMPL_TYPED_CHILDREN(X509IssuerSerial,m_children.end());
+ IMPL_TYPED_CHILDREN(X509SKI,m_children.end());
+ IMPL_TYPED_CHILDREN(X509SubjectName,m_children.end());
+ IMPL_TYPED_CHILDREN(X509Certificate,m_children.end());
+ IMPL_TYPED_CHILDREN(X509CRL,m_children.end());
+ IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
+
+ protected:
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ PROC_TYPED_CHILDREN(X509IssuerSerial,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(X509SKI,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(X509SubjectName,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(X509Certificate,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(X509CRL,XMLSIG_NS,false);
+
+ // Unknown child.
+ const XMLCh* nsURI=root->getNamespaceURI();
+ if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
+ getUnknownXMLObjects().push_back(childXMLObject);
+ return;
+ }
+
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
+ }
+ };
+
+ class XMLTOOL_DLLLOCAL SPKIDataImpl : public virtual SPKIData,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ public:
+ virtual ~SPKIDataImpl() {}
+ SPKIDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ }
+
+ SPKIDataImpl(const SPKIDataImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ VectorOfPairs(SPKISexp,XMLObject) v=getSPKISexps();
+ for (vector< pair<SPKISexp*,XMLObject*> >::const_iterator i=src.m_SPKISexps.begin(); i!=src.m_SPKISexps.end(); i++) {
+ if (i->first) {
+ v.push_back(make_pair(i->first->cloneSPKISexp(),(i->second ? i->second->clone() : (XMLObject*)NULL)));
+ }
+ }
+ }
+
+ IMPL_XMLOBJECT_CLONE(SPKIData);
+
+ private:
+ vector< pair<SPKISexp*,XMLObject*> > m_SPKISexps;
+
+ public:
+ VectorOfPairs(SPKISexp,XMLObject) getSPKISexps() {
+ return VectorOfPairs(SPKISexp,XMLObject)(this, m_SPKISexps, &m_children, m_children.end());
+ }
+
+ const vector< pair<SPKISexp*,XMLObject*> >& getSPKISexps() const {
+ return m_SPKISexps;
+ }
+
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
- PROC_XMLOBJECT_CHILDREN(Transform,XMLConstants::XMLSIG_NS);
- throw UnmarshallingException("Invalid child element: $1",params(1,childXMLObject->getElementQName().toString().c_str()));
+ if (XMLHelper::isNodeNamed(root,XMLSIG_NS,SPKISexp::LOCAL_NAME)) {
+ SPKISexp* typesafe=dynamic_cast<SPKISexp*>(childXMLObject);
+ if (typesafe) {
+ getSPKISexps().push_back(make_pair(typesafe,(XMLObject*)NULL));
+ return;
+ }
+ }
+
+ // Unknown child (has to be paired with the last SPKISexp processed.
+ const XMLCh* nsURI=root->getNamespaceURI();
+ if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
+ // Update second half of pair in vector, and in master list.
+ if (!m_SPKISexps.empty() && m_SPKISexps.back().second==NULL) {
+ m_SPKISexps.back().second=childXMLObject;
+ m_children.back()=childXMLObject;
+ return;
+ }
+ else
+ throw UnmarshallingException("Extension element must follow ds:SPKISexp element.");
+ }
+
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
};
- class XMLTOOL_DLLLOCAL KeyInfoImpl : public KeyInfo,
+ class XMLTOOL_DLLLOCAL PGPDataImpl : public virtual PGPData,
+ public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
- public AbstractElementProxy,
- public AbstractValidatingXMLObject,
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
public:
- virtual ~KeyInfoImpl() {}
+ virtual ~PGPDataImpl() {}
- KeyInfoImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ PGPDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ init();
+ }
+
+ PGPDataImpl(const PGPDataImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ init();
+ if (src.getPGPKeyID())
+ setPGPKeyID(src.getPGPKeyID()->clonePGPKeyID());
+ if (src.getPGPKeyPacket())
+ setPGPKeyPacket(src.getPGPKeyPacket()->clonePGPKeyPacket());
+ 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());
+ }
+
+ void init() {
+ m_PGPKeyID=NULL;
+ m_PGPKeyPacket=NULL;
+ m_children.push_back(NULL);
+ m_children.push_back(NULL);
+ m_pos_PGPKeyID=m_children.begin();
+ m_pos_PGPKeyPacket=m_pos_PGPKeyID;
+ ++m_pos_PGPKeyPacket;
+ }
+
+ IMPL_XMLOBJECT_CLONE(PGPData);
+ IMPL_TYPED_CHILD(PGPKeyID);
+ IMPL_TYPED_CHILD(PGPKeyPacket);
+ IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
+
+ protected:
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ PROC_TYPED_CHILD(PGPKeyID,XMLSIG_NS,false);
+ PROC_TYPED_CHILD(PGPKeyPacket,XMLSIG_NS,false);
+
+ // Unknown child.
+ const XMLCh* nsURI=root->getNamespaceURI();
+ if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
+ getUnknownXMLObjects().push_back(childXMLObject);
+ return;
+ }
+
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
+ }
+ };
+
+ class XMLTOOL_DLLLOCAL KeyInfoImpl : public virtual KeyInfo,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ public:
+ virtual ~KeyInfoImpl() {
+ XMLString::release(&m_Id);
+ }
+
+ KeyInfoImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Id(NULL) {
}
KeyInfoImpl(const KeyInfoImpl& src)
- : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src), AbstractElementProxy(src),
- AbstractValidatingXMLObject(src), m_Id(XMLString::replicate(src.m_Id)) {
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src),
+ m_Id(XMLString::replicate(src.m_Id)) {
+
for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
if (*i) {
+ X509Data* xd=dynamic_cast<X509Data*>(*i);
+ if (xd) {
+ getX509Datas().push_back(xd->cloneX509Data());
+ continue;
+ }
+
KeyName* kn=dynamic_cast<KeyName*>(*i);
if (kn) {
getKeyNames().push_back(kn->cloneKeyName());
continue;
}
+
KeyValue* kv=dynamic_cast<KeyValue*>(*i);
if (kv) {
getKeyValues().push_back(kv->cloneKeyValue());
continue;
}
+
+ RetrievalMethod* rm=dynamic_cast<RetrievalMethod*>(*i);
+ if (rm) {
+ getRetrievalMethods().push_back(rm->cloneRetrievalMethod());
+ continue;
+ }
+
MgmtData* md=dynamic_cast<MgmtData*>(*i);
if (md) {
getMgmtDatas().push_back(md->cloneMgmtData());
continue;
}
- getXMLObjects().push_back((*i)->clone());
+
+ SPKIData* sd=dynamic_cast<SPKIData*>(*i);
+ if (sd) {
+ getSPKIDatas().push_back(sd->cloneSPKIData());
+ continue;
+ }
+
+ PGPData* pd=dynamic_cast<PGPData*>(*i);
+ if (pd) {
+ getPGPDatas().push_back(pd->clonePGPData());
+ continue;
+ }
+
+ getUnknownXMLObjects().push_back((*i)->clone());
}
}
}
IMPL_XMLOBJECT_CLONE(KeyInfo);
- IMPL_XMLOBJECT_ATTRIB(Id);
- IMPL_XMLOBJECT_CHILDREN(KeyName,m_children.end());
- IMPL_XMLOBJECT_CHILDREN(KeyValue,m_children.end());
- IMPL_XMLOBJECT_CHILDREN(MgmtData,m_children.end());
+ IMPL_ID_ATTRIB_EX(Id,ID,NULL);
+ IMPL_TYPED_CHILDREN(KeyName,m_children.end());
+ IMPL_TYPED_CHILDREN(KeyValue,m_children.end());
+ IMPL_TYPED_CHILDREN(RetrievalMethod,m_children.end());
+ IMPL_TYPED_CHILDREN(X509Data,m_children.end());
+ IMPL_TYPED_CHILDREN(MgmtData,m_children.end());
+ IMPL_TYPED_CHILDREN(SPKIData,m_children.end());
+ IMPL_TYPED_CHILDREN(PGPData,m_children.end());
+ IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
protected:
void marshallAttributes(DOMElement* domElement) const {
- MARSHALL_XMLOBJECT_ID_ATTRIB(Id,ID,NULL);
- }
-
- void marshallElementContent(DOMElement* domElement) const {
- if(getTextContent()) {
- domElement->appendChild(domElement->getOwnerDocument()->createTextNode(getTextContent()));
- }
- }
-
- void processElementContent(const XMLCh* elementContent) {
- setTextContent(elementContent);
+ MARSHALL_ID_ATTRIB(Id,ID,NULL);
}
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
- PROC_XMLOBJECT_CHILDREN(KeyName,XMLConstants::XMLSIG_NS);
- PROC_XMLOBJECT_CHILDREN(KeyValue,XMLConstants::XMLSIG_NS);
- PROC_XMLOBJECT_CHILDREN(MgmtData,XMLConstants::XMLSIG_NS);
+ PROC_TYPED_CHILDREN(X509Data,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(KeyName,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(KeyValue,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(RetrievalMethod,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(MgmtData,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(SPKIData,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(PGPData,XMLSIG_NS,false);
// Unknown child.
const XMLCh* nsURI=root->getNamespaceURI();
- if (!XMLString::equals(nsURI,XMLConstants::XMLSIG_NS) && nsURI && *nsURI)
- getXMLObjects().push_back(childXMLObject);
+ if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
+ getUnknownXMLObjects().push_back(childXMLObject);
+ return;
+ }
- throw UnmarshallingException("Invalid child element: $1",params(1,childXMLObject->getElementQName().toString().c_str()));
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
void processAttribute(const DOMAttr* attribute) {
- PROC_XMLOBJECT_ID_ATTRIB(Id,ID,NULL);
+ PROC_ID_ATTRIB(Id,ID,NULL);
+ AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,KeyName,Name);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,MgmtData,Data);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Modulus,Value);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Exponent,Value);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Seed,Value);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PgenCounter,Value);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,P,Value);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Q,Value);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,G,Value);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Y,Value);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,J,Value);
- DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,XPath,Expression);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,KeyName);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,MgmtData);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Modulus);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Exponent);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Seed);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PgenCounter);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,P);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Q);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,G);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Y);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,J);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,XPath);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509IssuerName);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SerialNumber);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SKI);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SubjectName);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509Certificate);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509CRL);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,SPKISexp);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PGPKeyID);
+ DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PGPKeyPacket);
};
#if defined (_MSC_VER)
// Builder Implementations
+IMPL_XMLOBJECTBUILDER(X509IssuerSerial);
+IMPL_XMLOBJECTBUILDER(X509IssuerName);
+IMPL_XMLOBJECTBUILDER(X509SerialNumber);
+IMPL_XMLOBJECTBUILDER(X509SKI);
+IMPL_XMLOBJECTBUILDER(X509SubjectName);
+IMPL_XMLOBJECTBUILDER(X509Certificate);
+IMPL_XMLOBJECTBUILDER(X509CRL);
+IMPL_XMLOBJECTBUILDER(X509Data);
IMPL_XMLOBJECTBUILDER(XPath);
IMPL_XMLOBJECTBUILDER(Transform);
IMPL_XMLOBJECTBUILDER(Transforms);
+IMPL_XMLOBJECTBUILDER(RetrievalMethod);
IMPL_XMLOBJECTBUILDER(KeyName);
IMPL_XMLOBJECTBUILDER(MgmtData);
IMPL_XMLOBJECTBUILDER(Modulus);
IMPL_XMLOBJECTBUILDER(RSAKeyValue);
IMPL_XMLOBJECTBUILDER(KeyValue);
IMPL_XMLOBJECTBUILDER(KeyInfo);
-
-const XMLCh KeyInfo::LOCAL_NAME[] = UNICODE_LITERAL_7(K,e,y,I,n,f,o);
-const XMLCh KeyInfo::TYPE_NAME[] = UNICODE_LITERAL_11(K,e,y,I,n,f,o,T,y,p,e);
-const XMLCh KeyInfo::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
-const XMLCh KeyValue::LOCAL_NAME[] = UNICODE_LITERAL_8(K,e,y,V,a,l,u,e);
-const XMLCh KeyValue::TYPE_NAME[] = UNICODE_LITERAL_12(K,e,y,V,a,l,u,e,T,y,p,e);
-const XMLCh DSAKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_11(D,S,A,K,e,y,V,a,l,u,e);
-const XMLCh DSAKeyValue::TYPE_NAME[] = UNICODE_LITERAL_15(D,S,A,K,e,y,V,a,l,u,e,T,y,p,e);
-const XMLCh RSAKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_11(R,S,A,K,e,y,V,a,l,u,e);
-const XMLCh RSAKeyValue::TYPE_NAME[] = UNICODE_LITERAL_15(R,S,A,K,e,y,V,a,l,u,e,T,y,p,e);
-const XMLCh MgmtData::LOCAL_NAME[] = UNICODE_LITERAL_8(M,g,m,t,D,a,t,a);
-const XMLCh KeyName::LOCAL_NAME[] = UNICODE_LITERAL_7(K,e,y,N,a,m,e);
-const XMLCh Modulus::LOCAL_NAME[] = UNICODE_LITERAL_7(M,o,d,u,l,u,s);
-const XMLCh Exponent::LOCAL_NAME[] = UNICODE_LITERAL_8(E,x,p,o,n,e,n,t);
-const XMLCh Seed::LOCAL_NAME[] = UNICODE_LITERAL_4(S,e,e,d);
-const XMLCh PgenCounter::LOCAL_NAME[] = UNICODE_LITERAL_11(P,g,e,n,C,o,u,n,t,e,r);
-const XMLCh P::LOCAL_NAME[] = UNICODE_LITERAL_1(P);
-const XMLCh Q::LOCAL_NAME[] = UNICODE_LITERAL_1(Q);
-const XMLCh G::LOCAL_NAME[] = UNICODE_LITERAL_1(G);
-const XMLCh Y::LOCAL_NAME[] = UNICODE_LITERAL_1(Y);
-const XMLCh J::LOCAL_NAME[] = UNICODE_LITERAL_1(J);
-const XMLCh XPath::LOCAL_NAME[] = UNICODE_LITERAL_5(X,P,a,t,h);
-const XMLCh Transform::LOCAL_NAME[] = UNICODE_LITERAL_9(T,r,a,n,s,f,o,r,m);
-const XMLCh Transform::TYPE_NAME[] = UNICODE_LITERAL_13(T,r,a,n,s,f,o,r,m,T,y,p,e);
+IMPL_XMLOBJECTBUILDER(SPKISexp);
+IMPL_XMLOBJECTBUILDER(SPKIData);
+IMPL_XMLOBJECTBUILDER(PGPKeyID);
+IMPL_XMLOBJECTBUILDER(PGPKeyPacket);
+IMPL_XMLOBJECTBUILDER(PGPData);
+
+// Unicode literals
+
+const XMLCh KeyInfo::LOCAL_NAME[] = UNICODE_LITERAL_7(K,e,y,I,n,f,o);
+const XMLCh KeyInfo::TYPE_NAME[] = UNICODE_LITERAL_11(K,e,y,I,n,f,o,T,y,p,e);
+const XMLCh KeyInfo::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
+const XMLCh KeyValue::LOCAL_NAME[] = UNICODE_LITERAL_8(K,e,y,V,a,l,u,e);
+const XMLCh KeyValue::TYPE_NAME[] = UNICODE_LITERAL_12(K,e,y,V,a,l,u,e,T,y,p,e);
+const XMLCh DSAKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_11(D,S,A,K,e,y,V,a,l,u,e);
+const XMLCh DSAKeyValue::TYPE_NAME[] = UNICODE_LITERAL_15(D,S,A,K,e,y,V,a,l,u,e,T,y,p,e);
+const XMLCh RSAKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_11(R,S,A,K,e,y,V,a,l,u,e);
+const XMLCh RSAKeyValue::TYPE_NAME[] = UNICODE_LITERAL_15(R,S,A,K,e,y,V,a,l,u,e,T,y,p,e);
+const XMLCh MgmtData::LOCAL_NAME[] = UNICODE_LITERAL_8(M,g,m,t,D,a,t,a);
+const XMLCh KeyName::LOCAL_NAME[] = UNICODE_LITERAL_7(K,e,y,N,a,m,e);
+const XMLCh Modulus::LOCAL_NAME[] = UNICODE_LITERAL_7(M,o,d,u,l,u,s);
+const XMLCh Exponent::LOCAL_NAME[] = UNICODE_LITERAL_8(E,x,p,o,n,e,n,t);
+const XMLCh Seed::LOCAL_NAME[] = UNICODE_LITERAL_4(S,e,e,d);
+const XMLCh PgenCounter::LOCAL_NAME[] = UNICODE_LITERAL_11(P,g,e,n,C,o,u,n,t,e,r);
+const XMLCh P::LOCAL_NAME[] = UNICODE_LITERAL_1(P);
+const XMLCh Q::LOCAL_NAME[] = UNICODE_LITERAL_1(Q);
+const XMLCh G::LOCAL_NAME[] = UNICODE_LITERAL_1(G);
+const XMLCh Y::LOCAL_NAME[] = UNICODE_LITERAL_1(Y);
+const XMLCh J::LOCAL_NAME[] = UNICODE_LITERAL_1(J);
+const XMLCh XPath::LOCAL_NAME[] = UNICODE_LITERAL_5(X,P,a,t,h);
+const XMLCh Transform::LOCAL_NAME[] = UNICODE_LITERAL_9(T,r,a,n,s,f,o,r,m);
+const XMLCh Transform::TYPE_NAME[] = UNICODE_LITERAL_13(T,r,a,n,s,f,o,r,m,T,y,p,e);
const XMLCh Transform::ALGORITHM_ATTRIB_NAME[] = UNICODE_LITERAL_9(A,l,g,o,r,i,t,h,m);
-const XMLCh Transforms::LOCAL_NAME[] = UNICODE_LITERAL_10(T,r,a,n,s,f,o,r,m,s);
-const XMLCh Transforms::TYPE_NAME[] = UNICODE_LITERAL_14(T,r,a,n,s,f,o,r,m,s,T,y,p,e);
+const XMLCh Transforms::LOCAL_NAME[] = UNICODE_LITERAL_10(T,r,a,n,s,f,o,r,m,s);
+const XMLCh Transforms::TYPE_NAME[] = UNICODE_LITERAL_14(T,r,a,n,s,f,o,r,m,s,T,y,p,e);
+const XMLCh RetrievalMethod::LOCAL_NAME[] = UNICODE_LITERAL_15(R,e,t,r,i,e,v,a,l,M,e,t,h,o,d);
+const XMLCh RetrievalMethod::TYPE_NAME[] = UNICODE_LITERAL_19(R,e,t,r,i,e,v,a,l,M,e,t,h,o,d,T,y,p,e);
+const XMLCh RetrievalMethod::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
+const XMLCh RetrievalMethod::TYPE_ATTRIB_NAME[] = UNICODE_LITERAL_4(T,y,p,e);
+const XMLCh SPKISexp::LOCAL_NAME[] = UNICODE_LITERAL_8(S,P,K,I,S,e,x,p);
+const XMLCh SPKIData::LOCAL_NAME[] = UNICODE_LITERAL_8(S,P,K,I,D,a,t,a);
+const XMLCh SPKIData::TYPE_NAME[] = UNICODE_LITERAL_12(S,P,K,I,D,a,t,a,T,y,p,e);
+const XMLCh PGPKeyID::LOCAL_NAME[] = UNICODE_LITERAL_8(P,G,P,K,e,y,I,D);
+const XMLCh PGPKeyPacket::LOCAL_NAME[] = UNICODE_LITERAL_12(P,G,P,K,e,y,P,a,c,k,e,t);
+const XMLCh PGPData::LOCAL_NAME[] = UNICODE_LITERAL_7(P,G,P,D,a,t,a);
+const XMLCh PGPData::TYPE_NAME[] = UNICODE_LITERAL_11(P,G,P,D,a,t,a,T,y,p,e);
+
+#define XCH(ch) chLatin_##ch
+#define XNUM(d) chDigit_##d
+
+const XMLCh X509Data::LOCAL_NAME[] = {
+ XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(D), XCH(a), XCH(t), XCH(a), chNull
+ };
+const XMLCh X509Data::TYPE_NAME[] = {
+ XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(D), XCH(a), XCH(t), XCH(a), XCH(T), XCH(y), XCH(p), XCH(e), chNull
+ };
+const XMLCh X509IssuerSerial::LOCAL_NAME[] = {
+ XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
+ XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l), chNull
+ };
+const XMLCh X509IssuerSerial::TYPE_NAME[] = {
+ XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
+ XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l), XCH(T), XCH(y), XCH(p), XCH(e), chNull
+ };
+const XMLCh X509IssuerName::LOCAL_NAME[] = {
+ XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
+ XCH(N), XCH(a), XCH(m), XCH(e), chNull
+ };
+const XMLCh X509SerialNumber::LOCAL_NAME[] = {
+ XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l),
+ XCH(N), XCH(u), XCH(m), XCH(b), XCH(e), XCH(r), chNull
+ };
+const XMLCh X509SKI::LOCAL_NAME[] = { XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(K), XCH(I), chNull };
+const XMLCh X509SubjectName::LOCAL_NAME[] = {
+ XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(u), XCH(b), XCH(j), XCH(e), XCH(c), XCH(t),
+ XCH(N), XCH(a), XCH(m), XCH(e), chNull
+ };
+const XMLCh X509Certificate::LOCAL_NAME[] = {
+ XCH(X), XNUM(5), XNUM(0), XNUM(9),
+ XCH(C), XCH(e), XCH(r), XCH(t), XCH(i), XCH(f), XCH(i), XCH(c), XCH(a), XCH(t), XCH(e), chNull
+ };
+const XMLCh X509CRL::LOCAL_NAME[] = { XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(C), XCH(R), XCH(L), chNull };
+
+const XMLCh RetrievalMethod::TYPE_DSAKEYVALUE[] = {
+ chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
+ chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
+ chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
+ chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
+ chLatin_D, chLatin_S, chLatin_A, chLatin_K, chLatin_e, chLatin_y, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
+ };
+
+const XMLCh RetrievalMethod::TYPE_RSAKEYVALUE[] = {
+ chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
+ chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
+ chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
+ chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
+ chLatin_R, chLatin_S, chLatin_A, chLatin_K, chLatin_e, chLatin_y, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
+ };
+
+const XMLCh RetrievalMethod::TYPE_X509DATA[] = {
+ chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
+ chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
+ chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
+ chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
+ chLatin_X, chDigit_5, chDigit_0, chDigit_9, chLatin_D, chLatin_a, chLatin_t, chLatin_a, chNull
+ };
+