X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2Fsignature%2FKeyInfo.h;h=d9382a817c62ccd422b831e5a3f7f281425894ec;hb=b3887773bcb867e8fb7cad376279f2a9ee39dda2;hp=786c7923269a759225e07fd19588aa9577b51f33;hpb=f18926bcfb10920e11ead1f76ca81d9a576baf13;p=shibboleth%2Fxmltooling.git diff --git a/xmltooling/signature/KeyInfo.h b/xmltooling/signature/KeyInfo.h index 786c792..d9382a8 100644 --- a/xmltooling/signature/KeyInfo.h +++ b/xmltooling/signature/KeyInfo.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Internet2 + * Copyright 2001-2007 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ */ /** - * @file KeyInfo.h + * @file xmltooling/signature/KeyInfo.h * * XMLObjects representing XML Digital Signature, version 20020212, KeyInfo element * and related content. @@ -25,17 +25,18 @@ #define __xmltooling_keyinfo_h__ #include -#include #include #include -#include - -#include +/** + * Macro for declaring signature builders. + * + * @param cname name of class being built + */ #define DECL_XMLSIGOBJECTBUILDER(cname) \ - DECL_XMLOBJECTBUILDER(XMLTOOL_API,cname,XMLConstants::XMLSIG_NS,XMLConstants::XMLSIG_PREFIX) + DECL_XMLOBJECTBUILDER(XMLTOOL_API,cname,xmlconstants::XMLSIG_NS,xmlconstants::XMLSIG_PREFIX) -namespace xmltooling { +namespace xmlsignature { DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,KeyName,Name,XML Digital Signature version 20020212 KeyName element); DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,MgmtData,Data,XML Digital Signature version 20020212 MgmtData element); @@ -48,55 +49,136 @@ namespace xmltooling { DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,G,Value,XML Digital Signature version 20020212 G element); DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,Y,Value,XML Digital Signature version 20020212 Y element); DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,J,Value,XML Digital Signature version 20020212 J element); - - /** - * XML Digital Signature version 20020212 DSAKeyValue element. - */ - BEGIN_XMLOBJECT(XMLTOOL_API,DSAKeyValue,XMLObject); - DECL_XMLOBJECT_CHILD(P); - DECL_XMLOBJECT_CHILD(Q); - DECL_XMLOBJECT_CHILD(G); - DECL_XMLOBJECT_CHILD(Y); - DECL_XMLOBJECT_CHILD(J); - DECL_XMLOBJECT_CHILD(Seed); - DECL_XMLOBJECT_CHILD(PgenCounter); + DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,XPath,Expression,XML Digital Signature version 20020212 XPath element); + DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,X509IssuerName,Name,XML Digital Signature version 20020212 X509IssuerName element); + DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,X509SerialNumber,SerialNumber,XML Digital Signature version 20020212 X509SerialNumber element); + DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,X509SKI,Value,XML Digital Signature version 20020212 X509SKI element); + DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,X509SubjectName,Name,XML Digital Signature version 20020212 X509SubjectName element); + DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,X509Certificate,Value,XML Digital Signature version 20020212 X509Certificate element); + DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,X509CRL,Value,XML Digital Signature version 20020212 X509CRL element); + DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,SPKISexp,Value,XML Digital Signature version 20020212 SPKISexp element); + DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,PGPKeyID,ID,XML Digital Signature version 20020212 PGPKeyID element); + DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,PGPKeyPacket,Packet,XML Digital Signature version 20020212 PGPKeyPacket element); + + BEGIN_XMLOBJECT(XMLTOOL_API,DSAKeyValue,xmltooling::XMLObject,XML Digital Signature version 20020212 DSAKeyValue element); + DECL_TYPED_CHILD(P); + DECL_TYPED_CHILD(Q); + DECL_TYPED_CHILD(G); + DECL_TYPED_CHILD(Y); + DECL_TYPED_CHILD(J); + DECL_TYPED_CHILD(Seed); + DECL_TYPED_CHILD(PgenCounter); /** DSAKeyValueType local name */ static const XMLCh TYPE_NAME[]; END_XMLOBJECT; - /** - * XML Digital Signature version 20020212 RSAKeyValue element. - */ - BEGIN_XMLOBJECT(XMLTOOL_API,RSAKeyValue,XMLObject); - DECL_XMLOBJECT_CHILD(Modulus); - DECL_XMLOBJECT_CHILD(Exponent); + BEGIN_XMLOBJECT(XMLTOOL_API,RSAKeyValue,xmltooling::XMLObject,XML Digital Signature version 20020212 RSAKeyValue element); + DECL_TYPED_CHILD(Modulus); + DECL_TYPED_CHILD(Exponent); /** RSAKeyValueType local name */ static const XMLCh TYPE_NAME[]; END_XMLOBJECT; - /** - * XML Digital Signature version 20020212 KeyValue element. - */ - BEGIN_XMLOBJECT(XMLTOOL_API,KeyValue,XMLObject); - DECL_XMLOBJECT_CHILD(DSAKeyValue); - DECL_XMLOBJECT_CHILD(RSAKeyValue); - DECL_XMLOBJECT_CHILD(XMLObject); - DECL_XMLOBJECT_CONTENT(TextContent); + BEGIN_XMLOBJECT(XMLTOOL_API,KeyValue,xmltooling::XMLObject,XML Digital Signature version 20020212 KeyValue element); + DECL_TYPED_CHILD(DSAKeyValue); + DECL_TYPED_CHILD(RSAKeyValue); + DECL_XMLOBJECT_CHILD(UnknownXMLObject); /** KeyValueType local name */ static const XMLCh TYPE_NAME[]; END_XMLOBJECT; - /** - * XML Digital Signature version 20020212 KeyInfo element. - */ - BEGIN_XMLOBJECT(XMLTOOL_API,KeyInfo,ElementProxy); - DECL_XMLOBJECT_ATTRIB(Id,ID); - DECL_XMLOBJECT_CHILDREN(KeyName); - DECL_XMLOBJECT_CHILDREN(MgmtData); + BEGIN_XMLOBJECT(XMLTOOL_API,Transform,xmltooling::ElementExtensibleXMLObject,XML Digital Signature version 20020212 Transform element); + DECL_STRING_ATTRIB(Algorithm,ALGORITHM); + DECL_TYPED_CHILDREN(XPath); + /** TransformType local name */ + static const XMLCh TYPE_NAME[]; + END_XMLOBJECT; + + BEGIN_XMLOBJECT(XMLTOOL_API,Transforms,xmltooling::XMLObject,XML Digital Signature version 20020212 Transforms element); + DECL_TYPED_CHILDREN(Transform); + /** TransformsType local name */ + static const XMLCh TYPE_NAME[]; + END_XMLOBJECT; + + BEGIN_XMLOBJECT(XMLTOOL_API,RetrievalMethod,xmltooling::XMLObject,XML Digital Signature version 20020212 RetrievalMethod element); + DECL_STRING_ATTRIB(URI,URI); + DECL_STRING_ATTRIB(Type,TYPE); + DECL_TYPED_CHILD(Transforms); + /** RetrievalMethodType local name */ + static const XMLCh TYPE_NAME[]; + /** DSAKeyValue RetrievalMethod Type */ + static const XMLCh TYPE_DSAKEYVALUE[]; + /** RSAKeyValue RetrievalMethod Type */ + static const XMLCh TYPE_RSAKEYVALUE[]; + /** X509Data RetrievalMethod Type */ + static const XMLCh TYPE_X509DATA[]; + END_XMLOBJECT; + + BEGIN_XMLOBJECT(XMLTOOL_API,X509IssuerSerial,xmltooling::XMLObject,XML Digital Signature version 20020212 X509IssuerSerial element); + DECL_TYPED_CHILD(X509IssuerName); + DECL_TYPED_CHILD(X509SerialNumber); + /** X509IssuerSerialType local name */ + static const XMLCh TYPE_NAME[]; + END_XMLOBJECT; + + BEGIN_XMLOBJECT(XMLTOOL_API,X509Data,xmltooling::ElementExtensibleXMLObject,XML Digital Signature version 20020212 X509Data element); + DECL_TYPED_CHILDREN(X509IssuerSerial); + DECL_TYPED_CHILDREN(X509SKI); + DECL_TYPED_CHILDREN(X509SubjectName); + DECL_TYPED_CHILDREN(X509Certificate); + DECL_TYPED_CHILDREN(X509CRL); + /** X509DataType local name */ + static const XMLCh TYPE_NAME[]; + END_XMLOBJECT; + + BEGIN_XMLOBJECT(XMLTOOL_API,SPKIData,xmltooling::XMLObject,XML Digital Signature version 20020212 SPKIData element); + /** SPKIDataType local name */ + static const XMLCh TYPE_NAME[]; + + /** Returns modifiable collection of SPKIsexp/XMLObject pairs. */ + virtual VectorOfPairs(SPKISexp,xmltooling::XMLObject) getSPKISexps()=0; + + /** Returns reference to immutable collection of SPKIsexp/XMLObject pairs. */ + virtual const std::vector< std::pair >& getSPKISexps() const=0; + END_XMLOBJECT; + + BEGIN_XMLOBJECT(XMLTOOL_API,PGPData,xmltooling::ElementExtensibleXMLObject,XML Digital Signature version 20020212 PGPData element); + DECL_TYPED_CHILD(PGPKeyID); + DECL_TYPED_CHILD(PGPKeyPacket); + /** PGPDataType local name */ + static const XMLCh TYPE_NAME[]; + END_XMLOBJECT; + + BEGIN_XMLOBJECT(XMLTOOL_API,KeyInfo,xmltooling::ElementExtensibleXMLObject,XML Digital Signature version 20020212 KeyInfo element); + DECL_STRING_ATTRIB(Id,ID); + DECL_TYPED_CHILDREN(X509Data); + DECL_TYPED_CHILDREN(KeyName); + DECL_TYPED_CHILDREN(KeyValue); + DECL_TYPED_CHILDREN(RetrievalMethod); + DECL_TYPED_CHILDREN(MgmtData); + DECL_TYPED_CHILDREN(PGPData); + DECL_TYPED_CHILDREN(SPKIData); /** KeyInfoType local name */ static const XMLCh TYPE_NAME[]; END_XMLOBJECT; + DECL_XMLSIGOBJECTBUILDER(PGPData); + DECL_XMLSIGOBJECTBUILDER(PGPKeyID); + DECL_XMLSIGOBJECTBUILDER(PGPKeyPacket); + DECL_XMLSIGOBJECTBUILDER(SPKIData); + DECL_XMLSIGOBJECTBUILDER(SPKISexp); + DECL_XMLSIGOBJECTBUILDER(X509IssuerSerial); + DECL_XMLSIGOBJECTBUILDER(X509IssuerName); + DECL_XMLSIGOBJECTBUILDER(X509SerialNumber); + DECL_XMLSIGOBJECTBUILDER(X509SKI); + DECL_XMLSIGOBJECTBUILDER(X509SubjectName); + DECL_XMLSIGOBJECTBUILDER(X509Certificate); + DECL_XMLSIGOBJECTBUILDER(X509CRL); + DECL_XMLSIGOBJECTBUILDER(X509Data); + DECL_XMLSIGOBJECTBUILDER(XPath); + DECL_XMLSIGOBJECTBUILDER(Transform); + DECL_XMLSIGOBJECTBUILDER(Transforms); + DECL_XMLSIGOBJECTBUILDER(RetrievalMethod); DECL_XMLSIGOBJECTBUILDER(KeyName); DECL_XMLSIGOBJECTBUILDER(MgmtData); DECL_XMLSIGOBJECTBUILDER(Modulus); @@ -113,38 +195,10 @@ namespace xmltooling { DECL_XMLSIGOBJECTBUILDER(KeyValue); DECL_XMLSIGOBJECTBUILDER(KeyInfo); -#ifdef XMLTOOLING_DECLARE_VALIDATORS - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,KeyName,Name); - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,MgmtData,Data); - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,Modulus,Value); - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,Exponent,Value); - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,Seed,Value); - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,PgenCounter,Value); - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,P,Value); - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,Q,Value); - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,G,Value); - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,Y,Value); - XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,J,Value); - - BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,RSAKeyValue); - XMLOBJECTVALIDATOR_REQUIRE(RSAKeyValue,Modulus); - XMLOBJECTVALIDATOR_REQUIRE(RSAKeyValue,Exponent); - END_XMLOBJECTVALIDATOR; - - BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,DSAKeyValue); - XMLOBJECTVALIDATOR_REQUIRE(DSAKeyValue,Y); - XMLOBJECTVALIDATOR_NONEORBOTH(DSKeyValue,P,Q); - XMLOBJECTVALIDATOR_NONEORBOTH(DSKeyValue,Seed,PgenCounter); - END_XMLOBJECTVALIDATOR; - - BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,KeyValue); - XMLOBJECTVALIDATOR_ONEOF3(KeyValue,DSAKeyValue,RSAKeyValue,XMLObject); - END_XMLOBJECTVALIDATOR; - - BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,KeyInfo); - XMLOBJECTVALIDATOR_NONEMPTY(KeyInfo,XMLObject); - END_XMLOBJECTVALIDATOR; -#endif /* XMLTOOLING_DECLARE_VALIDATORS */ + /** + * Registers builders and validators for KeyInfo classes into the runtime. + */ + void XMLTOOL_API registerKeyInfoClasses(); };