2 * Copyright 2001-2010 Internet2
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 * Implementation classes for KeyInfo schema.
24 #include "AbstractComplexElement.h"
25 #include "AbstractSimpleElement.h"
26 #include "exceptions.h"
27 #include "io/AbstractXMLObjectMarshaller.h"
28 #include "io/AbstractXMLObjectUnmarshaller.h"
29 #include "signature/KeyInfo.h"
30 #include "util/XMLHelper.h"
32 #include <xercesc/util/XMLUniDefs.hpp>
34 using namespace xmlsignature;
35 using namespace xmltooling;
36 using namespace xercesc;
38 using xmlconstants::XMLSIG_NS;
39 using xmlconstants::XMLSIG11_NS;
41 #if defined (_MSC_VER)
42 #pragma warning( push )
43 #pragma warning( disable : 4250 4251 )
46 namespace xmlsignature {
48 class XMLTOOL_DLLLOCAL DSAKeyValueImpl : public virtual DSAKeyValue,
49 public AbstractComplexElement,
50 public AbstractDOMCachingXMLObject,
51 public AbstractXMLObjectMarshaller,
52 public AbstractXMLObjectUnmarshaller
55 virtual ~DSAKeyValueImpl() {}
57 DSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
58 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
62 DSAKeyValueImpl(const DSAKeyValueImpl& src)
63 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
66 setP(src.getP()->cloneP());
68 setQ(src.getQ()->cloneQ());
70 setG(src.getG()->cloneG());
72 setY(src.getY()->cloneY());
74 setJ(src.getJ()->cloneJ());
76 setSeed(src.getSeed()->cloneSeed());
77 if (src.getPgenCounter())
78 setPgenCounter(src.getPgenCounter()->clonePgenCounter());
88 m_PgenCounter=nullptr;
89 m_children.push_back(nullptr);
90 m_children.push_back(nullptr);
91 m_children.push_back(nullptr);
92 m_children.push_back(nullptr);
93 m_children.push_back(nullptr);
94 m_children.push_back(nullptr);
95 m_children.push_back(nullptr);
96 m_pos_P=m_children.begin();
107 m_pos_PgenCounter=m_pos_Seed;
111 IMPL_XMLOBJECT_CLONE(DSAKeyValue);
117 IMPL_TYPED_CHILD(Seed);
118 IMPL_TYPED_CHILD(PgenCounter);
121 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
122 PROC_TYPED_CHILD(P,XMLSIG_NS,false);
123 PROC_TYPED_CHILD(Q,XMLSIG_NS,false);
124 PROC_TYPED_CHILD(G,XMLSIG_NS,false);
125 PROC_TYPED_CHILD(Y,XMLSIG_NS,false);
126 PROC_TYPED_CHILD(J,XMLSIG_NS,false);
127 PROC_TYPED_CHILD(Seed,XMLSIG_NS,false);
128 PROC_TYPED_CHILD(PgenCounter,XMLSIG_NS,false);
129 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
133 class XMLTOOL_DLLLOCAL RSAKeyValueImpl : public virtual RSAKeyValue,
134 public AbstractComplexElement,
135 public AbstractDOMCachingXMLObject,
136 public AbstractXMLObjectMarshaller,
137 public AbstractXMLObjectUnmarshaller
140 virtual ~RSAKeyValueImpl() {}
142 RSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
143 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
147 RSAKeyValueImpl(const RSAKeyValueImpl& src)
148 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
150 if (src.getModulus())
151 setModulus(src.getModulus()->cloneModulus());
152 if (src.getExponent())
153 setExponent(src.getExponent()->cloneExponent());
159 m_children.push_back(nullptr);
160 m_children.push_back(nullptr);
161 m_pos_Modulus=m_children.begin();
162 m_pos_Exponent=m_pos_Modulus;
166 IMPL_XMLOBJECT_CLONE(RSAKeyValue);
167 IMPL_TYPED_CHILD(Modulus);
168 IMPL_TYPED_CHILD(Exponent);
171 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
172 PROC_TYPED_CHILD(Modulus,XMLSIG_NS,false);
173 PROC_TYPED_CHILD(Exponent,XMLSIG_NS,false);
174 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
178 class XMLTOOL_DLLLOCAL NamedCurveImpl : public virtual NamedCurve,
179 public AbstractComplexElement,
180 public AbstractDOMCachingXMLObject,
181 public AbstractXMLObjectMarshaller,
182 public AbstractXMLObjectUnmarshaller
185 virtual ~NamedCurveImpl() {
186 XMLString::release(&m_URI);
189 NamedCurveImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
190 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
194 NamedCurveImpl(const NamedCurveImpl& src)
195 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
200 IMPL_XMLOBJECT_CLONE(NamedCurve);
201 IMPL_STRING_ATTRIB(URI);
204 void marshallAttributes(DOMElement* domElement) const {
205 MARSHALL_STRING_ATTRIB(URI,URI,nullptr);
208 void processAttribute(const DOMAttr* attribute) {
209 PROC_STRING_ATTRIB(URI,URI,nullptr);
210 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
214 class XMLTOOL_DLLLOCAL ECKeyValueImpl : public virtual ECKeyValue,
215 public AbstractComplexElement,
216 public AbstractDOMCachingXMLObject,
217 public AbstractXMLObjectMarshaller,
218 public AbstractXMLObjectUnmarshaller
221 virtual ~ECKeyValueImpl() {
222 XMLString::release(&m_Id);
225 ECKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
226 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
230 ECKeyValueImpl(const ECKeyValueImpl& src)
231 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
233 m_Id=XMLString::replicate(src.m_Id);
234 if (src.getECParameters())
235 setECParameters(src.getECParameters()->clone());
236 if (src.getNamedCurve())
237 setNamedCurve(src.getNamedCurve()->cloneNamedCurve());
238 if (src.getPublicKey())
239 setPublicKey(src.getPublicKey()->clonePublicKey());
244 m_ECParameters=nullptr;
245 m_NamedCurve=nullptr;
247 m_children.push_back(nullptr);
248 m_children.push_back(nullptr);
249 m_children.push_back(nullptr);
250 m_pos_ECParameters=m_children.begin();
251 m_pos_NamedCurve=m_pos_ECParameters;
253 m_pos_PublicKey=m_pos_NamedCurve;
257 IMPL_XMLOBJECT_CLONE(ECKeyValue);
258 IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
259 IMPL_XMLOBJECT_CHILD(ECParameters);
260 IMPL_TYPED_CHILD(NamedCurve);
261 IMPL_TYPED_CHILD(PublicKey);
264 void marshallAttributes(DOMElement* domElement) const {
265 MARSHALL_ID_ATTRIB(Id,ID,nullptr);
268 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
269 PROC_TYPED_CHILD(NamedCurve,XMLSIG11_NS,false);
270 PROC_TYPED_CHILD(PublicKey,XMLSIG11_NS,false);
272 // Not really "unknown", but currently unwrapped.
273 static const XMLCh _ECParameters[] = UNICODE_LITERAL_12(E,C,P,a,r,a,m,e,t,e,r,s);
274 if (XMLString::equals(root->getLocalName(), _ECParameters) && XMLString::equals(root->getNamespaceURI(), XMLSIG11_NS)) {
275 setECParameters(childXMLObject);
279 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
282 void processAttribute(const DOMAttr* attribute) {
283 PROC_ID_ATTRIB(Id,ID,nullptr);
284 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
288 class XMLTOOL_DLLLOCAL KeyValueImpl : public virtual KeyValue,
289 public AbstractComplexElement,
290 public AbstractDOMCachingXMLObject,
291 public AbstractXMLObjectMarshaller,
292 public AbstractXMLObjectUnmarshaller
295 virtual ~KeyValueImpl() {}
297 KeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
298 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
302 KeyValueImpl(const KeyValueImpl& src)
303 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
305 if (src.getDSAKeyValue())
306 setDSAKeyValue(src.getDSAKeyValue()->cloneDSAKeyValue());
307 if (src.getRSAKeyValue())
308 setRSAKeyValue(src.getRSAKeyValue()->cloneRSAKeyValue());
309 if (src.getECKeyValue())
310 setECKeyValue(src.getECKeyValue()->cloneECKeyValue());
311 if (src.getUnknownXMLObject())
312 setUnknownXMLObject(src.getUnknownXMLObject()->clone());
316 m_DSAKeyValue=nullptr;
317 m_RSAKeyValue=nullptr;
318 m_ECKeyValue=nullptr;
319 m_UnknownXMLObject=nullptr;
320 m_children.push_back(nullptr);
321 m_children.push_back(nullptr);
322 m_children.push_back(nullptr);
323 m_children.push_back(nullptr);
324 m_pos_DSAKeyValue=m_children.begin();
325 m_pos_RSAKeyValue=m_pos_DSAKeyValue;
327 m_pos_ECKeyValue=m_pos_RSAKeyValue;
329 m_pos_UnknownXMLObject=m_pos_ECKeyValue;
330 ++m_pos_UnknownXMLObject;
333 IMPL_XMLOBJECT_CLONE(KeyValue);
334 IMPL_TYPED_CHILD(DSAKeyValue);
335 IMPL_TYPED_CHILD(RSAKeyValue);
336 IMPL_TYPED_CHILD(ECKeyValue);
337 IMPL_XMLOBJECT_CHILD(UnknownXMLObject);
340 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
341 PROC_TYPED_CHILD(DSAKeyValue,XMLSIG_NS,false);
342 PROC_TYPED_CHILD(RSAKeyValue,XMLSIG_NS,false);
343 PROC_TYPED_CHILD(ECKeyValue,XMLSIG11_NS,false);
346 const XMLCh* nsURI=root->getNamespaceURI();
347 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
348 setUnknownXMLObject(childXMLObject);
352 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
356 class XMLTOOL_DLLLOCAL DEREncodedKeyValueImpl : public virtual DEREncodedKeyValue,
357 public AbstractSimpleElement,
358 public AbstractDOMCachingXMLObject,
359 public AbstractXMLObjectMarshaller,
360 public AbstractXMLObjectUnmarshaller
363 virtual ~DEREncodedKeyValueImpl() {
364 XMLString::release(&m_Id);
367 DEREncodedKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
368 : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Id(nullptr) {
371 DEREncodedKeyValueImpl(const DEREncodedKeyValueImpl& src)
372 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src), m_Id(nullptr) {
376 IMPL_XMLOBJECT_CLONE(DEREncodedKeyValue);
377 IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
380 void marshallAttributes(DOMElement* domElement) const {
381 MARSHALL_ID_ATTRIB(Id,ID,nullptr);
384 void processAttribute(const DOMAttr* attribute) {
385 PROC_ID_ATTRIB(Id,ID,nullptr);
386 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
390 class XMLTOOL_DLLLOCAL TransformImpl : public virtual Transform,
391 public AbstractComplexElement,
392 public AbstractDOMCachingXMLObject,
393 public AbstractXMLObjectMarshaller,
394 public AbstractXMLObjectUnmarshaller
397 virtual ~TransformImpl() {
398 XMLString::release(&m_Algorithm);
401 TransformImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
402 : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Algorithm(nullptr) {
405 TransformImpl(const TransformImpl& src)
406 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src),
407 m_Algorithm(XMLString::replicate(src.m_Algorithm)) {
408 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
410 XPath* x=dynamic_cast<XPath*>(*i);
412 getXPaths().push_back(x->cloneXPath());
415 getUnknownXMLObjects().push_back((*i)->clone());
420 IMPL_XMLOBJECT_CLONE(Transform);
421 IMPL_STRING_ATTRIB(Algorithm);
422 IMPL_TYPED_CHILDREN(XPath,m_children.end());
423 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
426 void marshallAttributes(DOMElement* domElement) const {
427 MARSHALL_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
430 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
431 PROC_TYPED_CHILDREN(XPath,XMLSIG_NS,false);
434 const XMLCh* nsURI=root->getNamespaceURI();
435 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
436 getUnknownXMLObjects().push_back(childXMLObject);
440 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
443 void processAttribute(const DOMAttr* attribute) {
444 PROC_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
445 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
449 class XMLTOOL_DLLLOCAL TransformsImpl : public virtual Transforms,
450 public AbstractComplexElement,
451 public AbstractDOMCachingXMLObject,
452 public AbstractXMLObjectMarshaller,
453 public AbstractXMLObjectUnmarshaller
456 virtual ~TransformsImpl() {}
458 TransformsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
459 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
462 TransformsImpl(const TransformsImpl& src)
463 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
464 VectorOf(Transform) v=getTransforms();
465 for (vector<Transform*>::const_iterator i=src.m_Transforms.begin(); i!=src.m_Transforms.end(); i++) {
467 v.push_back((*i)->cloneTransform());
472 IMPL_XMLOBJECT_CLONE(Transforms);
473 IMPL_TYPED_CHILDREN(Transform,m_children.end());
476 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
477 PROC_TYPED_CHILDREN(Transform,XMLSIG_NS,false);
478 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
482 class XMLTOOL_DLLLOCAL RetrievalMethodImpl : public virtual RetrievalMethod,
483 public AbstractComplexElement,
484 public AbstractDOMCachingXMLObject,
485 public AbstractXMLObjectMarshaller,
486 public AbstractXMLObjectUnmarshaller
489 virtual ~RetrievalMethodImpl() {
490 XMLString::release(&m_URI);
491 XMLString::release(&m_Type);
494 RetrievalMethodImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
495 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
499 RetrievalMethodImpl(const RetrievalMethodImpl& src)
500 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
504 if (src.getTransforms())
505 setTransforms(src.getTransforms()->cloneTransforms());
509 m_URI=m_Type=nullptr;
510 m_Transforms=nullptr;
511 m_children.push_back(nullptr);
512 m_pos_Transforms=m_children.begin();
515 IMPL_XMLOBJECT_CLONE(RetrievalMethod);
516 IMPL_STRING_ATTRIB(URI);
517 IMPL_STRING_ATTRIB(Type);
518 IMPL_TYPED_CHILD(Transforms);
521 void marshallAttributes(DOMElement* domElement) const {
522 MARSHALL_STRING_ATTRIB(URI,URI,nullptr);
523 MARSHALL_STRING_ATTRIB(Type,TYPE,nullptr);
526 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
527 PROC_TYPED_CHILD(Transforms,XMLSIG_NS,false);
528 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
531 void processAttribute(const DOMAttr* attribute) {
532 PROC_STRING_ATTRIB(URI,URI,nullptr);
533 PROC_STRING_ATTRIB(Type,TYPE,nullptr);
534 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
538 class XMLTOOL_DLLLOCAL X509IssuerSerialImpl : public virtual X509IssuerSerial,
539 public AbstractComplexElement,
540 public AbstractDOMCachingXMLObject,
541 public AbstractXMLObjectMarshaller,
542 public AbstractXMLObjectUnmarshaller
545 virtual ~X509IssuerSerialImpl() {}
547 X509IssuerSerialImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
548 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
552 X509IssuerSerialImpl(const X509IssuerSerialImpl& src)
553 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
555 if (src.getX509IssuerName())
556 setX509IssuerName(src.getX509IssuerName()->cloneX509IssuerName());
557 if (src.getX509SerialNumber())
558 setX509SerialNumber(src.getX509SerialNumber()->cloneX509SerialNumber());
562 m_X509IssuerName=nullptr;
563 m_X509SerialNumber=nullptr;
564 m_children.push_back(nullptr);
565 m_children.push_back(nullptr);
566 m_pos_X509IssuerName=m_children.begin();
567 m_pos_X509SerialNumber=m_pos_X509IssuerName;
568 ++m_pos_X509SerialNumber;
571 IMPL_XMLOBJECT_CLONE(X509IssuerSerial);
572 IMPL_TYPED_CHILD(X509IssuerName);
573 IMPL_TYPED_CHILD(X509SerialNumber);
576 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
577 PROC_TYPED_CHILD(X509IssuerName,XMLSIG_NS,false);
578 PROC_TYPED_CHILD(X509SerialNumber,XMLSIG_NS,false);
579 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
583 class XMLTOOL_DLLLOCAL X509DataImpl : public virtual X509Data,
584 public AbstractComplexElement,
585 public AbstractDOMCachingXMLObject,
586 public AbstractXMLObjectMarshaller,
587 public AbstractXMLObjectUnmarshaller
590 virtual ~X509DataImpl() {}
592 X509DataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
593 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
596 X509DataImpl(const X509DataImpl& src)
597 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
598 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
600 X509Certificate* xcert=dynamic_cast<X509Certificate*>(*i);
602 getX509Certificates().push_back(xcert->cloneX509Certificate());
606 X509CRL* xcrl=dynamic_cast<X509CRL*>(*i);
608 getX509CRLs().push_back(xcrl->cloneX509CRL());
612 X509SubjectName* xsn=dynamic_cast<X509SubjectName*>(*i);
614 getX509SubjectNames().push_back(xsn->cloneX509SubjectName());
618 X509IssuerSerial* xis=dynamic_cast<X509IssuerSerial*>(*i);
620 getX509IssuerSerials().push_back(xis->cloneX509IssuerSerial());
624 X509SKI* xski=dynamic_cast<X509SKI*>(*i);
626 getX509SKIs().push_back(xski->cloneX509SKI());
630 OCSPResponse* ocsp=dynamic_cast<OCSPResponse*>(*i);
632 getOCSPResponses().push_back(ocsp->cloneOCSPResponse());
636 getUnknownXMLObjects().push_back((*i)->clone());
641 IMPL_XMLOBJECT_CLONE(X509Data);
642 IMPL_TYPED_CHILDREN(X509IssuerSerial,m_children.end());
643 IMPL_TYPED_CHILDREN(X509SKI,m_children.end());
644 IMPL_TYPED_CHILDREN(X509SubjectName,m_children.end());
645 IMPL_TYPED_CHILDREN(X509Certificate,m_children.end());
646 IMPL_TYPED_CHILDREN(X509CRL,m_children.end());
647 IMPL_TYPED_CHILDREN(OCSPResponse,m_children.end());
648 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
651 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
652 PROC_TYPED_CHILDREN(X509IssuerSerial,XMLSIG_NS,false);
653 PROC_TYPED_CHILDREN(X509SKI,XMLSIG_NS,false);
654 PROC_TYPED_CHILDREN(X509SubjectName,XMLSIG_NS,false);
655 PROC_TYPED_CHILDREN(X509Certificate,XMLSIG_NS,false);
656 PROC_TYPED_CHILDREN(X509CRL,XMLSIG_NS,false);
657 PROC_TYPED_CHILDREN(OCSPResponse,XMLSIG_NS,false);
660 const XMLCh* nsURI=root->getNamespaceURI();
661 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
662 getUnknownXMLObjects().push_back(childXMLObject);
666 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
670 class XMLTOOL_DLLLOCAL SPKIDataImpl : public virtual SPKIData,
671 public AbstractComplexElement,
672 public AbstractDOMCachingXMLObject,
673 public AbstractXMLObjectMarshaller,
674 public AbstractXMLObjectUnmarshaller
677 virtual ~SPKIDataImpl() {}
679 SPKIDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
680 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
683 SPKIDataImpl(const SPKIDataImpl& src)
684 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
685 VectorOfPairs(SPKISexp,XMLObject) v=getSPKISexps();
686 for (vector< pair<SPKISexp*,XMLObject*> >::const_iterator i=src.m_SPKISexps.begin(); i!=src.m_SPKISexps.end(); i++) {
688 v.push_back(make_pair(i->first->cloneSPKISexp(),(i->second ? i->second->clone() : (XMLObject*)nullptr)));
693 IMPL_XMLOBJECT_CLONE(SPKIData);
696 vector< pair<SPKISexp*,XMLObject*> > m_SPKISexps;
699 VectorOfPairs(SPKISexp,XMLObject) getSPKISexps() {
700 return VectorOfPairs(SPKISexp,XMLObject)(this, m_SPKISexps, &m_children, m_children.end());
703 const vector< pair<SPKISexp*,XMLObject*> >& getSPKISexps() const {
708 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
709 if (XMLHelper::isNodeNamed(root,XMLSIG_NS,SPKISexp::LOCAL_NAME)) {
710 SPKISexp* typesafe=dynamic_cast<SPKISexp*>(childXMLObject);
712 getSPKISexps().push_back(make_pair(typesafe,(XMLObject*)nullptr));
717 // Unknown child (has to be paired with the last SPKISexp processed.
718 const XMLCh* nsURI=root->getNamespaceURI();
719 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
720 // Update second half of pair in vector, and in master list.
721 if (!m_SPKISexps.empty() && m_SPKISexps.back().second==nullptr) {
722 m_SPKISexps.back().second=childXMLObject;
723 m_children.back()=childXMLObject;
727 throw UnmarshallingException("Extension element must follow ds:SPKISexp element.");
730 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
734 class XMLTOOL_DLLLOCAL PGPDataImpl : public virtual PGPData,
735 public AbstractComplexElement,
736 public AbstractDOMCachingXMLObject,
737 public AbstractXMLObjectMarshaller,
738 public AbstractXMLObjectUnmarshaller
741 virtual ~PGPDataImpl() {}
743 PGPDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
744 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
748 PGPDataImpl(const PGPDataImpl& src)
749 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
751 if (src.getPGPKeyID())
752 setPGPKeyID(src.getPGPKeyID()->clonePGPKeyID());
753 if (src.getPGPKeyPacket())
754 setPGPKeyPacket(src.getPGPKeyPacket()->clonePGPKeyPacket());
755 VectorOf(XMLObject) v=getUnknownXMLObjects();
756 for (vector<XMLObject*>::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i)
757 v.push_back((*i)->clone());
762 m_PGPKeyPacket=nullptr;
763 m_children.push_back(nullptr);
764 m_children.push_back(nullptr);
765 m_pos_PGPKeyID=m_children.begin();
766 m_pos_PGPKeyPacket=m_pos_PGPKeyID;
767 ++m_pos_PGPKeyPacket;
770 IMPL_XMLOBJECT_CLONE(PGPData);
771 IMPL_TYPED_CHILD(PGPKeyID);
772 IMPL_TYPED_CHILD(PGPKeyPacket);
773 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
776 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
777 PROC_TYPED_CHILD(PGPKeyID,XMLSIG_NS,false);
778 PROC_TYPED_CHILD(PGPKeyPacket,XMLSIG_NS,false);
781 const XMLCh* nsURI=root->getNamespaceURI();
782 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
783 getUnknownXMLObjects().push_back(childXMLObject);
787 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
791 class XMLTOOL_DLLLOCAL KeyInfoReferenceImpl : public virtual KeyInfoReference,
792 public AbstractComplexElement,
793 public AbstractDOMCachingXMLObject,
794 public AbstractXMLObjectMarshaller,
795 public AbstractXMLObjectUnmarshaller
798 virtual ~KeyInfoReferenceImpl() {
799 XMLString::release(&m_Id);
800 XMLString::release(&m_URI);
803 KeyInfoReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
804 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
808 KeyInfoReferenceImpl(const KeyInfoReferenceImpl& src)
809 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
819 IMPL_XMLOBJECT_CLONE(KeyInfoReference);
820 IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
821 IMPL_STRING_ATTRIB(URI);
824 void marshallAttributes(DOMElement* domElement) const {
825 MARSHALL_ID_ATTRIB(Id,ID,nullptr);
826 MARSHALL_STRING_ATTRIB(URI,URI,nullptr);
829 void processAttribute(const DOMAttr* attribute) {
830 PROC_ID_ATTRIB(Id,ID,nullptr);
831 PROC_STRING_ATTRIB(URI,URI,nullptr);
832 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
836 class XMLTOOL_DLLLOCAL KeyInfoImpl : public virtual KeyInfo,
837 public AbstractComplexElement,
838 public AbstractDOMCachingXMLObject,
839 public AbstractXMLObjectMarshaller,
840 public AbstractXMLObjectUnmarshaller
843 virtual ~KeyInfoImpl() {
844 XMLString::release(&m_Id);
847 KeyInfoImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
848 : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Id(nullptr) {
851 KeyInfoImpl(const KeyInfoImpl& src)
852 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src),
853 m_Id(XMLString::replicate(src.m_Id)) {
855 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
857 X509Data* xd=dynamic_cast<X509Data*>(*i);
859 getX509Datas().push_back(xd->cloneX509Data());
863 KeyName* kn=dynamic_cast<KeyName*>(*i);
865 getKeyNames().push_back(kn->cloneKeyName());
869 KeyValue* kv=dynamic_cast<KeyValue*>(*i);
871 getKeyValues().push_back(kv->cloneKeyValue());
875 DEREncodedKeyValue* ekv=dynamic_cast<DEREncodedKeyValue*>(*i);
877 getDEREncodedKeyValues().push_back(ekv->cloneDEREncodedKeyValue());
881 RetrievalMethod* rm=dynamic_cast<RetrievalMethod*>(*i);
883 getRetrievalMethods().push_back(rm->cloneRetrievalMethod());
887 MgmtData* md=dynamic_cast<MgmtData*>(*i);
889 getMgmtDatas().push_back(md->cloneMgmtData());
893 SPKIData* sd=dynamic_cast<SPKIData*>(*i);
895 getSPKIDatas().push_back(sd->cloneSPKIData());
899 PGPData* pd=dynamic_cast<PGPData*>(*i);
901 getPGPDatas().push_back(pd->clonePGPData());
905 KeyInfoReference* kref=dynamic_cast<KeyInfoReference*>(*i);
907 getKeyInfoReferences().push_back(kref->cloneKeyInfoReference());
911 getUnknownXMLObjects().push_back((*i)->clone());
916 IMPL_XMLOBJECT_CLONE(KeyInfo);
917 IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
918 IMPL_TYPED_CHILDREN(KeyName,m_children.end());
919 IMPL_TYPED_CHILDREN(KeyValue,m_children.end());
920 IMPL_TYPED_CHILDREN(DEREncodedKeyValue,m_children.end());
921 IMPL_TYPED_CHILDREN(RetrievalMethod,m_children.end());
922 IMPL_TYPED_CHILDREN(X509Data,m_children.end());
923 IMPL_TYPED_CHILDREN(MgmtData,m_children.end());
924 IMPL_TYPED_CHILDREN(SPKIData,m_children.end());
925 IMPL_TYPED_CHILDREN(PGPData,m_children.end());
926 IMPL_TYPED_CHILDREN(KeyInfoReference,m_children.end());
927 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
930 void marshallAttributes(DOMElement* domElement) const {
931 MARSHALL_ID_ATTRIB(Id,ID,nullptr);
934 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
935 PROC_TYPED_CHILDREN(X509Data,XMLSIG_NS,false);
936 PROC_TYPED_CHILDREN(KeyName,XMLSIG_NS,false);
937 PROC_TYPED_CHILDREN(KeyValue,XMLSIG_NS,false);
938 PROC_TYPED_CHILDREN(DEREncodedKeyValue,XMLSIG11_NS,false);
939 PROC_TYPED_CHILDREN(RetrievalMethod,XMLSIG_NS,false);
940 PROC_TYPED_CHILDREN(MgmtData,XMLSIG_NS,false);
941 PROC_TYPED_CHILDREN(SPKIData,XMLSIG_NS,false);
942 PROC_TYPED_CHILDREN(PGPData,XMLSIG_NS,false);
943 PROC_TYPED_CHILDREN(KeyInfoReference,XMLSIG11_NS,false);
946 const XMLCh* nsURI=root->getNamespaceURI();
947 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
948 getUnknownXMLObjects().push_back(childXMLObject);
952 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
955 void processAttribute(const DOMAttr* attribute) {
956 PROC_ID_ATTRIB(Id,ID,nullptr);
957 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
961 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,KeyName);
962 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,MgmtData);
963 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Modulus);
964 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Exponent);
965 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Seed);
966 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PgenCounter);
967 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,P);
968 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Q);
969 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,G);
970 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Y);
971 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,J);
972 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,XPath);
973 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509IssuerName);
974 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SerialNumber);
975 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SKI);
976 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SubjectName);
977 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509Certificate);
978 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509CRL);
979 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,SPKISexp);
980 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PGPKeyID);
981 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PGPKeyPacket);
983 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,OCSPResponse);
984 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PublicKey);
987 #if defined (_MSC_VER)
988 #pragma warning( pop )
991 // Builder Implementations
993 IMPL_XMLOBJECTBUILDER(X509IssuerSerial);
994 IMPL_XMLOBJECTBUILDER(X509IssuerName);
995 IMPL_XMLOBJECTBUILDER(X509SerialNumber);
996 IMPL_XMLOBJECTBUILDER(X509SKI);
997 IMPL_XMLOBJECTBUILDER(X509SubjectName);
998 IMPL_XMLOBJECTBUILDER(X509Certificate);
999 IMPL_XMLOBJECTBUILDER(X509CRL);
1000 IMPL_XMLOBJECTBUILDER(X509Data);
1001 IMPL_XMLOBJECTBUILDER(XPath);
1002 IMPL_XMLOBJECTBUILDER(Transform);
1003 IMPL_XMLOBJECTBUILDER(Transforms);
1004 IMPL_XMLOBJECTBUILDER(RetrievalMethod);
1005 IMPL_XMLOBJECTBUILDER(KeyName);
1006 IMPL_XMLOBJECTBUILDER(MgmtData);
1007 IMPL_XMLOBJECTBUILDER(Modulus);
1008 IMPL_XMLOBJECTBUILDER(Exponent);
1009 IMPL_XMLOBJECTBUILDER(Seed);
1010 IMPL_XMLOBJECTBUILDER(PgenCounter);
1011 IMPL_XMLOBJECTBUILDER(P);
1012 IMPL_XMLOBJECTBUILDER(Q);
1013 IMPL_XMLOBJECTBUILDER(G);
1014 IMPL_XMLOBJECTBUILDER(Y);
1015 IMPL_XMLOBJECTBUILDER(J);
1016 IMPL_XMLOBJECTBUILDER(DSAKeyValue);
1017 IMPL_XMLOBJECTBUILDER(RSAKeyValue);
1018 IMPL_XMLOBJECTBUILDER(KeyValue);
1019 IMPL_XMLOBJECTBUILDER(KeyInfo);
1020 IMPL_XMLOBJECTBUILDER(SPKISexp);
1021 IMPL_XMLOBJECTBUILDER(SPKIData);
1022 IMPL_XMLOBJECTBUILDER(PGPKeyID);
1023 IMPL_XMLOBJECTBUILDER(PGPKeyPacket);
1024 IMPL_XMLOBJECTBUILDER(PGPData);
1026 IMPL_XMLOBJECTBUILDER(DEREncodedKeyValue);
1027 IMPL_XMLOBJECTBUILDER(ECKeyValue);
1028 IMPL_XMLOBJECTBUILDER(KeyInfoReference);
1029 IMPL_XMLOBJECTBUILDER(NamedCurve);
1030 IMPL_XMLOBJECTBUILDER(OCSPResponse);
1031 IMPL_XMLOBJECTBUILDER(PublicKey);
1035 const XMLCh KeyInfo::LOCAL_NAME[] = UNICODE_LITERAL_7(K,e,y,I,n,f,o);
1036 const XMLCh KeyInfo::TYPE_NAME[] = UNICODE_LITERAL_11(K,e,y,I,n,f,o,T,y,p,e);
1037 const XMLCh KeyInfo::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1038 const XMLCh KeyValue::LOCAL_NAME[] = UNICODE_LITERAL_8(K,e,y,V,a,l,u,e);
1039 const XMLCh KeyValue::TYPE_NAME[] = UNICODE_LITERAL_12(K,e,y,V,a,l,u,e,T,y,p,e);
1040 const XMLCh DSAKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_11(D,S,A,K,e,y,V,a,l,u,e);
1041 const XMLCh DSAKeyValue::TYPE_NAME[] = UNICODE_LITERAL_15(D,S,A,K,e,y,V,a,l,u,e,T,y,p,e);
1042 const XMLCh RSAKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_11(R,S,A,K,e,y,V,a,l,u,e);
1043 const XMLCh RSAKeyValue::TYPE_NAME[] = UNICODE_LITERAL_15(R,S,A,K,e,y,V,a,l,u,e,T,y,p,e);
1044 const XMLCh MgmtData::LOCAL_NAME[] = UNICODE_LITERAL_8(M,g,m,t,D,a,t,a);
1045 const XMLCh KeyName::LOCAL_NAME[] = UNICODE_LITERAL_7(K,e,y,N,a,m,e);
1046 const XMLCh Modulus::LOCAL_NAME[] = UNICODE_LITERAL_7(M,o,d,u,l,u,s);
1047 const XMLCh Exponent::LOCAL_NAME[] = UNICODE_LITERAL_8(E,x,p,o,n,e,n,t);
1048 const XMLCh Seed::LOCAL_NAME[] = UNICODE_LITERAL_4(S,e,e,d);
1049 const XMLCh PgenCounter::LOCAL_NAME[] = UNICODE_LITERAL_11(P,g,e,n,C,o,u,n,t,e,r);
1050 const XMLCh P::LOCAL_NAME[] = UNICODE_LITERAL_1(P);
1051 const XMLCh Q::LOCAL_NAME[] = UNICODE_LITERAL_1(Q);
1052 const XMLCh G::LOCAL_NAME[] = UNICODE_LITERAL_1(G);
1053 const XMLCh Y::LOCAL_NAME[] = UNICODE_LITERAL_1(Y);
1054 const XMLCh J::LOCAL_NAME[] = UNICODE_LITERAL_1(J);
1055 const XMLCh XPath::LOCAL_NAME[] = UNICODE_LITERAL_5(X,P,a,t,h);
1056 const XMLCh Transform::LOCAL_NAME[] = UNICODE_LITERAL_9(T,r,a,n,s,f,o,r,m);
1057 const XMLCh Transform::TYPE_NAME[] = UNICODE_LITERAL_13(T,r,a,n,s,f,o,r,m,T,y,p,e);
1058 const XMLCh Transform::ALGORITHM_ATTRIB_NAME[] = UNICODE_LITERAL_9(A,l,g,o,r,i,t,h,m);
1059 const XMLCh Transforms::LOCAL_NAME[] = UNICODE_LITERAL_10(T,r,a,n,s,f,o,r,m,s);
1060 const XMLCh Transforms::TYPE_NAME[] = UNICODE_LITERAL_14(T,r,a,n,s,f,o,r,m,s,T,y,p,e);
1061 const XMLCh RetrievalMethod::LOCAL_NAME[] = UNICODE_LITERAL_15(R,e,t,r,i,e,v,a,l,M,e,t,h,o,d);
1062 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);
1063 const XMLCh RetrievalMethod::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
1064 const XMLCh RetrievalMethod::TYPE_ATTRIB_NAME[] = UNICODE_LITERAL_4(T,y,p,e);
1065 const XMLCh SPKISexp::LOCAL_NAME[] = UNICODE_LITERAL_8(S,P,K,I,S,e,x,p);
1066 const XMLCh SPKIData::LOCAL_NAME[] = UNICODE_LITERAL_8(S,P,K,I,D,a,t,a);
1067 const XMLCh SPKIData::TYPE_NAME[] = UNICODE_LITERAL_12(S,P,K,I,D,a,t,a,T,y,p,e);
1068 const XMLCh PGPKeyID::LOCAL_NAME[] = UNICODE_LITERAL_8(P,G,P,K,e,y,I,D);
1069 const XMLCh PGPKeyPacket::LOCAL_NAME[] = UNICODE_LITERAL_12(P,G,P,K,e,y,P,a,c,k,e,t);
1070 const XMLCh PGPData::LOCAL_NAME[] = UNICODE_LITERAL_7(P,G,P,D,a,t,a);
1071 const XMLCh PGPData::TYPE_NAME[] = UNICODE_LITERAL_11(P,G,P,D,a,t,a,T,y,p,e);
1073 const XMLCh DEREncodedKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_18(D,E,R,E,n,c,o,d,e,d,K,e,y,V,a,l,u,e);
1074 const XMLCh DEREncodedKeyValue::TYPE_NAME[] = UNICODE_LITERAL_22(D,E,R,E,n,c,o,d,e,d,K,e,y,V,a,l,u,e,T,y,p,e);
1075 const XMLCh DEREncodedKeyValue::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1076 const XMLCh ECKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_10(E,C,K,e,y,V,a,l,u,e);
1077 const XMLCh ECKeyValue::TYPE_NAME[] = UNICODE_LITERAL_14(E,C,K,e,y,V,a,l,u,e,T,y,p,e);
1078 const XMLCh ECKeyValue::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1079 const XMLCh KeyInfoReference::LOCAL_NAME[] = UNICODE_LITERAL_16(K,e,y,I,n,f,o,R,e,f,e,r,e,n,c,e);
1080 const XMLCh KeyInfoReference::TYPE_NAME[] = UNICODE_LITERAL_20(K,e,y,I,n,f,o,R,e,f,e,r,e,n,c,e,T,y,p,e);
1081 const XMLCh KeyInfoReference::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1082 const XMLCh KeyInfoReference::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
1083 const XMLCh NamedCurve::LOCAL_NAME[] = UNICODE_LITERAL_10(N,a,m,e,d,C,u,r,v,e);
1084 const XMLCh NamedCurve::TYPE_NAME[] = UNICODE_LITERAL_14(N,a,m,e,d,C,u,r,v,e,T,y,p,e);
1085 const XMLCh NamedCurve::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
1086 const XMLCh OCSPResponse::LOCAL_NAME[] = UNICODE_LITERAL_12(O,C,S,P,R,e,s,p,o,n,s,e);
1087 const XMLCh PublicKey::LOCAL_NAME[] = UNICODE_LITERAL_9(P,u,b,l,i,c,K,e,y);
1089 #define XCH(ch) chLatin_##ch
1090 #define XNUM(d) chDigit_##d
1092 const XMLCh X509Data::LOCAL_NAME[] = {
1093 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(D), XCH(a), XCH(t), XCH(a), chNull
1095 const XMLCh X509Data::TYPE_NAME[] = {
1096 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
1098 const XMLCh X509IssuerSerial::LOCAL_NAME[] = {
1099 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
1100 XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l), chNull
1102 const XMLCh X509IssuerSerial::TYPE_NAME[] = {
1103 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
1104 XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l), XCH(T), XCH(y), XCH(p), XCH(e), chNull
1106 const XMLCh X509IssuerName::LOCAL_NAME[] = {
1107 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
1108 XCH(N), XCH(a), XCH(m), XCH(e), chNull
1110 const XMLCh X509SerialNumber::LOCAL_NAME[] = {
1111 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l),
1112 XCH(N), XCH(u), XCH(m), XCH(b), XCH(e), XCH(r), chNull
1114 const XMLCh X509SKI::LOCAL_NAME[] = { XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(K), XCH(I), chNull };
1115 const XMLCh X509SubjectName::LOCAL_NAME[] = {
1116 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(u), XCH(b), XCH(j), XCH(e), XCH(c), XCH(t),
1117 XCH(N), XCH(a), XCH(m), XCH(e), chNull
1119 const XMLCh X509Certificate::LOCAL_NAME[] = {
1120 XCH(X), XNUM(5), XNUM(0), XNUM(9),
1121 XCH(C), XCH(e), XCH(r), XCH(t), XCH(i), XCH(f), XCH(i), XCH(c), XCH(a), XCH(t), XCH(e), chNull
1123 const XMLCh X509CRL::LOCAL_NAME[] = { XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(C), XCH(R), XCH(L), chNull };
1125 const XMLCh RetrievalMethod::TYPE_DSAKEYVALUE[] = {
1126 chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
1127 chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
1128 chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
1129 chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
1130 chLatin_D, chLatin_S, chLatin_A, chLatin_K, chLatin_e, chLatin_y, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
1133 const XMLCh RetrievalMethod::TYPE_RSAKEYVALUE[] = {
1134 chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
1135 chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
1136 chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
1137 chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
1138 chLatin_R, chLatin_S, chLatin_A, chLatin_K, chLatin_e, chLatin_y, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
1141 const XMLCh RetrievalMethod::TYPE_X509DATA[] = {
1142 chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
1143 chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
1144 chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
1145 chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
1146 chLatin_X, chDigit_5, chDigit_0, chDigit_9, chLatin_D, chLatin_a, chLatin_t, chLatin_a, chNull