#define DECL_XMLSIGOBJECTBUILDER(cname) \
DECL_XMLOBJECTBUILDER(XMLTOOL_API,cname,xmlconstants::XMLSIG_NS,xmlconstants::XMLSIG_PREFIX)
+/**
+ * Macro for declaring signature builders.
+ *
+ * @param cname name of class being built
+ */
+#define DECL_XMLSIG11OBJECTBUILDER(cname) \
+ DECL_XMLOBJECTBUILDER(XMLTOOL_API,cname,xmlconstants::XMLSIG11_NS,xmlconstants::XMLSIG11_PREFIX)
+
namespace xmlsignature {
DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,KeyName,Name,XML Digital Signature version 20020212 KeyName element);
DECL_TYPED_CHILDREN(X509SubjectName);
DECL_TYPED_CHILDREN(X509Certificate);
DECL_TYPED_CHILDREN(X509CRL);
+ DECL_TYPED_CHILDREN(OCSPResponse);
/** X509DataType local name */
static const XMLCh TYPE_NAME[];
END_XMLOBJECT;
static const XMLCh TYPE_NAME[];
END_XMLOBJECT;
+ BEGIN_XMLOBJECT(XMLTOOL_API,KeyInfoReference,xmltooling::XMLObject,XML Digital Signature version 1.1 KeyInfoReference element);
+ DECL_STRING_ATTRIB(Id,ID);
+ DECL_STRING_ATTRIB(URI,URI);
+ /** KeyInfoReferenceType local name */
+ static const XMLCh TYPE_NAME[];
+ END_XMLOBJECT;
+
BEGIN_XMLOBJECT(XMLTOOL_API,KeyInfo,xmltooling::ElementExtensibleXMLObject,XML Digital Signature version 20020212 KeyInfo element);
DECL_STRING_ATTRIB(Id,ID);
DECL_TYPED_CHILDREN(X509Data);
DECL_TYPED_CHILDREN(KeyName);
DECL_TYPED_CHILDREN(KeyValue);
+ DECL_TYPED_CHILDREN(DEREncodedKeyValue);
DECL_TYPED_CHILDREN(RetrievalMethod);
DECL_TYPED_CHILDREN(MgmtData);
DECL_TYPED_CHILDREN(PGPData);
DECL_TYPED_CHILDREN(SPKIData);
+ DECL_TYPED_CHILDREN(KeyInfoReference);
/** KeyInfoType local name */
static const XMLCh TYPE_NAME[];
END_XMLOBJECT;
- BEGIN_XMLOBJECT(XMLTOOL_API,KeyInfoReference,xmltooling::XMLObject,XML Digital Signature version 1.1 KeyInfoReference element);
- DECL_STRING_ATTRIB(Id,ID);
- DECL_STRING_ATTRIB(URI,URI);
- /** KeyInfoReferenceType local name */
- static const XMLCh TYPE_NAME[];
- END_XMLOBJECT;
-
DECL_XMLSIGOBJECTBUILDER(PGPData);
DECL_XMLSIGOBJECTBUILDER(PGPKeyID);
DECL_XMLSIGOBJECTBUILDER(PGPKeyPacket);
DECL_XMLSIGOBJECTBUILDER(SPKIData);
DECL_XMLSIGOBJECTBUILDER(SPKISexp);
- DECL_XMLSIGOBJECTBUILDER(OCSPResponse);
DECL_XMLSIGOBJECTBUILDER(X509IssuerSerial);
DECL_XMLSIGOBJECTBUILDER(X509IssuerName);
DECL_XMLSIGOBJECTBUILDER(X509SerialNumber);
DECL_XMLSIGOBJECTBUILDER(DSAKeyValue);
DECL_XMLSIGOBJECTBUILDER(RSAKeyValue);
DECL_XMLSIGOBJECTBUILDER(KeyValue);
- DECL_XMLSIGOBJECTBUILDER(DEREncodedKeyValue);
DECL_XMLSIGOBJECTBUILDER(KeyInfo);
- DECL_XMLSIGOBJECTBUILDER(KeyInfoReference);
+
+ DECL_XMLSIG11OBJECTBUILDER(DEREncodedKeyValue);
+ DECL_XMLSIG11OBJECTBUILDER(KeyInfoReference);
+ DECL_XMLSIG11OBJECTBUILDER(OCSPResponse);
/**
* Registers builders and validators for KeyInfo classes into the runtime.
using namespace xercesc;
using namespace std;
using xmlconstants::XMLSIG_NS;
+using xmlconstants::XMLSIG11_NS;
#if defined (_MSC_VER)
#pragma warning( push )
continue;
}
+ OCSPResponse* ocsp=dynamic_cast<OCSPResponse*>(*i);
+ if (ocsp) {
+ getOCSPResponses().push_back(ocsp->cloneOCSPResponse());
+ continue;
+ }
+
getUnknownXMLObjects().push_back((*i)->clone());
}
}
IMPL_TYPED_CHILDREN(X509SubjectName,m_children.end());
IMPL_TYPED_CHILDREN(X509Certificate,m_children.end());
IMPL_TYPED_CHILDREN(X509CRL,m_children.end());
+ IMPL_TYPED_CHILDREN(OCSPResponse,m_children.end());
IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
protected:
PROC_TYPED_CHILDREN(X509SubjectName,XMLSIG_NS,false);
PROC_TYPED_CHILDREN(X509Certificate,XMLSIG_NS,false);
PROC_TYPED_CHILDREN(X509CRL,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(OCSPResponse,XMLSIG_NS,false);
// Unknown child.
const XMLCh* nsURI=root->getNamespaceURI();
}
};
+ class XMLTOOL_DLLLOCAL KeyInfoReferenceImpl : public virtual KeyInfoReference,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ public:
+ virtual ~KeyInfoReferenceImpl() {
+ XMLString::release(&m_Id);
+ XMLString::release(&m_URI);
+ }
+
+ KeyInfoReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ init();
+ }
+
+ KeyInfoReferenceImpl(const KeyInfoReferenceImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ init();
+ setId(getId());
+ setURI(getURI());
+ }
+
+ void init() {
+ m_Id=m_URI=nullptr;
+ }
+
+ IMPL_XMLOBJECT_CLONE(KeyInfoReference);
+ IMPL_ID_ATTRIB(Id);
+ IMPL_STRING_ATTRIB(URI);
+
+ protected:
+ void marshallAttributes(DOMElement* domElement) const {
+ MARSHALL_ID_ATTRIB(Id,ID,nullptr);
+ MARSHALL_STRING_ATTRIB(URI,URI,nullptr);
+ }
+
+ void processAttribute(const DOMAttr* attribute) {
+ PROC_ID_ATTRIB(Id,ID,nullptr);
+ PROC_STRING_ATTRIB(URI,URI,nullptr);
+ AbstractXMLObjectUnmarshaller::processAttribute(attribute);
+ }
+ };
+
class XMLTOOL_DLLLOCAL KeyInfoImpl : public virtual KeyInfo,
public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
continue;
}
+ DEREncodedKeyValue* ekv=dynamic_cast<DEREncodedKeyValue*>(*i);
+ if (ekv) {
+ getDEREncodedKeyValues().push_back(ekv->cloneDEREncodedKeyValue());
+ continue;
+ }
+
RetrievalMethod* rm=dynamic_cast<RetrievalMethod*>(*i);
if (rm) {
getRetrievalMethods().push_back(rm->cloneRetrievalMethod());
continue;
}
+ KeyInfoReference* kref=dynamic_cast<KeyInfoReference*>(*i);
+ if (kref) {
+ getKeyInfoReferences().push_back(kref->cloneKeyInfoReference());
+ continue;
+ }
+
getUnknownXMLObjects().push_back((*i)->clone());
}
}
IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
IMPL_TYPED_CHILDREN(KeyName,m_children.end());
IMPL_TYPED_CHILDREN(KeyValue,m_children.end());
+ IMPL_TYPED_CHILDREN(DEREncodedKeyValue,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_TYPED_CHILDREN(KeyInfoReference,m_children.end());
IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
protected:
PROC_TYPED_CHILDREN(X509Data,XMLSIG_NS,false);
PROC_TYPED_CHILDREN(KeyName,XMLSIG_NS,false);
PROC_TYPED_CHILDREN(KeyValue,XMLSIG_NS,false);
+ PROC_TYPED_CHILDREN(DEREncodedKeyValue,XMLSIG11_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);
+ PROC_TYPED_CHILDREN(KeyInfoReference,XMLSIG11_NS,false);
// Unknown child.
const XMLCh* nsURI=root->getNamespaceURI();
AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
-
- class XMLTOOL_DLLLOCAL KeyInfoReferenceImpl : public virtual KeyInfoReference,
- public AbstractComplexElement,
- public AbstractDOMCachingXMLObject,
- public AbstractXMLObjectMarshaller,
- public AbstractXMLObjectUnmarshaller
- {
- public:
- virtual ~KeyInfoReferenceImpl() {
- XMLString::release(&m_Id);
- XMLString::release(&m_URI);
- }
-
- KeyInfoReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- init();
- }
-
- KeyInfoReferenceImpl(const KeyInfoReferenceImpl& src)
- : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
- init();
- setId(getId());
- setURI(getURI());
- }
-
- void init() {
- m_Id=m_URI=nullptr;
- }
-
- IMPL_XMLOBJECT_CLONE(KeyInfoReference);
- IMPL_ID_ATTRIB(Id);
- IMPL_STRING_ATTRIB(URI);
-
- protected:
- void marshallAttributes(DOMElement* domElement) const {
- MARSHALL_ID_ATTRIB(Id,ID,nullptr);
- MARSHALL_STRING_ATTRIB(URI,URI,nullptr);
- }
-
- void processAttribute(const DOMAttr* attribute) {
- PROC_ID_ATTRIB(Id,ID,nullptr);
- PROC_STRING_ATTRIB(URI,URI,nullptr);
- AbstractXMLObjectUnmarshaller::processAttribute(attribute);
- }
- };
-
-
+
DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,KeyName);
DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,MgmtData);
DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Modulus);