2 * Licensed to the University Corporation for Advanced Internet
3 * Development, Inc. (UCAID) under one or more contributor license
4 * agreements. See the NOTICE file distributed with this work for
5 * additional information regarding copyright ownership.
7 * UCAID licenses this file to you under the Apache License,
8 * Version 2.0 (the "License"); you may not use this file except
9 * in compliance with the License. You may obtain a copy of the
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
17 * either express or implied. See the License for the specific
18 * language governing permissions and limitations under the License.
24 * Implementation classes for KeyInfo schema.
28 #include "AbstractComplexElement.h"
29 #include "AbstractSimpleElement.h"
30 #include "exceptions.h"
31 #include "io/AbstractXMLObjectMarshaller.h"
32 #include "io/AbstractXMLObjectUnmarshaller.h"
33 #include "signature/KeyInfo.h"
34 #include "util/XMLHelper.h"
36 #include <boost/lambda/bind.hpp>
37 #include <boost/lambda/casts.hpp>
38 #include <boost/lambda/if.hpp>
39 #include <boost/lambda/lambda.hpp>
40 #include <xercesc/util/XMLUniDefs.hpp>
42 using namespace xmlsignature;
43 using namespace xmltooling;
44 using namespace xercesc;
46 using xmlconstants::XMLSIG_NS;
47 using xmlconstants::XMLSIG11_NS;
49 #if defined (_MSC_VER)
50 #pragma warning( push )
51 #pragma warning( disable : 4250 4251 )
54 namespace xmlsignature {
56 class XMLTOOL_DLLLOCAL DSAKeyValueImpl : public virtual DSAKeyValue,
57 public AbstractComplexElement,
58 public AbstractDOMCachingXMLObject,
59 public AbstractXMLObjectMarshaller,
60 public AbstractXMLObjectUnmarshaller
69 m_PgenCounter=nullptr;
70 m_children.push_back(nullptr);
71 m_children.push_back(nullptr);
72 m_children.push_back(nullptr);
73 m_children.push_back(nullptr);
74 m_children.push_back(nullptr);
75 m_children.push_back(nullptr);
76 m_children.push_back(nullptr);
77 m_pos_P=m_children.begin();
88 m_pos_PgenCounter=m_pos_Seed;
93 virtual ~DSAKeyValueImpl() {}
95 DSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
96 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
100 DSAKeyValueImpl(const DSAKeyValueImpl& src)
101 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
103 IMPL_CLONE_TYPED_CHILD(P);
104 IMPL_CLONE_TYPED_CHILD(Q);
105 IMPL_CLONE_TYPED_CHILD(G);
106 IMPL_CLONE_TYPED_CHILD(Y);
107 IMPL_CLONE_TYPED_CHILD(J);
108 IMPL_CLONE_TYPED_CHILD(Seed);
109 IMPL_CLONE_TYPED_CHILD(PgenCounter);
112 IMPL_XMLOBJECT_CLONE(DSAKeyValue);
118 IMPL_TYPED_CHILD(Seed);
119 IMPL_TYPED_CHILD(PgenCounter);
122 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
123 PROC_TYPED_CHILD(P,XMLSIG_NS,false);
124 PROC_TYPED_CHILD(Q,XMLSIG_NS,false);
125 PROC_TYPED_CHILD(G,XMLSIG_NS,false);
126 PROC_TYPED_CHILD(Y,XMLSIG_NS,false);
127 PROC_TYPED_CHILD(J,XMLSIG_NS,false);
128 PROC_TYPED_CHILD(Seed,XMLSIG_NS,false);
129 PROC_TYPED_CHILD(PgenCounter,XMLSIG_NS,false);
130 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
134 class XMLTOOL_DLLLOCAL RSAKeyValueImpl : public virtual RSAKeyValue,
135 public AbstractComplexElement,
136 public AbstractDOMCachingXMLObject,
137 public AbstractXMLObjectMarshaller,
138 public AbstractXMLObjectUnmarshaller
143 m_children.push_back(nullptr);
144 m_children.push_back(nullptr);
145 m_pos_Modulus=m_children.begin();
146 m_pos_Exponent=m_pos_Modulus;
151 virtual ~RSAKeyValueImpl() {}
153 RSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
154 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
158 RSAKeyValueImpl(const RSAKeyValueImpl& src)
159 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
161 IMPL_CLONE_TYPED_CHILD(Modulus);
162 IMPL_CLONE_TYPED_CHILD(Exponent);
165 IMPL_XMLOBJECT_CLONE(RSAKeyValue);
166 IMPL_TYPED_CHILD(Modulus);
167 IMPL_TYPED_CHILD(Exponent);
170 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
171 PROC_TYPED_CHILD(Modulus,XMLSIG_NS,false);
172 PROC_TYPED_CHILD(Exponent,XMLSIG_NS,false);
173 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
177 class XMLTOOL_DLLLOCAL NamedCurveImpl : public virtual NamedCurve,
178 public AbstractComplexElement,
179 public AbstractDOMCachingXMLObject,
180 public AbstractXMLObjectMarshaller,
181 public AbstractXMLObjectUnmarshaller
184 virtual ~NamedCurveImpl() {
185 XMLString::release(&m_URI);
188 NamedCurveImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
189 : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_URI(nullptr) {
192 NamedCurveImpl(const NamedCurveImpl& src)
193 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_URI(nullptr) {
194 IMPL_CLONE_ATTRIB(URI);
197 IMPL_XMLOBJECT_CLONE(NamedCurve);
198 IMPL_STRING_ATTRIB(URI);
201 void marshallAttributes(DOMElement* domElement) const {
202 MARSHALL_STRING_ATTRIB(URI,URI,nullptr);
205 void processAttribute(const DOMAttr* attribute) {
206 PROC_STRING_ATTRIB(URI,URI,nullptr);
207 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
211 class XMLTOOL_DLLLOCAL ECKeyValueImpl : public virtual ECKeyValue,
212 public AbstractComplexElement,
213 public AbstractDOMCachingXMLObject,
214 public AbstractXMLObjectMarshaller,
215 public AbstractXMLObjectUnmarshaller
219 m_ECParameters=nullptr;
220 m_NamedCurve=nullptr;
222 m_children.push_back(nullptr);
223 m_children.push_back(nullptr);
224 m_children.push_back(nullptr);
225 m_pos_ECParameters=m_children.begin();
226 m_pos_NamedCurve=m_pos_ECParameters;
228 m_pos_PublicKey=m_pos_NamedCurve;
233 virtual ~ECKeyValueImpl() {
234 XMLString::release(&m_Id);
237 ECKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
238 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
242 ECKeyValueImpl(const ECKeyValueImpl& src)
243 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
245 IMPL_CLONE_ATTRIB(Id);
246 IMPL_CLONE_XMLOBJECT_CHILD(ECParameters);
247 IMPL_CLONE_TYPED_CHILD(NamedCurve);
248 IMPL_CLONE_TYPED_CHILD(PublicKey);
251 IMPL_XMLOBJECT_CLONE(ECKeyValue);
252 IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
253 IMPL_XMLOBJECT_CHILD(ECParameters);
254 IMPL_TYPED_CHILD(NamedCurve);
255 IMPL_TYPED_CHILD(PublicKey);
258 void marshallAttributes(DOMElement* domElement) const {
259 MARSHALL_ID_ATTRIB(Id,ID,nullptr);
262 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
263 PROC_TYPED_CHILD(NamedCurve,XMLSIG11_NS,false);
264 PROC_TYPED_CHILD(PublicKey,XMLSIG11_NS,false);
266 // Not really "unknown", but currently unwrapped.
267 static const XMLCh _ECParameters[] = UNICODE_LITERAL_12(E,C,P,a,r,a,m,e,t,e,r,s);
268 if (XMLString::equals(root->getLocalName(), _ECParameters) && XMLString::equals(root->getNamespaceURI(), XMLSIG11_NS)) {
269 setECParameters(childXMLObject);
273 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
276 void processAttribute(const DOMAttr* attribute) {
277 PROC_ID_ATTRIB(Id,ID,nullptr);
278 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
282 class XMLTOOL_DLLLOCAL KeyValueImpl : public virtual KeyValue,
283 public AbstractComplexElement,
284 public AbstractDOMCachingXMLObject,
285 public AbstractXMLObjectMarshaller,
286 public AbstractXMLObjectUnmarshaller
289 m_DSAKeyValue=nullptr;
290 m_RSAKeyValue=nullptr;
291 m_ECKeyValue=nullptr;
292 m_UnknownXMLObject=nullptr;
293 m_children.push_back(nullptr);
294 m_children.push_back(nullptr);
295 m_children.push_back(nullptr);
296 m_children.push_back(nullptr);
297 m_pos_DSAKeyValue=m_children.begin();
298 m_pos_RSAKeyValue=m_pos_DSAKeyValue;
300 m_pos_ECKeyValue=m_pos_RSAKeyValue;
302 m_pos_UnknownXMLObject=m_pos_ECKeyValue;
303 ++m_pos_UnknownXMLObject;
307 virtual ~KeyValueImpl() {}
309 KeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
310 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
314 KeyValueImpl(const KeyValueImpl& src)
315 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
317 IMPL_CLONE_TYPED_CHILD(DSAKeyValue);
318 IMPL_CLONE_TYPED_CHILD(RSAKeyValue);
319 IMPL_CLONE_TYPED_CHILD(ECKeyValue);
320 IMPL_CLONE_XMLOBJECT_CHILD(UnknownXMLObject);
323 IMPL_XMLOBJECT_CLONE(KeyValue);
324 IMPL_TYPED_CHILD(DSAKeyValue);
325 IMPL_TYPED_CHILD(RSAKeyValue);
326 IMPL_TYPED_CHILD(ECKeyValue);
327 IMPL_XMLOBJECT_CHILD(UnknownXMLObject);
330 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
331 PROC_TYPED_CHILD(DSAKeyValue,XMLSIG_NS,false);
332 PROC_TYPED_CHILD(RSAKeyValue,XMLSIG_NS,false);
333 PROC_TYPED_CHILD(ECKeyValue,XMLSIG11_NS,false);
336 const XMLCh* nsURI=root->getNamespaceURI();
337 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
338 setUnknownXMLObject(childXMLObject);
342 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
346 class XMLTOOL_DLLLOCAL DEREncodedKeyValueImpl : public virtual DEREncodedKeyValue,
347 public AbstractSimpleElement,
348 public AbstractDOMCachingXMLObject,
349 public AbstractXMLObjectMarshaller,
350 public AbstractXMLObjectUnmarshaller
353 virtual ~DEREncodedKeyValueImpl() {
354 XMLString::release(&m_Id);
357 DEREncodedKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
358 : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Id(nullptr) {
361 DEREncodedKeyValueImpl(const DEREncodedKeyValueImpl& src)
362 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src), m_Id(nullptr) {
363 IMPL_CLONE_ATTRIB(Id);
366 IMPL_XMLOBJECT_CLONE(DEREncodedKeyValue);
367 IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
370 void marshallAttributes(DOMElement* domElement) const {
371 MARSHALL_ID_ATTRIB(Id,ID,nullptr);
374 void processAttribute(const DOMAttr* attribute) {
375 PROC_ID_ATTRIB(Id,ID,nullptr);
376 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
380 class XMLTOOL_DLLLOCAL TransformImpl : public virtual Transform,
381 public AbstractComplexElement,
382 public AbstractDOMCachingXMLObject,
383 public AbstractXMLObjectMarshaller,
384 public AbstractXMLObjectUnmarshaller
387 virtual ~TransformImpl() {
388 XMLString::release(&m_Algorithm);
391 TransformImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
392 : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Algorithm(nullptr) {
395 TransformImpl(const TransformImpl& src)
396 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Algorithm(nullptr) {
397 IMPL_CLONE_ATTRIB(Algorithm);
398 for (list<XMLObject*>::const_iterator i = src.m_children.begin(); i != src.m_children.end(); ++i) {
399 XPath* x=dynamic_cast<XPath*>(*i);
401 getXPaths().push_back(x->cloneXPath());
406 getUnknownXMLObjects().push_back((*i)->clone());
411 IMPL_XMLOBJECT_CLONE(Transform);
412 IMPL_STRING_ATTRIB(Algorithm);
413 IMPL_TYPED_CHILDREN(XPath,m_children.end());
414 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
417 void marshallAttributes(DOMElement* domElement) const {
418 MARSHALL_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
421 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
422 PROC_TYPED_CHILDREN(XPath,XMLSIG_NS,false);
425 const XMLCh* nsURI=root->getNamespaceURI();
426 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
427 getUnknownXMLObjects().push_back(childXMLObject);
431 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
434 void processAttribute(const DOMAttr* attribute) {
435 PROC_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
436 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
440 class XMLTOOL_DLLLOCAL TransformsImpl : public virtual Transforms,
441 public AbstractComplexElement,
442 public AbstractDOMCachingXMLObject,
443 public AbstractXMLObjectMarshaller,
444 public AbstractXMLObjectUnmarshaller
447 virtual ~TransformsImpl() {}
449 TransformsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
450 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
453 TransformsImpl(const TransformsImpl& src)
454 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
455 IMPL_CLONE_TYPED_CHILDREN(Transform);
458 IMPL_XMLOBJECT_CLONE(Transforms);
459 IMPL_TYPED_CHILDREN(Transform,m_children.end());
462 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
463 PROC_TYPED_CHILDREN(Transform,XMLSIG_NS,false);
464 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
468 class XMLTOOL_DLLLOCAL RetrievalMethodImpl : public virtual RetrievalMethod,
469 public AbstractComplexElement,
470 public AbstractDOMCachingXMLObject,
471 public AbstractXMLObjectMarshaller,
472 public AbstractXMLObjectUnmarshaller
475 m_URI=m_Type=nullptr;
476 m_Transforms=nullptr;
477 m_children.push_back(nullptr);
478 m_pos_Transforms=m_children.begin();
482 virtual ~RetrievalMethodImpl() {
483 XMLString::release(&m_URI);
484 XMLString::release(&m_Type);
487 RetrievalMethodImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
488 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
492 RetrievalMethodImpl(const RetrievalMethodImpl& src)
493 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
495 IMPL_CLONE_ATTRIB(URI);
496 IMPL_CLONE_ATTRIB(Type);
497 IMPL_CLONE_TYPED_CHILD(Transforms);
500 IMPL_XMLOBJECT_CLONE(RetrievalMethod);
501 IMPL_STRING_ATTRIB(URI);
502 IMPL_STRING_ATTRIB(Type);
503 IMPL_TYPED_CHILD(Transforms);
506 void marshallAttributes(DOMElement* domElement) const {
507 MARSHALL_STRING_ATTRIB(URI,URI,nullptr);
508 MARSHALL_STRING_ATTRIB(Type,TYPE,nullptr);
511 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
512 PROC_TYPED_CHILD(Transforms,XMLSIG_NS,false);
513 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
516 void processAttribute(const DOMAttr* attribute) {
517 PROC_STRING_ATTRIB(URI,URI,nullptr);
518 PROC_STRING_ATTRIB(Type,TYPE,nullptr);
519 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
523 class XMLTOOL_DLLLOCAL X509IssuerSerialImpl : public virtual X509IssuerSerial,
524 public AbstractComplexElement,
525 public AbstractDOMCachingXMLObject,
526 public AbstractXMLObjectMarshaller,
527 public AbstractXMLObjectUnmarshaller
530 m_X509IssuerName=nullptr;
531 m_X509SerialNumber=nullptr;
532 m_children.push_back(nullptr);
533 m_children.push_back(nullptr);
534 m_pos_X509IssuerName=m_children.begin();
535 m_pos_X509SerialNumber=m_pos_X509IssuerName;
536 ++m_pos_X509SerialNumber;
540 virtual ~X509IssuerSerialImpl() {}
542 X509IssuerSerialImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
543 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
547 X509IssuerSerialImpl(const X509IssuerSerialImpl& src)
548 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
550 IMPL_CLONE_TYPED_CHILD(X509IssuerName);
551 IMPL_CLONE_TYPED_CHILD(X509SerialNumber);
554 IMPL_XMLOBJECT_CLONE(X509IssuerSerial);
555 IMPL_TYPED_CHILD(X509IssuerName);
556 IMPL_TYPED_CHILD(X509SerialNumber);
559 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
560 PROC_TYPED_CHILD(X509IssuerName,XMLSIG_NS,false);
561 PROC_TYPED_CHILD(X509SerialNumber,XMLSIG_NS,false);
562 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
566 class XMLTOOL_DLLLOCAL X509DigestImpl : public virtual X509Digest,
567 public AbstractComplexElement,
568 public AbstractDOMCachingXMLObject,
569 public AbstractXMLObjectMarshaller,
570 public AbstractXMLObjectUnmarshaller
573 virtual ~X509DigestImpl() {
574 XMLString::release(&m_Algorithm);
577 X509DigestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
578 : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Algorithm(nullptr) {
581 X509DigestImpl(const X509DigestImpl& src)
582 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Algorithm(nullptr) {
583 IMPL_CLONE_ATTRIB(Algorithm);
586 IMPL_XMLOBJECT_CLONE(X509Digest);
587 IMPL_STRING_ATTRIB(Algorithm);
590 void marshallAttributes(DOMElement* domElement) const {
591 MARSHALL_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
594 void processAttribute(const DOMAttr* attribute) {
595 PROC_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
596 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
601 class XMLTOOL_DLLLOCAL X509DataImpl : public virtual X509Data,
602 public AbstractComplexElement,
603 public AbstractDOMCachingXMLObject,
604 public AbstractXMLObjectMarshaller,
605 public AbstractXMLObjectUnmarshaller
608 virtual ~X509DataImpl() {}
610 X509DataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
611 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
614 X509DataImpl(const X509DataImpl& src)
615 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
616 for (list<XMLObject*>::const_iterator i = src.m_children.begin(); i != src.m_children.end(); ++i) {
617 X509Certificate* xcert=dynamic_cast<X509Certificate*>(*i);
619 getX509Certificates().push_back(xcert->cloneX509Certificate());
623 X509CRL* xcrl=dynamic_cast<X509CRL*>(*i);
625 getX509CRLs().push_back(xcrl->cloneX509CRL());
629 X509SubjectName* xsn=dynamic_cast<X509SubjectName*>(*i);
631 getX509SubjectNames().push_back(xsn->cloneX509SubjectName());
635 X509IssuerSerial* xis=dynamic_cast<X509IssuerSerial*>(*i);
637 getX509IssuerSerials().push_back(xis->cloneX509IssuerSerial());
641 X509SKI* xski=dynamic_cast<X509SKI*>(*i);
643 getX509SKIs().push_back(xski->cloneX509SKI());
647 X509Digest* xdig=dynamic_cast<X509Digest*>(*i);
649 getX509Digests().push_back(xdig->cloneX509Digest());
653 OCSPResponse* ocsp=dynamic_cast<OCSPResponse*>(*i);
655 getOCSPResponses().push_back(ocsp->cloneOCSPResponse());
660 getUnknownXMLObjects().push_back((*i)->clone());
665 IMPL_XMLOBJECT_CLONE(X509Data);
666 IMPL_TYPED_CHILDREN(X509IssuerSerial,m_children.end());
667 IMPL_TYPED_CHILDREN(X509SKI,m_children.end());
668 IMPL_TYPED_CHILDREN(X509SubjectName,m_children.end());
669 IMPL_TYPED_CHILDREN(X509Certificate,m_children.end());
670 IMPL_TYPED_CHILDREN(X509CRL,m_children.end());
671 IMPL_TYPED_CHILDREN(X509Digest,m_children.end());
672 IMPL_TYPED_CHILDREN(OCSPResponse,m_children.end());
673 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
676 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
677 PROC_TYPED_CHILDREN(X509IssuerSerial,XMLSIG_NS,false);
678 PROC_TYPED_CHILDREN(X509SKI,XMLSIG_NS,false);
679 PROC_TYPED_CHILDREN(X509SubjectName,XMLSIG_NS,false);
680 PROC_TYPED_CHILDREN(X509Certificate,XMLSIG_NS,false);
681 PROC_TYPED_CHILDREN(X509CRL,XMLSIG_NS,false);
682 PROC_TYPED_CHILDREN(X509Digest,XMLSIG11_NS,false);
683 PROC_TYPED_CHILDREN(OCSPResponse,XMLSIG11_NS,false);
686 const XMLCh* nsURI=root->getNamespaceURI();
687 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
688 getUnknownXMLObjects().push_back(childXMLObject);
692 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
696 class XMLTOOL_DLLLOCAL SPKIDataImpl : public virtual SPKIData,
697 public AbstractComplexElement,
698 public AbstractDOMCachingXMLObject,
699 public AbstractXMLObjectMarshaller,
700 public AbstractXMLObjectUnmarshaller
702 vector< pair<SPKISexp*,XMLObject*> > m_SPKISexps;
705 virtual ~SPKIDataImpl() {}
707 SPKIDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
708 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
711 SPKIDataImpl(const SPKIDataImpl& src)
712 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
713 for (vector< pair<SPKISexp*,XMLObject*> >::const_iterator i = src.m_SPKISexps.begin(); i != src.m_SPKISexps.end(); ++i) {
715 getSPKISexps().push_back(make_pair(i->first->cloneSPKISexp(),(i->second ? i->second->clone() : (XMLObject*)nullptr)));
720 IMPL_XMLOBJECT_CLONE(SPKIData);
723 VectorOfPairs(SPKISexp,XMLObject) getSPKISexps() {
724 return VectorOfPairs(SPKISexp,XMLObject)(this, m_SPKISexps, &m_children, m_children.end());
727 const vector< pair<SPKISexp*,XMLObject*> >& getSPKISexps() const {
732 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
733 if (XMLHelper::isNodeNamed(root,XMLSIG_NS,SPKISexp::LOCAL_NAME)) {
734 SPKISexp* typesafe=dynamic_cast<SPKISexp*>(childXMLObject);
736 getSPKISexps().push_back(make_pair(typesafe,(XMLObject*)nullptr));
741 // Unknown child (has to be paired with the last SPKISexp processed.
742 const XMLCh* nsURI=root->getNamespaceURI();
743 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
744 // Update second half of pair in vector, and in master list.
745 if (!m_SPKISexps.empty() && m_SPKISexps.back().second==nullptr) {
746 m_SPKISexps.back().second=childXMLObject;
747 m_children.back()=childXMLObject;
751 throw UnmarshallingException("Extension element must follow ds:SPKISexp element.");
754 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
758 class XMLTOOL_DLLLOCAL PGPDataImpl : public virtual PGPData,
759 public AbstractComplexElement,
760 public AbstractDOMCachingXMLObject,
761 public AbstractXMLObjectMarshaller,
762 public AbstractXMLObjectUnmarshaller
766 m_PGPKeyPacket=nullptr;
767 m_children.push_back(nullptr);
768 m_children.push_back(nullptr);
769 m_pos_PGPKeyID=m_children.begin();
770 m_pos_PGPKeyPacket=m_pos_PGPKeyID;
771 ++m_pos_PGPKeyPacket;
775 virtual ~PGPDataImpl() {}
777 PGPDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
778 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
782 PGPDataImpl(const PGPDataImpl& src)
783 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
785 IMPL_CLONE_TYPED_CHILD(PGPKeyID);
786 IMPL_CLONE_TYPED_CHILD(PGPKeyPacket);
787 IMPL_CLONE_XMLOBJECT_CHILDREN();
790 IMPL_XMLOBJECT_CLONE(PGPData);
791 IMPL_TYPED_CHILD(PGPKeyID);
792 IMPL_TYPED_CHILD(PGPKeyPacket);
793 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
796 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
797 PROC_TYPED_CHILD(PGPKeyID,XMLSIG_NS,false);
798 PROC_TYPED_CHILD(PGPKeyPacket,XMLSIG_NS,false);
801 const XMLCh* nsURI=root->getNamespaceURI();
802 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
803 getUnknownXMLObjects().push_back(childXMLObject);
807 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
811 class XMLTOOL_DLLLOCAL KeyInfoReferenceImpl : public virtual KeyInfoReference,
812 public AbstractComplexElement,
813 public AbstractDOMCachingXMLObject,
814 public AbstractXMLObjectMarshaller,
815 public AbstractXMLObjectUnmarshaller
822 virtual ~KeyInfoReferenceImpl() {
823 XMLString::release(&m_Id);
824 XMLString::release(&m_URI);
827 KeyInfoReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
828 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
832 KeyInfoReferenceImpl(const KeyInfoReferenceImpl& src)
833 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
835 IMPL_CLONE_ATTRIB(Id);
836 IMPL_CLONE_ATTRIB(URI);
839 IMPL_XMLOBJECT_CLONE(KeyInfoReference);
840 IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
841 IMPL_STRING_ATTRIB(URI);
844 void marshallAttributes(DOMElement* domElement) const {
845 MARSHALL_ID_ATTRIB(Id,ID,nullptr);
846 MARSHALL_STRING_ATTRIB(URI,URI,nullptr);
849 void processAttribute(const DOMAttr* attribute) {
850 PROC_ID_ATTRIB(Id,ID,nullptr);
851 PROC_STRING_ATTRIB(URI,URI,nullptr);
852 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
856 class XMLTOOL_DLLLOCAL KeyInfoImpl : public virtual KeyInfo,
857 public AbstractComplexElement,
858 public AbstractDOMCachingXMLObject,
859 public AbstractXMLObjectMarshaller,
860 public AbstractXMLObjectUnmarshaller
863 virtual ~KeyInfoImpl() {
864 XMLString::release(&m_Id);
867 KeyInfoImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
868 : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Id(nullptr) {
871 KeyInfoImpl(const KeyInfoImpl& src)
872 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Id(nullptr) {
873 IMPL_CLONE_ATTRIB(Id);
874 for (list<XMLObject*>::const_iterator i = src.m_children.begin(); i != src.m_children.end(); ++i) {
875 X509Data* xd=dynamic_cast<X509Data*>(*i);
877 getX509Datas().push_back(xd->cloneX509Data());
881 KeyName* kn=dynamic_cast<KeyName*>(*i);
883 getKeyNames().push_back(kn->cloneKeyName());
887 KeyValue* kv=dynamic_cast<KeyValue*>(*i);
889 getKeyValues().push_back(kv->cloneKeyValue());
893 DEREncodedKeyValue* ekv=dynamic_cast<DEREncodedKeyValue*>(*i);
895 getDEREncodedKeyValues().push_back(ekv->cloneDEREncodedKeyValue());
899 RetrievalMethod* rm=dynamic_cast<RetrievalMethod*>(*i);
901 getRetrievalMethods().push_back(rm->cloneRetrievalMethod());
905 MgmtData* md=dynamic_cast<MgmtData*>(*i);
907 getMgmtDatas().push_back(md->cloneMgmtData());
911 SPKIData* sd=dynamic_cast<SPKIData*>(*i);
913 getSPKIDatas().push_back(sd->cloneSPKIData());
917 PGPData* pd=dynamic_cast<PGPData*>(*i);
919 getPGPDatas().push_back(pd->clonePGPData());
923 KeyInfoReference* kref=dynamic_cast<KeyInfoReference*>(*i);
925 getKeyInfoReferences().push_back(kref->cloneKeyInfoReference());
930 getUnknownXMLObjects().push_back((*i)->clone());
935 IMPL_XMLOBJECT_CLONE(KeyInfo);
936 IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
937 IMPL_TYPED_CHILDREN(KeyName,m_children.end());
938 IMPL_TYPED_CHILDREN(KeyValue,m_children.end());
939 IMPL_TYPED_CHILDREN(DEREncodedKeyValue,m_children.end());
940 IMPL_TYPED_CHILDREN(RetrievalMethod,m_children.end());
941 IMPL_TYPED_CHILDREN(X509Data,m_children.end());
942 IMPL_TYPED_CHILDREN(MgmtData,m_children.end());
943 IMPL_TYPED_CHILDREN(SPKIData,m_children.end());
944 IMPL_TYPED_CHILDREN(PGPData,m_children.end());
945 IMPL_TYPED_CHILDREN(KeyInfoReference,m_children.end());
946 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
949 void marshallAttributes(DOMElement* domElement) const {
950 MARSHALL_ID_ATTRIB(Id,ID,nullptr);
953 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
954 PROC_TYPED_CHILDREN(X509Data,XMLSIG_NS,false);
955 PROC_TYPED_CHILDREN(KeyName,XMLSIG_NS,false);
956 PROC_TYPED_CHILDREN(KeyValue,XMLSIG_NS,false);
957 PROC_TYPED_CHILDREN(DEREncodedKeyValue,XMLSIG11_NS,false);
958 PROC_TYPED_CHILDREN(RetrievalMethod,XMLSIG_NS,false);
959 PROC_TYPED_CHILDREN(MgmtData,XMLSIG_NS,false);
960 PROC_TYPED_CHILDREN(SPKIData,XMLSIG_NS,false);
961 PROC_TYPED_CHILDREN(PGPData,XMLSIG_NS,false);
962 PROC_TYPED_CHILDREN(KeyInfoReference,XMLSIG11_NS,false);
965 const XMLCh* nsURI=root->getNamespaceURI();
966 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
967 getUnknownXMLObjects().push_back(childXMLObject);
971 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
974 void processAttribute(const DOMAttr* attribute) {
975 PROC_ID_ATTRIB(Id,ID,nullptr);
976 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
980 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,KeyName);
981 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,MgmtData);
982 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Modulus);
983 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Exponent);
984 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Seed);
985 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PgenCounter);
986 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,P);
987 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Q);
988 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,G);
989 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Y);
990 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,J);
991 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,XPath);
992 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509IssuerName);
993 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SerialNumber);
994 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SKI);
995 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SubjectName);
996 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509Certificate);
997 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509CRL);
998 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,SPKISexp);
999 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PGPKeyID);
1000 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PGPKeyPacket);
1002 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,OCSPResponse);
1003 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PublicKey);
1006 #if defined (_MSC_VER)
1007 #pragma warning( pop )
1010 // Builder Implementations
1012 IMPL_XMLOBJECTBUILDER(X509IssuerSerial);
1013 IMPL_XMLOBJECTBUILDER(X509IssuerName);
1014 IMPL_XMLOBJECTBUILDER(X509SerialNumber);
1015 IMPL_XMLOBJECTBUILDER(X509SKI);
1016 IMPL_XMLOBJECTBUILDER(X509SubjectName);
1017 IMPL_XMLOBJECTBUILDER(X509Certificate);
1018 IMPL_XMLOBJECTBUILDER(X509CRL);
1019 IMPL_XMLOBJECTBUILDER(X509Data);
1020 IMPL_XMLOBJECTBUILDER(XPath);
1021 IMPL_XMLOBJECTBUILDER(Transform);
1022 IMPL_XMLOBJECTBUILDER(Transforms);
1023 IMPL_XMLOBJECTBUILDER(RetrievalMethod);
1024 IMPL_XMLOBJECTBUILDER(KeyName);
1025 IMPL_XMLOBJECTBUILDER(MgmtData);
1026 IMPL_XMLOBJECTBUILDER(Modulus);
1027 IMPL_XMLOBJECTBUILDER(Exponent);
1028 IMPL_XMLOBJECTBUILDER(Seed);
1029 IMPL_XMLOBJECTBUILDER(PgenCounter);
1030 IMPL_XMLOBJECTBUILDER(P);
1031 IMPL_XMLOBJECTBUILDER(Q);
1032 IMPL_XMLOBJECTBUILDER(G);
1033 IMPL_XMLOBJECTBUILDER(Y);
1034 IMPL_XMLOBJECTBUILDER(J);
1035 IMPL_XMLOBJECTBUILDER(DSAKeyValue);
1036 IMPL_XMLOBJECTBUILDER(RSAKeyValue);
1037 IMPL_XMLOBJECTBUILDER(KeyValue);
1038 IMPL_XMLOBJECTBUILDER(KeyInfo);
1039 IMPL_XMLOBJECTBUILDER(SPKISexp);
1040 IMPL_XMLOBJECTBUILDER(SPKIData);
1041 IMPL_XMLOBJECTBUILDER(PGPKeyID);
1042 IMPL_XMLOBJECTBUILDER(PGPKeyPacket);
1043 IMPL_XMLOBJECTBUILDER(PGPData);
1045 IMPL_XMLOBJECTBUILDER(DEREncodedKeyValue);
1046 IMPL_XMLOBJECTBUILDER(ECKeyValue);
1047 IMPL_XMLOBJECTBUILDER(KeyInfoReference);
1048 IMPL_XMLOBJECTBUILDER(NamedCurve);
1049 IMPL_XMLOBJECTBUILDER(OCSPResponse);
1050 IMPL_XMLOBJECTBUILDER(PublicKey);
1051 IMPL_XMLOBJECTBUILDER(X509Digest);
1055 const XMLCh KeyInfo::LOCAL_NAME[] = UNICODE_LITERAL_7(K,e,y,I,n,f,o);
1056 const XMLCh KeyInfo::TYPE_NAME[] = UNICODE_LITERAL_11(K,e,y,I,n,f,o,T,y,p,e);
1057 const XMLCh KeyInfo::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1058 const XMLCh KeyValue::LOCAL_NAME[] = UNICODE_LITERAL_8(K,e,y,V,a,l,u,e);
1059 const XMLCh KeyValue::TYPE_NAME[] = UNICODE_LITERAL_12(K,e,y,V,a,l,u,e,T,y,p,e);
1060 const XMLCh DSAKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_11(D,S,A,K,e,y,V,a,l,u,e);
1061 const XMLCh DSAKeyValue::TYPE_NAME[] = UNICODE_LITERAL_15(D,S,A,K,e,y,V,a,l,u,e,T,y,p,e);
1062 const XMLCh RSAKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_11(R,S,A,K,e,y,V,a,l,u,e);
1063 const XMLCh RSAKeyValue::TYPE_NAME[] = UNICODE_LITERAL_15(R,S,A,K,e,y,V,a,l,u,e,T,y,p,e);
1064 const XMLCh MgmtData::LOCAL_NAME[] = UNICODE_LITERAL_8(M,g,m,t,D,a,t,a);
1065 const XMLCh KeyName::LOCAL_NAME[] = UNICODE_LITERAL_7(K,e,y,N,a,m,e);
1066 const XMLCh Modulus::LOCAL_NAME[] = UNICODE_LITERAL_7(M,o,d,u,l,u,s);
1067 const XMLCh Exponent::LOCAL_NAME[] = UNICODE_LITERAL_8(E,x,p,o,n,e,n,t);
1068 const XMLCh Seed::LOCAL_NAME[] = UNICODE_LITERAL_4(S,e,e,d);
1069 const XMLCh PgenCounter::LOCAL_NAME[] = UNICODE_LITERAL_11(P,g,e,n,C,o,u,n,t,e,r);
1070 const XMLCh P::LOCAL_NAME[] = UNICODE_LITERAL_1(P);
1071 const XMLCh Q::LOCAL_NAME[] = UNICODE_LITERAL_1(Q);
1072 const XMLCh G::LOCAL_NAME[] = UNICODE_LITERAL_1(G);
1073 const XMLCh Y::LOCAL_NAME[] = UNICODE_LITERAL_1(Y);
1074 const XMLCh J::LOCAL_NAME[] = UNICODE_LITERAL_1(J);
1075 const XMLCh XPath::LOCAL_NAME[] = UNICODE_LITERAL_5(X,P,a,t,h);
1076 const XMLCh Transform::LOCAL_NAME[] = UNICODE_LITERAL_9(T,r,a,n,s,f,o,r,m);
1077 const XMLCh Transform::TYPE_NAME[] = UNICODE_LITERAL_13(T,r,a,n,s,f,o,r,m,T,y,p,e);
1078 const XMLCh Transform::ALGORITHM_ATTRIB_NAME[] = UNICODE_LITERAL_9(A,l,g,o,r,i,t,h,m);
1079 const XMLCh Transforms::LOCAL_NAME[] = UNICODE_LITERAL_10(T,r,a,n,s,f,o,r,m,s);
1080 const XMLCh Transforms::TYPE_NAME[] = UNICODE_LITERAL_14(T,r,a,n,s,f,o,r,m,s,T,y,p,e);
1081 const XMLCh RetrievalMethod::LOCAL_NAME[] = UNICODE_LITERAL_15(R,e,t,r,i,e,v,a,l,M,e,t,h,o,d);
1082 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);
1083 const XMLCh RetrievalMethod::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
1084 const XMLCh RetrievalMethod::TYPE_ATTRIB_NAME[] = UNICODE_LITERAL_4(T,y,p,e);
1085 const XMLCh SPKISexp::LOCAL_NAME[] = UNICODE_LITERAL_8(S,P,K,I,S,e,x,p);
1086 const XMLCh SPKIData::LOCAL_NAME[] = UNICODE_LITERAL_8(S,P,K,I,D,a,t,a);
1087 const XMLCh SPKIData::TYPE_NAME[] = UNICODE_LITERAL_12(S,P,K,I,D,a,t,a,T,y,p,e);
1088 const XMLCh PGPKeyID::LOCAL_NAME[] = UNICODE_LITERAL_8(P,G,P,K,e,y,I,D);
1089 const XMLCh PGPKeyPacket::LOCAL_NAME[] = UNICODE_LITERAL_12(P,G,P,K,e,y,P,a,c,k,e,t);
1090 const XMLCh PGPData::LOCAL_NAME[] = UNICODE_LITERAL_7(P,G,P,D,a,t,a);
1091 const XMLCh PGPData::TYPE_NAME[] = UNICODE_LITERAL_11(P,G,P,D,a,t,a,T,y,p,e);
1093 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);
1094 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);
1095 const XMLCh DEREncodedKeyValue::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1096 const XMLCh ECKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_10(E,C,K,e,y,V,a,l,u,e);
1097 const XMLCh ECKeyValue::TYPE_NAME[] = UNICODE_LITERAL_14(E,C,K,e,y,V,a,l,u,e,T,y,p,e);
1098 const XMLCh ECKeyValue::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1099 const XMLCh KeyInfoReference::LOCAL_NAME[] = UNICODE_LITERAL_16(K,e,y,I,n,f,o,R,e,f,e,r,e,n,c,e);
1100 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);
1101 const XMLCh KeyInfoReference::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1102 const XMLCh KeyInfoReference::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
1103 const XMLCh NamedCurve::LOCAL_NAME[] = UNICODE_LITERAL_10(N,a,m,e,d,C,u,r,v,e);
1104 const XMLCh NamedCurve::TYPE_NAME[] = UNICODE_LITERAL_14(N,a,m,e,d,C,u,r,v,e,T,y,p,e);
1105 const XMLCh NamedCurve::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
1106 const XMLCh OCSPResponse::LOCAL_NAME[] = UNICODE_LITERAL_12(O,C,S,P,R,e,s,p,o,n,s,e);
1107 const XMLCh PublicKey::LOCAL_NAME[] = UNICODE_LITERAL_9(P,u,b,l,i,c,K,e,y);
1108 const XMLCh X509Digest::ALGORITHM_ATTRIB_NAME[] = UNICODE_LITERAL_9(A,l,g,o,r,i,t,h,m);
1110 #define XCH(ch) chLatin_##ch
1111 #define XNUM(d) chDigit_##d
1113 const XMLCh X509Data::LOCAL_NAME[] = {
1114 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(D), XCH(a), XCH(t), XCH(a), chNull
1116 const XMLCh X509Data::TYPE_NAME[] = {
1117 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
1119 const XMLCh X509IssuerSerial::LOCAL_NAME[] = {
1120 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
1121 XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l), chNull
1123 const XMLCh X509IssuerSerial::TYPE_NAME[] = {
1124 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
1125 XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l), XCH(T), XCH(y), XCH(p), XCH(e), chNull
1127 const XMLCh X509IssuerName::LOCAL_NAME[] = {
1128 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
1129 XCH(N), XCH(a), XCH(m), XCH(e), chNull
1131 const XMLCh X509SerialNumber::LOCAL_NAME[] = {
1132 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l),
1133 XCH(N), XCH(u), XCH(m), XCH(b), XCH(e), XCH(r), chNull
1135 const XMLCh X509SKI::LOCAL_NAME[] = { XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(K), XCH(I), chNull };
1136 const XMLCh X509SubjectName::LOCAL_NAME[] = {
1137 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(u), XCH(b), XCH(j), XCH(e), XCH(c), XCH(t),
1138 XCH(N), XCH(a), XCH(m), XCH(e), chNull
1140 const XMLCh X509Certificate::LOCAL_NAME[] = {
1141 XCH(X), XNUM(5), XNUM(0), XNUM(9),
1142 XCH(C), XCH(e), XCH(r), XCH(t), XCH(i), XCH(f), XCH(i), XCH(c), XCH(a), XCH(t), XCH(e), chNull
1144 const XMLCh X509CRL::LOCAL_NAME[] = { XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(C), XCH(R), XCH(L), chNull };
1145 const XMLCh X509Digest::LOCAL_NAME[] = {
1146 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(D), XCH(i), XCH(g), XCH(e), XCH(s), XCH(t), chNull
1148 const XMLCh X509Digest::TYPE_NAME[] = {
1149 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
1152 const XMLCh RetrievalMethod::TYPE_DSAKEYVALUE[] = {
1153 chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
1154 chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
1155 chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
1156 chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
1157 chLatin_D, chLatin_S, chLatin_A, chLatin_K, chLatin_e, chLatin_y, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
1160 const XMLCh RetrievalMethod::TYPE_RSAKEYVALUE[] = {
1161 chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
1162 chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
1163 chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
1164 chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
1165 chLatin_R, chLatin_S, chLatin_A, chLatin_K, chLatin_e, chLatin_y, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
1168 const XMLCh RetrievalMethod::TYPE_X509DATA[] = {
1169 chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
1170 chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
1171 chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
1172 chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
1173 chLatin_X, chDigit_5, chDigit_0, chDigit_9, chLatin_D, chLatin_a, chLatin_t, chLatin_a, chNull