Main Page | Modules | Class Hierarchy | Compound List | File List | Compound Members | File Members | Related Pages

DSIGKeyInfoX509.hpp

Go to the documentation of this file.
00001 /*
00002  * Copyright 2002-2004 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * imitations under the License.
00015  */
00016 
00017 /*
00018  * XSEC
00019  *
00020  * DSIGKeyInfoX509 := A "Super" key that defines a certificate with a sub-key that defines
00021  *                the signing key
00022  *
00023  * $Id: DSIGKeyInfoX509.hpp,v 1.10 2004/02/08 10:20:51 blautenb Exp $
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;       // Base64 encoding
00060         XSECCryptoX509      * mp_cryptoX509;        // The certificate
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;             // The X509 structures
00349     XMLCh               * mp_X509IssuerName;    // Parameters from KeyInfo (not cert)
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     // Text nodes holding information
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 /* #define DSIGKEYX509_INCLUDE */

Generated on Sun Mar 14 20:20:34 2004 for XML-Security-C by doxygen 1.3.2