-/*
- * Copyright 2001-2010 Internet2
- *
- * 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
+/**
+ * Licensed to the University Corporation for Advanced Internet
+ * Development, Inc. (UCAID) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for
+ * additional information regarding copyright ownership.
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * UCAID licenses this file to you 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
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the License.
*/
/**
#include "signature/KeyInfo.h"
#include "util/XMLHelper.h"
+#include <boost/lambda/bind.hpp>
+#include <boost/lambda/casts.hpp>
+#include <boost/lambda/if.hpp>
+#include <boost/lambda/lambda.hpp>
#include <xercesc/util/XMLUniDefs.hpp>
using namespace xmlsignature;
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
- public:
- virtual ~DSAKeyValueImpl() {}
-
- 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), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
- init();
- 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() {
m_P=nullptr;
m_Q=nullptr;
m_pos_PgenCounter=m_pos_Seed;
++m_pos_PgenCounter;
}
-
+
+ public:
+ virtual ~DSAKeyValueImpl() {}
+
+ 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), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ init();
+ IMPL_CLONE_TYPED_CHILD(P);
+ IMPL_CLONE_TYPED_CHILD(Q);
+ IMPL_CLONE_TYPED_CHILD(G);
+ IMPL_CLONE_TYPED_CHILD(Y);
+ IMPL_CLONE_TYPED_CHILD(J);
+ IMPL_CLONE_TYPED_CHILD(Seed);
+ IMPL_CLONE_TYPED_CHILD(PgenCounter);
+ }
+
IMPL_XMLOBJECT_CLONE(DSAKeyValue);
IMPL_TYPED_CHILD(P);
IMPL_TYPED_CHILD(Q);
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
+ void init() {
+ m_Modulus=nullptr;
+ m_Exponent=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_pos_Modulus=m_children.begin();
+ m_pos_Exponent=m_pos_Modulus;
+ ++m_pos_Exponent;
+ }
+
public:
virtual ~RSAKeyValueImpl() {}
RSAKeyValueImpl(const RSAKeyValueImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- if (src.getModulus())
- setModulus(src.getModulus()->cloneModulus());
- if (src.getExponent())
- setExponent(src.getExponent()->cloneExponent());
- }
-
- void init() {
- m_Modulus=nullptr;
- m_Exponent=nullptr;
- m_children.push_back(nullptr);
- m_children.push_back(nullptr);
- m_pos_Modulus=m_children.begin();
- m_pos_Exponent=m_pos_Modulus;
- ++m_pos_Exponent;
+ IMPL_CLONE_TYPED_CHILD(Modulus);
+ IMPL_CLONE_TYPED_CHILD(Exponent);
}
IMPL_XMLOBJECT_CLONE(RSAKeyValue);
}
NamedCurveImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- m_URI=nullptr;
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_URI(nullptr) {
}
NamedCurveImpl(const NamedCurveImpl& src)
- : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
- m_URI=nullptr;
- setURI(getURI());
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_URI(nullptr) {
+ IMPL_CLONE_ATTRIB(URI);
}
IMPL_XMLOBJECT_CLONE(NamedCurve);
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
- public:
- virtual ~ECKeyValueImpl() {
- XMLString::release(&m_Id);
- }
-
- ECKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- init();
- }
-
- ECKeyValueImpl(const ECKeyValueImpl& src)
- : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
- init();
- m_Id=XMLString::replicate(src.m_Id);
- if (src.getECParameters())
- setECParameters(src.getECParameters()->clone());
- if (src.getNamedCurve())
- setNamedCurve(src.getNamedCurve()->cloneNamedCurve());
- if (src.getPublicKey())
- setPublicKey(src.getPublicKey()->clonePublicKey());
- }
-
void init() {
m_Id=nullptr;
m_ECParameters=nullptr;
++m_pos_PublicKey;
}
+ public:
+ virtual ~ECKeyValueImpl() {
+ XMLString::release(&m_Id);
+ }
+
+ ECKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ init();
+ }
+
+ ECKeyValueImpl(const ECKeyValueImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ init();
+ IMPL_CLONE_ATTRIB(Id);
+ IMPL_CLONE_XMLOBJECT_CHILD(ECParameters);
+ IMPL_CLONE_TYPED_CHILD(NamedCurve);
+ IMPL_CLONE_TYPED_CHILD(PublicKey);
+ }
+
IMPL_XMLOBJECT_CLONE(ECKeyValue);
IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
IMPL_XMLOBJECT_CHILD(ECParameters);
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
- public:
- virtual ~KeyValueImpl() {}
-
- 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), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
- init();
- if (src.getDSAKeyValue())
- setDSAKeyValue(src.getDSAKeyValue()->cloneDSAKeyValue());
- if (src.getRSAKeyValue())
- setRSAKeyValue(src.getRSAKeyValue()->cloneRSAKeyValue());
- if (src.getECKeyValue())
- setECKeyValue(src.getECKeyValue()->cloneECKeyValue());
- if (src.getUnknownXMLObject())
- setUnknownXMLObject(src.getUnknownXMLObject()->clone());
- }
-
void init() {
m_DSAKeyValue=nullptr;
m_RSAKeyValue=nullptr;
m_pos_UnknownXMLObject=m_pos_ECKeyValue;
++m_pos_UnknownXMLObject;
}
-
+
+ public:
+ virtual ~KeyValueImpl() {}
+
+ 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), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ init();
+ IMPL_CLONE_TYPED_CHILD(DSAKeyValue);
+ IMPL_CLONE_TYPED_CHILD(RSAKeyValue);
+ IMPL_CLONE_TYPED_CHILD(ECKeyValue);
+ IMPL_CLONE_XMLOBJECT_CHILD(UnknownXMLObject);
+ }
+
IMPL_XMLOBJECT_CLONE(KeyValue);
IMPL_TYPED_CHILD(DSAKeyValue);
IMPL_TYPED_CHILD(RSAKeyValue);
DEREncodedKeyValueImpl(const DEREncodedKeyValueImpl& src)
: AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src), m_Id(nullptr) {
- setId(src.getId());
+ IMPL_CLONE_ATTRIB(Id);
}
IMPL_XMLOBJECT_CLONE(DEREncodedKeyValue);
}
TransformImpl(const TransformImpl& src)
- : 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++) {
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Algorithm(nullptr) {
+ IMPL_CLONE_ATTRIB(Algorithm);
+ for (list<XMLObject*>::const_iterator i = src.m_children.begin(); i != src.m_children.end(); ++i) {
+ XPath* x=dynamic_cast<XPath*>(*i);
+ if (x) {
+ getXPaths().push_back(x->cloneXPath());
+ continue;
+ }
+
if (*i) {
- XPath* x=dynamic_cast<XPath*>(*i);
- if (x) {
- getXPaths().push_back(x->cloneXPath());
- continue;
- }
getUnknownXMLObjects().push_back((*i)->clone());
}
}
TransformsImpl(const TransformsImpl& 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) {
- v.push_back((*i)->cloneTransform());
- }
- }
+ IMPL_CLONE_TYPED_CHILDREN(Transform);
}
IMPL_XMLOBJECT_CLONE(Transforms);
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
+ void init() {
+ m_URI=m_Type=nullptr;
+ m_Transforms=nullptr;
+ m_children.push_back(nullptr);
+ m_pos_Transforms=m_children.begin();
+ }
+
public:
virtual ~RetrievalMethodImpl() {
XMLString::release(&m_URI);
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=nullptr;
- m_Transforms=nullptr;
- m_children.push_back(nullptr);
- m_pos_Transforms=m_children.begin();
+ IMPL_CLONE_ATTRIB(URI);
+ IMPL_CLONE_ATTRIB(Type);
+ IMPL_CLONE_TYPED_CHILD(Transforms);
}
IMPL_XMLOBJECT_CLONE(RetrievalMethod);
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
+ void init() {
+ m_X509IssuerName=nullptr;
+ m_X509SerialNumber=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_pos_X509IssuerName=m_children.begin();
+ m_pos_X509SerialNumber=m_pos_X509IssuerName;
+ ++m_pos_X509SerialNumber;
+ }
+
public:
virtual ~X509IssuerSerialImpl() {}
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=nullptr;
- m_X509SerialNumber=nullptr;
- m_children.push_back(nullptr);
- m_children.push_back(nullptr);
- m_pos_X509IssuerName=m_children.begin();
- m_pos_X509SerialNumber=m_pos_X509IssuerName;
- ++m_pos_X509SerialNumber;
+ IMPL_CLONE_TYPED_CHILD(X509IssuerName);
+ IMPL_CLONE_TYPED_CHILD(X509SerialNumber);
}
IMPL_XMLOBJECT_CLONE(X509IssuerSerial);
X509DigestImpl(const X509DigestImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Algorithm(nullptr) {
- setAlgorithm(src.getAlgorithm());
+ IMPL_CLONE_ATTRIB(Algorithm);
}
IMPL_XMLOBJECT_CLONE(X509Digest);
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;
- }
-
- X509Digest* xdig=dynamic_cast<X509Digest*>(*i);
- if (xdig) {
- getX509Digests().push_back(xdig->cloneX509Digest());
- continue;
- }
-
- OCSPResponse* ocsp=dynamic_cast<OCSPResponse*>(*i);
- if (ocsp) {
- getOCSPResponses().push_back(ocsp->cloneOCSPResponse());
- continue;
- }
+ for (list<XMLObject*>::const_iterator i = src.m_children.begin(); i != src.m_children.end(); ++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;
+ }
+
+ X509Digest* xdig=dynamic_cast<X509Digest*>(*i);
+ if (xdig) {
+ getX509Digests().push_back(xdig->cloneX509Digest());
+ continue;
+ }
+ OCSPResponse* ocsp=dynamic_cast<OCSPResponse*>(*i);
+ if (ocsp) {
+ getOCSPResponses().push_back(ocsp->cloneOCSPResponse());
+ continue;
+ }
+
+ if (*i) {
getUnknownXMLObjects().push_back((*i)->clone());
}
}
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
+ vector< pair<SPKISexp*,XMLObject*> > m_SPKISexps;
+
public:
virtual ~SPKIDataImpl() {}
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++) {
+ 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*)nullptr)));
+ getSPKISexps().push_back(make_pair(i->first->cloneSPKISexp(),(i->second ? i->second->clone() : (XMLObject*)nullptr)));
}
}
}
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());
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
+ void init() {
+ m_PGPKeyID=nullptr;
+ m_PGPKeyPacket=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_pos_PGPKeyID=m_children.begin();
+ m_pos_PGPKeyPacket=m_pos_PGPKeyID;
+ ++m_pos_PGPKeyPacket;
+ }
+
public:
virtual ~PGPDataImpl() {}
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=nullptr;
- m_PGPKeyPacket=nullptr;
- m_children.push_back(nullptr);
- m_children.push_back(nullptr);
- m_pos_PGPKeyID=m_children.begin();
- m_pos_PGPKeyPacket=m_pos_PGPKeyID;
- ++m_pos_PGPKeyPacket;
+ IMPL_CLONE_TYPED_CHILD(PGPKeyID);
+ IMPL_CLONE_TYPED_CHILD(PGPKeyPacket);
+ IMPL_CLONE_XMLOBJECT_CHILDREN();
}
IMPL_XMLOBJECT_CLONE(PGPData);
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
+ void init() {
+ m_Id=m_URI=nullptr;
+ }
+
public:
virtual ~KeyInfoReferenceImpl() {
XMLString::release(&m_Id);
KeyInfoReferenceImpl(const KeyInfoReferenceImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setId(getId());
- setURI(getURI());
- }
-
- void init() {
- m_Id=m_URI=nullptr;
+ IMPL_CLONE_ATTRIB(Id);
+ IMPL_CLONE_ATTRIB(URI);
}
IMPL_XMLOBJECT_CLONE(KeyInfoReference);
}
KeyInfoImpl(const KeyInfoImpl& src)
- : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src),
- m_Id(XMLString::replicate(src.m_Id)) {
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Id(nullptr) {
+ IMPL_CLONE_ATTRIB(Id);
+ for (list<XMLObject*>::const_iterator i = src.m_children.begin(); i != src.m_children.end(); ++i) {
+ X509Data* xd=dynamic_cast<X509Data*>(*i);
+ if (xd) {
+ getX509Datas().push_back(xd->cloneX509Data());
+ continue;
+ }
- 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;
- }
-
- 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;
- }
-
- MgmtData* md=dynamic_cast<MgmtData*>(*i);
- if (md) {
- getMgmtDatas().push_back(md->cloneMgmtData());
- continue;
- }
-
- 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;
- }
-
- KeyInfoReference* kref=dynamic_cast<KeyInfoReference*>(*i);
- if (kref) {
- getKeyInfoReferences().push_back(kref->cloneKeyInfoReference());
- 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;
+ }
+ 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;
+ }
+
+ MgmtData* md=dynamic_cast<MgmtData*>(*i);
+ if (md) {
+ getMgmtDatas().push_back(md->cloneMgmtData());
+ continue;
+ }
+
+ 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;
+ }
+
+ KeyInfoReference* kref=dynamic_cast<KeyInfoReference*>(*i);
+ if (kref) {
+ getKeyInfoReferences().push_back(kref->cloneKeyInfoReference());
+ continue;
+ }
+
+ if (*i) {
getUnknownXMLObjects().push_back((*i)->clone());
}
}