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

DSIGKeyInfoX509.hpp

Go to the documentation of this file.
00001 /*
00002  * Copyright 2002-2005 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  * limitations 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.13 2005/06/04 11:30:25 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 
00051 class DSIG_EXPORT DSIGKeyInfoX509 : public DSIGKeyInfo {
00052 
00053 public:
00054 
00055 
00056     struct X509Holder {
00057 
00058         const XMLCh         * mp_encodedX509;       // Base64 encoding
00059         XSECCryptoX509      * mp_cryptoX509;        // The certificate
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;             // The X509 structures
00348     XMLCh               * mp_X509IssuerName;    // Parameters from KeyInfo (not cert)
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     // Text nodes holding information
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 /* #define DSIGKEYX509_INCLUDE */

Generated on Sun Jul 3 17:37:25 2005 for XML-Security-C by  doxygen 1.4.2