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 IMPL_CLONE_CHILDBAG_BEGIN;
399 IMPL_CLONE_TYPED_CHILD_IN_BAG(XPath);
400 IMPL_CLONE_XMLOBJECT_CHILD_IN_BAG(UnknownXMLObject);
401 IMPL_CLONE_CHILDBAG_END;
404 IMPL_XMLOBJECT_CLONE(Transform);
405 IMPL_STRING_ATTRIB(Algorithm);
406 IMPL_TYPED_CHILDREN(XPath,m_children.end());
407 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
410 void marshallAttributes(DOMElement* domElement) const {
411 MARSHALL_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
414 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
415 PROC_TYPED_CHILDREN(XPath,XMLSIG_NS,false);
418 const XMLCh* nsURI=root->getNamespaceURI();
419 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
420 getUnknownXMLObjects().push_back(childXMLObject);
424 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
427 void processAttribute(const DOMAttr* attribute) {
428 PROC_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
429 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
433 class XMLTOOL_DLLLOCAL TransformsImpl : public virtual Transforms,
434 public AbstractComplexElement,
435 public AbstractDOMCachingXMLObject,
436 public AbstractXMLObjectMarshaller,
437 public AbstractXMLObjectUnmarshaller
440 virtual ~TransformsImpl() {}
442 TransformsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
443 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
446 TransformsImpl(const TransformsImpl& src)
447 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
448 IMPL_CLONE_TYPED_CHILDREN(Transform);
451 IMPL_XMLOBJECT_CLONE(Transforms);
452 IMPL_TYPED_CHILDREN(Transform,m_children.end());
455 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
456 PROC_TYPED_CHILDREN(Transform,XMLSIG_NS,false);
457 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
461 class XMLTOOL_DLLLOCAL RetrievalMethodImpl : public virtual RetrievalMethod,
462 public AbstractComplexElement,
463 public AbstractDOMCachingXMLObject,
464 public AbstractXMLObjectMarshaller,
465 public AbstractXMLObjectUnmarshaller
468 m_URI=m_Type=nullptr;
469 m_Transforms=nullptr;
470 m_children.push_back(nullptr);
471 m_pos_Transforms=m_children.begin();
475 virtual ~RetrievalMethodImpl() {
476 XMLString::release(&m_URI);
477 XMLString::release(&m_Type);
480 RetrievalMethodImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
481 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
485 RetrievalMethodImpl(const RetrievalMethodImpl& src)
486 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
488 IMPL_CLONE_ATTRIB(URI);
489 IMPL_CLONE_ATTRIB(Type);
490 IMPL_CLONE_TYPED_CHILD(Transforms);
493 IMPL_XMLOBJECT_CLONE(RetrievalMethod);
494 IMPL_STRING_ATTRIB(URI);
495 IMPL_STRING_ATTRIB(Type);
496 IMPL_TYPED_CHILD(Transforms);
499 void marshallAttributes(DOMElement* domElement) const {
500 MARSHALL_STRING_ATTRIB(URI,URI,nullptr);
501 MARSHALL_STRING_ATTRIB(Type,TYPE,nullptr);
504 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
505 PROC_TYPED_CHILD(Transforms,XMLSIG_NS,false);
506 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
509 void processAttribute(const DOMAttr* attribute) {
510 PROC_STRING_ATTRIB(URI,URI,nullptr);
511 PROC_STRING_ATTRIB(Type,TYPE,nullptr);
512 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
516 class XMLTOOL_DLLLOCAL X509IssuerSerialImpl : public virtual X509IssuerSerial,
517 public AbstractComplexElement,
518 public AbstractDOMCachingXMLObject,
519 public AbstractXMLObjectMarshaller,
520 public AbstractXMLObjectUnmarshaller
523 m_X509IssuerName=nullptr;
524 m_X509SerialNumber=nullptr;
525 m_children.push_back(nullptr);
526 m_children.push_back(nullptr);
527 m_pos_X509IssuerName=m_children.begin();
528 m_pos_X509SerialNumber=m_pos_X509IssuerName;
529 ++m_pos_X509SerialNumber;
533 virtual ~X509IssuerSerialImpl() {}
535 X509IssuerSerialImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
536 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
540 X509IssuerSerialImpl(const X509IssuerSerialImpl& src)
541 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
543 IMPL_CLONE_TYPED_CHILD(X509IssuerName);
544 IMPL_CLONE_TYPED_CHILD(X509SerialNumber);
547 IMPL_XMLOBJECT_CLONE(X509IssuerSerial);
548 IMPL_TYPED_CHILD(X509IssuerName);
549 IMPL_TYPED_CHILD(X509SerialNumber);
552 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
553 PROC_TYPED_CHILD(X509IssuerName,XMLSIG_NS,false);
554 PROC_TYPED_CHILD(X509SerialNumber,XMLSIG_NS,false);
555 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
559 class XMLTOOL_DLLLOCAL X509DigestImpl : public virtual X509Digest,
560 public AbstractComplexElement,
561 public AbstractDOMCachingXMLObject,
562 public AbstractXMLObjectMarshaller,
563 public AbstractXMLObjectUnmarshaller
566 virtual ~X509DigestImpl() {
567 XMLString::release(&m_Algorithm);
570 X509DigestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
571 : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Algorithm(nullptr) {
574 X509DigestImpl(const X509DigestImpl& src)
575 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Algorithm(nullptr) {
576 IMPL_CLONE_ATTRIB(Algorithm);
579 IMPL_XMLOBJECT_CLONE(X509Digest);
580 IMPL_STRING_ATTRIB(Algorithm);
583 void marshallAttributes(DOMElement* domElement) const {
584 MARSHALL_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
587 void processAttribute(const DOMAttr* attribute) {
588 PROC_STRING_ATTRIB(Algorithm,ALGORITHM,nullptr);
589 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
594 class XMLTOOL_DLLLOCAL X509DataImpl : public virtual X509Data,
595 public AbstractComplexElement,
596 public AbstractDOMCachingXMLObject,
597 public AbstractXMLObjectMarshaller,
598 public AbstractXMLObjectUnmarshaller
601 virtual ~X509DataImpl() {}
603 X509DataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
604 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
607 X509DataImpl(const X509DataImpl& src)
608 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
609 IMPL_CLONE_CHILDBAG_BEGIN;
610 IMPL_CLONE_TYPED_CHILD_IN_BAG(X509Certificate);
611 IMPL_CLONE_TYPED_CHILD_IN_BAG(X509CRL);
612 IMPL_CLONE_TYPED_CHILD_IN_BAG(X509SubjectName);
613 IMPL_CLONE_TYPED_CHILD_IN_BAG(X509IssuerSerial);
614 IMPL_CLONE_TYPED_CHILD_IN_BAG(X509SKI);
615 IMPL_CLONE_TYPED_CHILD_IN_BAG(X509Digest);
616 IMPL_CLONE_TYPED_CHILD_IN_BAG(OCSPResponse);
617 IMPL_CLONE_XMLOBJECT_CHILD_IN_BAG(UnknownXMLObject);
618 IMPL_CLONE_CHILDBAG_END;
621 IMPL_XMLOBJECT_CLONE(X509Data);
622 IMPL_TYPED_CHILDREN(X509IssuerSerial,m_children.end());
623 IMPL_TYPED_CHILDREN(X509SKI,m_children.end());
624 IMPL_TYPED_CHILDREN(X509SubjectName,m_children.end());
625 IMPL_TYPED_CHILDREN(X509Certificate,m_children.end());
626 IMPL_TYPED_CHILDREN(X509CRL,m_children.end());
627 IMPL_TYPED_CHILDREN(X509Digest,m_children.end());
628 IMPL_TYPED_CHILDREN(OCSPResponse,m_children.end());
629 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
632 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
633 PROC_TYPED_CHILDREN(X509IssuerSerial,XMLSIG_NS,false);
634 PROC_TYPED_CHILDREN(X509SKI,XMLSIG_NS,false);
635 PROC_TYPED_CHILDREN(X509SubjectName,XMLSIG_NS,false);
636 PROC_TYPED_CHILDREN(X509Certificate,XMLSIG_NS,false);
637 PROC_TYPED_CHILDREN(X509CRL,XMLSIG_NS,false);
638 PROC_TYPED_CHILDREN(X509Digest,XMLSIG11_NS,false);
639 PROC_TYPED_CHILDREN(OCSPResponse,XMLSIG11_NS,false);
642 const XMLCh* nsURI=root->getNamespaceURI();
643 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
644 getUnknownXMLObjects().push_back(childXMLObject);
648 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
652 class XMLTOOL_DLLLOCAL SPKIDataImpl : public virtual SPKIData,
653 public AbstractComplexElement,
654 public AbstractDOMCachingXMLObject,
655 public AbstractXMLObjectMarshaller,
656 public AbstractXMLObjectUnmarshaller
658 vector< pair<SPKISexp*,XMLObject*> > m_SPKISexps;
661 virtual ~SPKIDataImpl() {}
663 SPKIDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
664 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
667 SPKIDataImpl(const SPKIDataImpl& src)
668 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
669 for (vector< pair<SPKISexp*,XMLObject*> >::const_iterator i = src.m_SPKISexps.begin(); i != src.m_SPKISexps.end(); ++i) {
671 getSPKISexps().push_back(make_pair(i->first->cloneSPKISexp(),(i->second ? i->second->clone() : (XMLObject*)nullptr)));
676 IMPL_XMLOBJECT_CLONE(SPKIData);
679 VectorOfPairs(SPKISexp,XMLObject) getSPKISexps() {
680 return VectorOfPairs(SPKISexp,XMLObject)(this, m_SPKISexps, &m_children, m_children.end());
683 const vector< pair<SPKISexp*,XMLObject*> >& getSPKISexps() const {
688 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
689 if (XMLHelper::isNodeNamed(root,XMLSIG_NS,SPKISexp::LOCAL_NAME)) {
690 SPKISexp* typesafe=dynamic_cast<SPKISexp*>(childXMLObject);
692 getSPKISexps().push_back(make_pair(typesafe,(XMLObject*)nullptr));
697 // Unknown child (has to be paired with the last SPKISexp processed.
698 const XMLCh* nsURI=root->getNamespaceURI();
699 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
700 // Update second half of pair in vector, and in master list.
701 if (!m_SPKISexps.empty() && m_SPKISexps.back().second==nullptr) {
702 m_SPKISexps.back().second=childXMLObject;
703 m_children.back()=childXMLObject;
707 throw UnmarshallingException("Extension element must follow ds:SPKISexp element.");
710 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
714 class XMLTOOL_DLLLOCAL PGPDataImpl : public virtual PGPData,
715 public AbstractComplexElement,
716 public AbstractDOMCachingXMLObject,
717 public AbstractXMLObjectMarshaller,
718 public AbstractXMLObjectUnmarshaller
722 m_PGPKeyPacket=nullptr;
723 m_children.push_back(nullptr);
724 m_children.push_back(nullptr);
725 m_pos_PGPKeyID=m_children.begin();
726 m_pos_PGPKeyPacket=m_pos_PGPKeyID;
727 ++m_pos_PGPKeyPacket;
731 virtual ~PGPDataImpl() {}
733 PGPDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
734 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
738 PGPDataImpl(const PGPDataImpl& src)
739 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
741 IMPL_CLONE_TYPED_CHILD(PGPKeyID);
742 IMPL_CLONE_TYPED_CHILD(PGPKeyPacket);
743 IMPL_CLONE_XMLOBJECT_CHILDREN(UnknownXMLObject);
746 IMPL_XMLOBJECT_CLONE(PGPData);
747 IMPL_TYPED_CHILD(PGPKeyID);
748 IMPL_TYPED_CHILD(PGPKeyPacket);
749 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
752 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
753 PROC_TYPED_CHILD(PGPKeyID,XMLSIG_NS,false);
754 PROC_TYPED_CHILD(PGPKeyPacket,XMLSIG_NS,false);
757 const XMLCh* nsURI=root->getNamespaceURI();
758 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
759 getUnknownXMLObjects().push_back(childXMLObject);
763 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
767 class XMLTOOL_DLLLOCAL KeyInfoReferenceImpl : public virtual KeyInfoReference,
768 public AbstractComplexElement,
769 public AbstractDOMCachingXMLObject,
770 public AbstractXMLObjectMarshaller,
771 public AbstractXMLObjectUnmarshaller
778 virtual ~KeyInfoReferenceImpl() {
779 XMLString::release(&m_Id);
780 XMLString::release(&m_URI);
783 KeyInfoReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
784 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
788 KeyInfoReferenceImpl(const KeyInfoReferenceImpl& src)
789 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
791 IMPL_CLONE_ATTRIB(Id);
792 IMPL_CLONE_ATTRIB(URI);
795 IMPL_XMLOBJECT_CLONE(KeyInfoReference);
796 IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
797 IMPL_STRING_ATTRIB(URI);
800 void marshallAttributes(DOMElement* domElement) const {
801 MARSHALL_ID_ATTRIB(Id,ID,nullptr);
802 MARSHALL_STRING_ATTRIB(URI,URI,nullptr);
805 void processAttribute(const DOMAttr* attribute) {
806 PROC_ID_ATTRIB(Id,ID,nullptr);
807 PROC_STRING_ATTRIB(URI,URI,nullptr);
808 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
812 class XMLTOOL_DLLLOCAL KeyInfoImpl : public virtual KeyInfo,
813 public AbstractComplexElement,
814 public AbstractDOMCachingXMLObject,
815 public AbstractXMLObjectMarshaller,
816 public AbstractXMLObjectUnmarshaller
819 virtual ~KeyInfoImpl() {
820 XMLString::release(&m_Id);
823 KeyInfoImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
824 : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Id(nullptr) {
827 KeyInfoImpl(const KeyInfoImpl& src)
828 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Id(nullptr) {
829 IMPL_CLONE_ATTRIB(Id);
830 IMPL_CLONE_CHILDBAG_BEGIN;
831 IMPL_CLONE_TYPED_CHILD_IN_BAG(X509Data);
832 IMPL_CLONE_TYPED_CHILD_IN_BAG(KeyName);
833 IMPL_CLONE_TYPED_CHILD_IN_BAG(KeyValue);
834 IMPL_CLONE_TYPED_CHILD_IN_BAG(DEREncodedKeyValue);
835 IMPL_CLONE_TYPED_CHILD_IN_BAG(RetrievalMethod);
836 IMPL_CLONE_TYPED_CHILD_IN_BAG(MgmtData);
837 IMPL_CLONE_TYPED_CHILD_IN_BAG(SPKIData);
838 IMPL_CLONE_TYPED_CHILD_IN_BAG(PGPData);
839 IMPL_CLONE_TYPED_CHILD_IN_BAG(KeyInfoReference);
840 IMPL_CLONE_XMLOBJECT_CHILD_IN_BAG(UnknownXMLObject);
841 IMPL_CLONE_CHILDBAG_END;
844 IMPL_XMLOBJECT_CLONE(KeyInfo);
845 IMPL_ID_ATTRIB_EX(Id,ID,nullptr);
846 IMPL_TYPED_CHILDREN(KeyName,m_children.end());
847 IMPL_TYPED_CHILDREN(KeyValue,m_children.end());
848 IMPL_TYPED_CHILDREN(DEREncodedKeyValue,m_children.end());
849 IMPL_TYPED_CHILDREN(RetrievalMethod,m_children.end());
850 IMPL_TYPED_CHILDREN(X509Data,m_children.end());
851 IMPL_TYPED_CHILDREN(MgmtData,m_children.end());
852 IMPL_TYPED_CHILDREN(SPKIData,m_children.end());
853 IMPL_TYPED_CHILDREN(PGPData,m_children.end());
854 IMPL_TYPED_CHILDREN(KeyInfoReference,m_children.end());
855 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
858 void marshallAttributes(DOMElement* domElement) const {
859 MARSHALL_ID_ATTRIB(Id,ID,nullptr);
862 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
863 PROC_TYPED_CHILDREN(X509Data,XMLSIG_NS,false);
864 PROC_TYPED_CHILDREN(KeyName,XMLSIG_NS,false);
865 PROC_TYPED_CHILDREN(KeyValue,XMLSIG_NS,false);
866 PROC_TYPED_CHILDREN(DEREncodedKeyValue,XMLSIG11_NS,false);
867 PROC_TYPED_CHILDREN(RetrievalMethod,XMLSIG_NS,false);
868 PROC_TYPED_CHILDREN(MgmtData,XMLSIG_NS,false);
869 PROC_TYPED_CHILDREN(SPKIData,XMLSIG_NS,false);
870 PROC_TYPED_CHILDREN(PGPData,XMLSIG_NS,false);
871 PROC_TYPED_CHILDREN(KeyInfoReference,XMLSIG11_NS,false);
874 const XMLCh* nsURI=root->getNamespaceURI();
875 if (!XMLString::equals(nsURI,XMLSIG_NS) && nsURI && *nsURI) {
876 getUnknownXMLObjects().push_back(childXMLObject);
880 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
883 void processAttribute(const DOMAttr* attribute) {
884 PROC_ID_ATTRIB(Id,ID,nullptr);
885 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
889 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,KeyName);
890 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,MgmtData);
891 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Modulus);
892 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Exponent);
893 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Seed);
894 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PgenCounter);
895 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,P);
896 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Q);
897 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,G);
898 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,Y);
899 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,J);
900 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,XPath);
901 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509IssuerName);
902 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SerialNumber);
903 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SKI);
904 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509SubjectName);
905 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509Certificate);
906 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,X509CRL);
907 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,SPKISexp);
908 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PGPKeyID);
909 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PGPKeyPacket);
911 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,OCSPResponse);
912 DECL_XMLOBJECTIMPL_SIMPLE(XMLTOOL_DLLLOCAL,PublicKey);
915 #if defined (_MSC_VER)
916 #pragma warning( pop )
919 // Builder Implementations
921 IMPL_XMLOBJECTBUILDER(X509IssuerSerial);
922 IMPL_XMLOBJECTBUILDER(X509IssuerName);
923 IMPL_XMLOBJECTBUILDER(X509SerialNumber);
924 IMPL_XMLOBJECTBUILDER(X509SKI);
925 IMPL_XMLOBJECTBUILDER(X509SubjectName);
926 IMPL_XMLOBJECTBUILDER(X509Certificate);
927 IMPL_XMLOBJECTBUILDER(X509CRL);
928 IMPL_XMLOBJECTBUILDER(X509Data);
929 IMPL_XMLOBJECTBUILDER(XPath);
930 IMPL_XMLOBJECTBUILDER(Transform);
931 IMPL_XMLOBJECTBUILDER(Transforms);
932 IMPL_XMLOBJECTBUILDER(RetrievalMethod);
933 IMPL_XMLOBJECTBUILDER(KeyName);
934 IMPL_XMLOBJECTBUILDER(MgmtData);
935 IMPL_XMLOBJECTBUILDER(Modulus);
936 IMPL_XMLOBJECTBUILDER(Exponent);
937 IMPL_XMLOBJECTBUILDER(Seed);
938 IMPL_XMLOBJECTBUILDER(PgenCounter);
939 IMPL_XMLOBJECTBUILDER(P);
940 IMPL_XMLOBJECTBUILDER(Q);
941 IMPL_XMLOBJECTBUILDER(G);
942 IMPL_XMLOBJECTBUILDER(Y);
943 IMPL_XMLOBJECTBUILDER(J);
944 IMPL_XMLOBJECTBUILDER(DSAKeyValue);
945 IMPL_XMLOBJECTBUILDER(RSAKeyValue);
946 IMPL_XMLOBJECTBUILDER(KeyValue);
947 IMPL_XMLOBJECTBUILDER(KeyInfo);
948 IMPL_XMLOBJECTBUILDER(SPKISexp);
949 IMPL_XMLOBJECTBUILDER(SPKIData);
950 IMPL_XMLOBJECTBUILDER(PGPKeyID);
951 IMPL_XMLOBJECTBUILDER(PGPKeyPacket);
952 IMPL_XMLOBJECTBUILDER(PGPData);
954 IMPL_XMLOBJECTBUILDER(DEREncodedKeyValue);
955 IMPL_XMLOBJECTBUILDER(ECKeyValue);
956 IMPL_XMLOBJECTBUILDER(KeyInfoReference);
957 IMPL_XMLOBJECTBUILDER(NamedCurve);
958 IMPL_XMLOBJECTBUILDER(OCSPResponse);
959 IMPL_XMLOBJECTBUILDER(PublicKey);
960 IMPL_XMLOBJECTBUILDER(X509Digest);
964 const XMLCh KeyInfo::LOCAL_NAME[] = UNICODE_LITERAL_7(K,e,y,I,n,f,o);
965 const XMLCh KeyInfo::TYPE_NAME[] = UNICODE_LITERAL_11(K,e,y,I,n,f,o,T,y,p,e);
966 const XMLCh KeyInfo::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
967 const XMLCh KeyValue::LOCAL_NAME[] = UNICODE_LITERAL_8(K,e,y,V,a,l,u,e);
968 const XMLCh KeyValue::TYPE_NAME[] = UNICODE_LITERAL_12(K,e,y,V,a,l,u,e,T,y,p,e);
969 const XMLCh DSAKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_11(D,S,A,K,e,y,V,a,l,u,e);
970 const XMLCh DSAKeyValue::TYPE_NAME[] = UNICODE_LITERAL_15(D,S,A,K,e,y,V,a,l,u,e,T,y,p,e);
971 const XMLCh RSAKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_11(R,S,A,K,e,y,V,a,l,u,e);
972 const XMLCh RSAKeyValue::TYPE_NAME[] = UNICODE_LITERAL_15(R,S,A,K,e,y,V,a,l,u,e,T,y,p,e);
973 const XMLCh MgmtData::LOCAL_NAME[] = UNICODE_LITERAL_8(M,g,m,t,D,a,t,a);
974 const XMLCh KeyName::LOCAL_NAME[] = UNICODE_LITERAL_7(K,e,y,N,a,m,e);
975 const XMLCh Modulus::LOCAL_NAME[] = UNICODE_LITERAL_7(M,o,d,u,l,u,s);
976 const XMLCh Exponent::LOCAL_NAME[] = UNICODE_LITERAL_8(E,x,p,o,n,e,n,t);
977 const XMLCh Seed::LOCAL_NAME[] = UNICODE_LITERAL_4(S,e,e,d);
978 const XMLCh PgenCounter::LOCAL_NAME[] = UNICODE_LITERAL_11(P,g,e,n,C,o,u,n,t,e,r);
979 const XMLCh P::LOCAL_NAME[] = UNICODE_LITERAL_1(P);
980 const XMLCh Q::LOCAL_NAME[] = UNICODE_LITERAL_1(Q);
981 const XMLCh G::LOCAL_NAME[] = UNICODE_LITERAL_1(G);
982 const XMLCh Y::LOCAL_NAME[] = UNICODE_LITERAL_1(Y);
983 const XMLCh J::LOCAL_NAME[] = UNICODE_LITERAL_1(J);
984 const XMLCh XPath::LOCAL_NAME[] = UNICODE_LITERAL_5(X,P,a,t,h);
985 const XMLCh Transform::LOCAL_NAME[] = UNICODE_LITERAL_9(T,r,a,n,s,f,o,r,m);
986 const XMLCh Transform::TYPE_NAME[] = UNICODE_LITERAL_13(T,r,a,n,s,f,o,r,m,T,y,p,e);
987 const XMLCh Transform::ALGORITHM_ATTRIB_NAME[] = UNICODE_LITERAL_9(A,l,g,o,r,i,t,h,m);
988 const XMLCh Transforms::LOCAL_NAME[] = UNICODE_LITERAL_10(T,r,a,n,s,f,o,r,m,s);
989 const XMLCh Transforms::TYPE_NAME[] = UNICODE_LITERAL_14(T,r,a,n,s,f,o,r,m,s,T,y,p,e);
990 const XMLCh RetrievalMethod::LOCAL_NAME[] = UNICODE_LITERAL_15(R,e,t,r,i,e,v,a,l,M,e,t,h,o,d);
991 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);
992 const XMLCh RetrievalMethod::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
993 const XMLCh RetrievalMethod::TYPE_ATTRIB_NAME[] = UNICODE_LITERAL_4(T,y,p,e);
994 const XMLCh SPKISexp::LOCAL_NAME[] = UNICODE_LITERAL_8(S,P,K,I,S,e,x,p);
995 const XMLCh SPKIData::LOCAL_NAME[] = UNICODE_LITERAL_8(S,P,K,I,D,a,t,a);
996 const XMLCh SPKIData::TYPE_NAME[] = UNICODE_LITERAL_12(S,P,K,I,D,a,t,a,T,y,p,e);
997 const XMLCh PGPKeyID::LOCAL_NAME[] = UNICODE_LITERAL_8(P,G,P,K,e,y,I,D);
998 const XMLCh PGPKeyPacket::LOCAL_NAME[] = UNICODE_LITERAL_12(P,G,P,K,e,y,P,a,c,k,e,t);
999 const XMLCh PGPData::LOCAL_NAME[] = UNICODE_LITERAL_7(P,G,P,D,a,t,a);
1000 const XMLCh PGPData::TYPE_NAME[] = UNICODE_LITERAL_11(P,G,P,D,a,t,a,T,y,p,e);
1002 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);
1003 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);
1004 const XMLCh DEREncodedKeyValue::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1005 const XMLCh ECKeyValue::LOCAL_NAME[] = UNICODE_LITERAL_10(E,C,K,e,y,V,a,l,u,e);
1006 const XMLCh ECKeyValue::TYPE_NAME[] = UNICODE_LITERAL_14(E,C,K,e,y,V,a,l,u,e,T,y,p,e);
1007 const XMLCh ECKeyValue::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1008 const XMLCh KeyInfoReference::LOCAL_NAME[] = UNICODE_LITERAL_16(K,e,y,I,n,f,o,R,e,f,e,r,e,n,c,e);
1009 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);
1010 const XMLCh KeyInfoReference::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,d);
1011 const XMLCh KeyInfoReference::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
1012 const XMLCh NamedCurve::LOCAL_NAME[] = UNICODE_LITERAL_10(N,a,m,e,d,C,u,r,v,e);
1013 const XMLCh NamedCurve::TYPE_NAME[] = UNICODE_LITERAL_14(N,a,m,e,d,C,u,r,v,e,T,y,p,e);
1014 const XMLCh NamedCurve::URI_ATTRIB_NAME[] = UNICODE_LITERAL_3(U,R,I);
1015 const XMLCh OCSPResponse::LOCAL_NAME[] = UNICODE_LITERAL_12(O,C,S,P,R,e,s,p,o,n,s,e);
1016 const XMLCh PublicKey::LOCAL_NAME[] = UNICODE_LITERAL_9(P,u,b,l,i,c,K,e,y);
1017 const XMLCh X509Digest::ALGORITHM_ATTRIB_NAME[] = UNICODE_LITERAL_9(A,l,g,o,r,i,t,h,m);
1019 #define XCH(ch) chLatin_##ch
1020 #define XNUM(d) chDigit_##d
1022 const XMLCh X509Data::LOCAL_NAME[] = {
1023 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(D), XCH(a), XCH(t), XCH(a), chNull
1025 const XMLCh X509Data::TYPE_NAME[] = {
1026 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
1028 const XMLCh X509IssuerSerial::LOCAL_NAME[] = {
1029 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
1030 XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l), chNull
1032 const XMLCh X509IssuerSerial::TYPE_NAME[] = {
1033 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
1034 XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l), XCH(T), XCH(y), XCH(p), XCH(e), chNull
1036 const XMLCh X509IssuerName::LOCAL_NAME[] = {
1037 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(I), XCH(s), XCH(s), XCH(u), XCH(e), XCH(r),
1038 XCH(N), XCH(a), XCH(m), XCH(e), chNull
1040 const XMLCh X509SerialNumber::LOCAL_NAME[] = {
1041 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(e), XCH(r), XCH(i), XCH(a), XCH(l),
1042 XCH(N), XCH(u), XCH(m), XCH(b), XCH(e), XCH(r), chNull
1044 const XMLCh X509SKI::LOCAL_NAME[] = { XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(K), XCH(I), chNull };
1045 const XMLCh X509SubjectName::LOCAL_NAME[] = {
1046 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(S), XCH(u), XCH(b), XCH(j), XCH(e), XCH(c), XCH(t),
1047 XCH(N), XCH(a), XCH(m), XCH(e), chNull
1049 const XMLCh X509Certificate::LOCAL_NAME[] = {
1050 XCH(X), XNUM(5), XNUM(0), XNUM(9),
1051 XCH(C), XCH(e), XCH(r), XCH(t), XCH(i), XCH(f), XCH(i), XCH(c), XCH(a), XCH(t), XCH(e), chNull
1053 const XMLCh X509CRL::LOCAL_NAME[] = { XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(C), XCH(R), XCH(L), chNull };
1054 const XMLCh X509Digest::LOCAL_NAME[] = {
1055 XCH(X), XNUM(5), XNUM(0), XNUM(9), XCH(D), XCH(i), XCH(g), XCH(e), XCH(s), XCH(t), chNull
1057 const XMLCh X509Digest::TYPE_NAME[] = {
1058 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
1061 const XMLCh RetrievalMethod::TYPE_DSAKEYVALUE[] = {
1062 chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
1063 chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
1064 chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
1065 chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
1066 chLatin_D, chLatin_S, chLatin_A, chLatin_K, chLatin_e, chLatin_y, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
1069 const XMLCh RetrievalMethod::TYPE_RSAKEYVALUE[] = {
1070 chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
1071 chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
1072 chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
1073 chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
1074 chLatin_R, chLatin_S, chLatin_A, chLatin_K, chLatin_e, chLatin_y, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
1077 const XMLCh RetrievalMethod::TYPE_X509DATA[] = {
1078 chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
1079 chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
1080 chDigit_2, chDigit_0, chDigit_0, chDigit_0, chForwardSlash, chDigit_0, chDigit_9, chForwardSlash,
1081 chLatin_x, chLatin_m, chLatin_l, chLatin_d, chLatin_s, chLatin_i, chLatin_g, chPound,
1082 chLatin_X, chDigit_5, chDigit_0, chDigit_9, chLatin_D, chLatin_a, chLatin_t, chLatin_a, chNull