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
00052 class DSIG_EXPORT DSIGKeyInfoX509 : public DSIGKeyInfo {
00053
00054 public:
00055
00056
00057 struct X509Holder {
00058
00059 const XMLCh * mp_encodedX509;
00060 XSECCryptoX509 * mp_cryptoX509;
00061
00062 };
00063
00064 #if defined(XSEC_NO_NAMESPACES)
00065 typedef vector<X509Holder *> X509ListType;
00066 #else
00067 typedef std::vector<X509Holder *> X509ListType;
00068 #endif
00069
00070 #if defined(XSEC_SIZE_T_IN_NAMESPACE_STD)
00071 typedef std::size_t size_type;
00072 #else
00073 typedef size_t size_type;
00074 #endif
00075
00078
00089 DSIGKeyInfoX509(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *X509Data);
00090
00100 DSIGKeyInfoX509(const XSECEnv * env);
00101
00106 virtual ~DSIGKeyInfoX509();
00107
00109
00112
00120 virtual void load();
00121
00132 const XMLCh * getX509SubjectName(void);
00133
00145 const XMLCh * getKeyName(void);
00146
00156 const XMLCh * getX509IssuerName(void);
00157
00169 const XMLCh * getX509IssuerSerialNumber(void);
00170
00181 const XMLCh * getX509CRL(void);
00182
00193 const XMLCh * getX509SKI(void);
00194
00203 const XMLCh * getRawRetrievalURI(void);
00204
00213 int getCertificateListSize(void);
00214
00225 const XMLCh * getCertificateItem(int item);
00226
00236 XSECCryptoX509 * getCertificateCryptoItem(int item);
00237
00242 virtual keyInfoType getKeyInfoType(void) {return DSIGKeyInfo::KEYINFO_X509;}
00243
00245
00248
00258 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *
00259 createBlankX509Data(void);
00260
00274 void setX509SubjectName(const XMLCh * name);
00275
00290 void setX509IssuerSerial(const XMLCh * name, const XMLCh * serial);
00291
00301 void setX509CRL(const XMLCh * crl);
00302
00315 void setX509SKI(const XMLCh * ski);
00316
00327 void setRawRetrievalURI(const XMLCh * uri);
00328
00339 void appendX509Certificate(const XMLCh * base64Certificate);
00340
00342
00343
00344 private:
00345
00346 DSIGKeyInfoX509();
00347
00348 X509ListType m_X509List;
00349 XMLCh * mp_X509IssuerName;
00350 const XMLCh * mp_X509SerialNumber;
00351 XMLCh * mp_X509SubjectName;
00352 const XMLCh * mp_X509CRL;
00353 const XMLCh * mp_X509SKI;
00354 XMLCh * mp_rawRetrievalURI;
00355
00356
00357
00358 XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * mp_X509SubjectNameTextNode;
00359 XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * mp_X509IssuerNameTextNode;
00360 XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * mp_X509SerialNumberTextNode;
00361 XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * mp_X509CRLTextNode;
00362 XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * mp_X509SKITextNode;
00363
00364 };
00365
00366
00367
00368 #endif