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  * The Apache Software License, Version 1.1
00003  *
00004  * Copyright (c) 2002 Berin Lautenbach.  All rights reserved.
00005  *
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions
00008  * are met:
00009  *
00010  * 1. Redistributions of source code must retain the above copyright
00011  *    notice, this list of conditions and the following disclaimer.
00012  *
00013  * 2. Redistributions in binary form must reproduce the above copyright
00014  *    notice, this list of conditions and the following disclaimer in
00015  *    the documentation and/or other materials provided with the
00016  *    distribution.
00017  *
00018  * 3. The end-user documentation included with the redistribution,
00019  *    if any, must include the following acknowledgment:
00020  *       "This product includes software developed by
00021  *                   Berin Lautenbach"
00022  *    Alternately, this acknowledgment may appear in the software itself,
00023  *    if and wherever such third-party acknowledgments normally appear.
00024  *
00025  * 4. The names "XSEC", "xml-security-c" and Berin Lautenbach must
00026  *    not be used to endorse or promote products derived from this
00027  *    software without prior written permission. For written
00028  *    permission, please contact berin@users.sourceforge.net.
00029  *
00030  * 5. Products derived from this software may not be called "xml-security-c",
00031  *    nor may "xml-security-c" appear in their name, without prior written
00032  *    permission of Berin Lautenbach.
00033  *
00034  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
00035  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00036  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00037  * DISCLAIMED.  IN NO EVENT SHALL BERIN LAUTENBACH OR OTHER
00038  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00039  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00040  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
00041  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00042  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00043  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
00044  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00045  * SUCH DAMAGE.
00046  * ====================================================================
00047  */
00048 
00049 /*
00050  * XSEC
00051  *
00052  * DSIGKeyInfoX509 := A "Super" key that defines a certificate with a sub-key that defines
00053  *                the signing key
00054  *
00055  */
00056 
00057 #ifndef DSIGKEYINFOX509_INCLUDE
00058 #define DSIGKEYINFOX509_INCLUDE
00059 
00060 #include <xsec/utils/XSECSafeBuffer.hpp>
00061 #include <xsec/dsig/DSIGKeyInfo.hpp>
00062 #include <xsec/enc/XSECCryptoX509.hpp>
00063 
00064 #include <vector>
00065 
00080 class DSIG_EXPORT DSIGKeyInfoX509 : public DSIGKeyInfo {
00081 
00082 public:
00083 
00084 
00085     struct X509Holder {
00086 
00087         safeBuffer          encodedX509;        // Base64 encoding
00088         XSECCryptoX509      * cryptoX509;       // The certificate
00089 
00090     };
00091 
00092 #if defined(XSEC_NO_NAMESPACES)
00093     typedef vector<X509Holder *>            X509ListType;
00094 #else
00095     typedef std::vector<X509Holder *>       X509ListType;
00096 #endif
00097 
00098 #if defined(XSEC_SIZE_T_IN_NAMESPACE_STD)
00099     typedef std::size_t     size_type;
00100 #else
00101     typedef size_t          size_type;
00102 #endif
00103 
00106 
00117     DSIGKeyInfoX509(DSIGSignature * sig, DOMNode *X509Data);
00118 
00128     DSIGKeyInfoX509(DSIGSignature * sig);
00129     
00134     virtual ~DSIGKeyInfoX509();
00135 
00137 
00140 
00148     virtual void load();
00149 
00160     const char * getX509SubjectName(void);
00161 
00171     safeBuffer getKeyName(void);
00172     
00182     const char * getX509IssuerName(void);
00183 
00194     const char * getX509IssuerSerialNumber(void);
00195 
00204     int getCertificateListSize(void);
00205 
00216     const char * getCertificateItem(int item);
00217 
00222     virtual keyInfoType getKeyInfoType(void) {return DSIGKeyInfo::KEYINFO_X509;}
00223 
00225 
00228 
00238     DOMElement * createBlankX509Data(void);
00239 
00249     void setX509SubjectName(const char * name);
00250 
00261     void setX509IssuerSerial(const char * name, const char * serial);
00262 
00273     void appendX509Certificate(const char * base64Certificate);
00274 
00276 
00277 
00278 private:
00279 
00280     DSIGKeyInfoX509();
00281 
00282     X509ListType        m_X509List;             // The X509 structures
00283     safeBuffer          m_X509IssuerName;       // Parameters from KeyInfo (not cert)
00284     safeBuffer          m_X509SerialNumber;
00285     safeBuffer          m_X509SubjectName;
00286 
00287     // Text nodes holding information
00288 
00289     DOMNode             * mp_X509SubjectNameTextNode;
00290     DOMNode             * mp_X509IssuerNameTextNode;
00291     DOMNode             * mp_X509SerialNumberTextNode;
00292 
00293 };
00294 
00295 
00296 
00297 #endif /* #define DSIGKEYX509_INCLUDE */

Generated on Sat Jan 11 20:34:06 2003 for XML-Security-C by doxygen1.2.15