00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef DSIGKEYINFOX509_INCLUDE
00028 #define DSIGKEYINFOX509_INCLUDE
00029
00030 #include <xsec/utils/XSECSafeBuffer.hpp>
00031 #include <xsec/dsig/DSIGKeyInfo.hpp>
00032 #include <xsec/enc/XSECCryptoX509.hpp>
00033
00034 #include <vector>
00035
00036 XSEC_USING_XERCES(DOMElement);
00037
00051 class DSIG_EXPORT DSIGKeyInfoX509 : public DSIGKeyInfo {
00052
00053 public:
00054
00055
00056 struct X509Holder {
00057
00058 const XMLCh * mp_encodedX509;
00059 XSECCryptoX509 * mp_cryptoX509;
00060
00061 };
00062
00063 #if defined(XSEC_NO_NAMESPACES)
00064 typedef vector<X509Holder *> X509ListType;
00065 #else
00066 typedef std::vector<X509Holder *> X509ListType;
00067 #endif
00068
00069 #if defined(XSEC_SIZE_T_IN_NAMESPACE_STD)
00070 typedef std::size_t size_type;
00071 #else
00072 typedef size_t size_type;
00073 #endif
00074
00077
00088 DSIGKeyInfoX509(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *X509Data);
00089
00099 DSIGKeyInfoX509(const XSECEnv * env);
00100
00105 virtual ~DSIGKeyInfoX509();
00106
00108
00111
00119 virtual void load();
00120
00131 const XMLCh * getX509SubjectName(void);
00132
00144 const XMLCh * getKeyName(void);
00145
00155 const XMLCh * getX509IssuerName(void);
00156
00168 const XMLCh * getX509IssuerSerialNumber(void);
00169
00180 const XMLCh * getX509CRL(void);
00181
00192 const XMLCh * getX509SKI(void);
00193
00202 const XMLCh * getRawRetrievalURI(void);
00203
00212 int getCertificateListSize(void);
00213
00224 const XMLCh * getCertificateItem(int item);
00225
00235 XSECCryptoX509 * getCertificateCryptoItem(int item);
00236
00241 virtual keyInfoType getKeyInfoType(void) {return DSIGKeyInfo::KEYINFO_X509;}
00242
00244
00247
00257 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *
00258 createBlankX509Data(void);
00259
00273 void setX509SubjectName(const XMLCh * name);
00274
00289 void setX509IssuerSerial(const XMLCh * name, const XMLCh * serial);
00290
00300 void setX509CRL(const XMLCh * crl);
00301
00314 void setX509SKI(const XMLCh * ski);
00315
00326 void setRawRetrievalURI(const XMLCh * uri);
00327
00338 void appendX509Certificate(const XMLCh * base64Certificate);
00339
00341
00342
00343 private:
00344
00345 DSIGKeyInfoX509();
00346
00347 X509ListType m_X509List;
00348 XMLCh * mp_X509IssuerName;
00349 const XMLCh * mp_X509SerialNumber;
00350 XMLCh * mp_X509SubjectName;
00351 const XMLCh * mp_X509CRL;
00352 const XMLCh * mp_X509SKI;
00353 XMLCh * mp_rawRetrievalURI;
00354
00355
00356
00357 XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * mp_X509SubjectNameTextNode;
00358 XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * mp_X509IssuerNameTextNode;
00359 XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * mp_X509SerialNumberTextNode;
00360 XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * mp_X509CRLTextNode;
00361 XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * mp_X509SKITextNode;
00362
00363 };
00364
00365
00366
00367 #endif