-/*
- * 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.
+ *
+ * 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
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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.
+ * 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.
*/
/**
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();
+ 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());
+ }
+
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() {}
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_XMLOBJECT_CLONE(RSAKeyValue);
IMPL_TYPED_CHILD(Modulus);
IMPL_TYPED_CHILD(Exponent);
}
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) {
+ setURI(src.getURI());
}
IMPL_XMLOBJECT_CLONE(NamedCurve);
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
+ void init() {
+ m_Id=nullptr;
+ m_ECParameters=nullptr;
+ m_NamedCurve=nullptr;
+ m_PublicKey=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_pos_ECParameters=m_children.begin();
+ m_pos_NamedCurve=m_pos_ECParameters;
+ ++m_pos_NamedCurve;
+ m_pos_PublicKey=m_pos_NamedCurve;
+ ++m_pos_PublicKey;
+ }
+
public:
virtual ~ECKeyValueImpl() {
XMLString::release(&m_Id);
ECKeyValueImpl(const ECKeyValueImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- m_Id=XMLString::replicate(src.m_Id);
+ setId(src.getId());
if (src.getECParameters())
setECParameters(src.getECParameters()->clone());
if (src.getNamedCurve())
setPublicKey(src.getPublicKey()->clonePublicKey());
}
- void init() {
- m_Id=nullptr;
- m_ECParameters=nullptr;
- m_NamedCurve=nullptr;
- m_PublicKey=nullptr;
- m_children.push_back(nullptr);
- m_children.push_back(nullptr);
- m_children.push_back(nullptr);
- m_pos_ECParameters=m_children.begin();
- m_pos_NamedCurve=m_pos_ECParameters;
- ++m_pos_NamedCurve;
- m_pos_PublicKey=m_pos_NamedCurve;
- ++m_pos_PublicKey;
- }
-
IMPL_XMLOBJECT_CLONE(ECKeyValue);
IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
IMPL_XMLOBJECT_CHILD(ECParameters);
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
+ void init() {
+ m_DSAKeyValue=nullptr;
+ m_RSAKeyValue=nullptr;
+ m_ECKeyValue=nullptr;
+ m_UnknownXMLObject=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_pos_DSAKeyValue=m_children.begin();
+ m_pos_RSAKeyValue=m_pos_DSAKeyValue;
+ ++m_pos_RSAKeyValue;
+ m_pos_ECKeyValue=m_pos_RSAKeyValue;
+ ++m_pos_ECKeyValue;
+ m_pos_UnknownXMLObject=m_pos_ECKeyValue;
+ ++m_pos_UnknownXMLObject;
+ }
+
public:
virtual ~KeyValueImpl() {}
if (src.getUnknownXMLObject())
setUnknownXMLObject(src.getUnknownXMLObject()->clone());
}
-
- void init() {
- m_DSAKeyValue=nullptr;
- m_RSAKeyValue=nullptr;
- m_ECKeyValue=nullptr;
- m_UnknownXMLObject=nullptr;
- m_children.push_back(nullptr);
- m_children.push_back(nullptr);
- m_children.push_back(nullptr);
- m_children.push_back(nullptr);
- m_pos_DSAKeyValue=m_children.begin();
- m_pos_RSAKeyValue=m_pos_DSAKeyValue;
- ++m_pos_RSAKeyValue;
- m_pos_ECKeyValue=m_pos_RSAKeyValue;
- ++m_pos_ECKeyValue;
- m_pos_UnknownXMLObject=m_pos_ECKeyValue;
- ++m_pos_UnknownXMLObject;
- }
-
+
IMPL_XMLOBJECT_CLONE(KeyValue);
IMPL_TYPED_CHILD(DSAKeyValue);
IMPL_TYPED_CHILD(RSAKeyValue);
}
TransformImpl(const TransformImpl& src)
- : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src),
- m_Algorithm(XMLString::replicate(src.m_Algorithm)) {
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Algorithm(nullptr) {
+ setAlgorithm(src.getAlgorithm());
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;
}
- getUnknownXMLObjects().push_back((*i)->clone());
+
+ if (*i) {
+ 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());
+ getTransforms().push_back((*i)->cloneTransform());
}
}
}
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());
+ setURI(src.getURI());
+ setType(src.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_XMLOBJECT_CLONE(RetrievalMethod);
IMPL_STRING_ATTRIB(URI);
IMPL_STRING_ATTRIB(Type);
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() {}
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_XMLOBJECT_CLONE(X509IssuerSerial);
IMPL_TYPED_CHILD(X509IssuerName);
IMPL_TYPED_CHILD(X509SerialNumber);
}
};
+ class XMLTOOL_DLLLOCAL X509DigestImpl : public virtual X509Digest,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ public:
+ virtual ~X509DigestImpl() {
+ XMLString::release(&m_Algorithm);
+ }
+
+ X509DigestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Algorithm(nullptr) {
+ }
+
+ X509DigestImpl(const X509DigestImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Algorithm(nullptr) {
+ setAlgorithm(src.getAlgorithm());
+ }
+
+ IMPL_XMLOBJECT_CLONE(X509Digest);
+ IMPL_STRING_ATTRIB(Algorithm);
+
+ protected:
+ void marshallAttributes(DOMElement* domElement) const {
+ MARSHALL_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
+ }
+
+ void processAttribute(const DOMAttr* attribute) {
+ PROC_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
+ AbstractXMLObjectUnmarshaller::processAttribute(attribute);
+ }
+ };
+
+
class XMLTOOL_DLLLOCAL X509DataImpl : public virtual X509Data,
public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
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;
}
- getUnknownXMLObjects().push_back((*i)->clone());
+ if (*i) {
+ 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(X509Digest,m_children.end());
IMPL_TYPED_CHILDREN(OCSPResponse,m_children.end());
IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
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);
+ PROC_TYPED_CHILDREN(X509Digest,XMLSIG11_NS,false);
+ PROC_TYPED_CHILDREN(OCSPResponse,XMLSIG11_NS,false);
// Unknown child.
const XMLCh* nsURI=root->getNamespaceURI();
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++) {
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() {}
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;
+ for (vector<XMLObject*>::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i) {
+ if (*i) {
+ getUnknownXMLObjects().push_back((*i)->clone());
+ }
+ }
}
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;
+ setId(src.getId());
+ setURI(src.getURI());
}
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) {
+ setId(src.getId());
for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
if (*i) {
X509Data* xd=dynamic_cast<X509Data*>(*i);
continue;
}
- getUnknownXMLObjects().push_back((*i)->clone());
+ if (*i) {
+ getUnknownXMLObjects().push_back((*i)->clone());
+ }
}
}
}
IMPL_XMLOBJECTBUILDER(NamedCurve);
IMPL_XMLOBJECTBUILDER(OCSPResponse);
IMPL_XMLOBJECTBUILDER(PublicKey);
+IMPL_XMLOBJECTBUILDER(X509Digest);
// Unicode literals
const XMLCh NamedCurve::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
const XMLCh OCSPResponse::LOCAL_NAME[] = UNICODE_LITERAL_12(O,C,S,P,R,e,s,p,o,n,s,e);
const XMLCh PublicKey::LOCAL_NAME[] = UNICODE_LITERAL_9(P,u,b,l,i,c,K,e,y);
+const XMLCh X509Digest::ALGORITHM_ATTRIB_NAME[] = UNICODE_LITERAL_9(A,l,g,o,r,i,t,h,m);
#define XCH(ch) chLatin_##ch
#define XNUM(d) chDigit_##d
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 X509Digest::LOCAL_NAME[] = {
+ XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(D), XCH(i), XCH(g), XCH(e), XCH(s), XCH(t), chNull
+ };
+const XMLCh X509Digest::TYPE_NAME[] = {
+ XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(D), XCH(i), XCH(g), XCH(e), XCH(s), XCH(t), XCH(T), XCH(y), XCH(p), XCH(e), chNull
+ };
const XMLCh RetrievalMethod::TYPE_DSAKEYVALUE[] = {
chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, 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
};
-