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 * DSIGKeyInfoValue := A value setting 00053 * 00054 */ 00055 00056 #ifndef DSIGKEYINFOVALUE_INCLUDE 00057 #define DSIGKEYINFOVALUE_INCLUDE 00058 00059 #include <xsec/utils/XSECSafeBuffer.hpp> 00060 #include <xsec/dsig/DSIGKeyInfo.hpp> 00061 #include <xsec/utils/XSECPlatformUtils.hpp> 00062 00077 class DSIG_EXPORT DSIGKeyInfoValue : public DSIGKeyInfo { 00078 00079 public: 00080 00083 00094 DSIGKeyInfoValue(DSIGSignature * sig, DOMNode *valueNode); 00095 00105 DSIGKeyInfoValue(DSIGSignature * sig); 00106 00107 virtual ~DSIGKeyInfoValue(); 00108 00110 00113 00121 virtual void load(void); 00122 00129 const char * getDSAP(void) {return m_P.rawCharBuffer();} 00130 00137 const char * getDSAQ(void) {return m_Q.rawCharBuffer();} 00138 00145 const char * getDSAG(void) {return m_G.rawCharBuffer();} 00146 00153 const char * getDSAY(void) {return m_Y.rawCharBuffer();} 00154 00161 const char * getRSAModulus(void); 00162 00169 const char * getRSAExponent(void); 00170 00172 00175 00189 DOMElement * createBlankDSAKeyValue(const char * P, 00190 const char * Q, 00191 const char * G, 00192 const char * Y); 00193 00201 void setDSAP(const char * P); 00202 00210 void setDSAQ(const char * Q); 00211 00219 void setDSAG(const char * G); 00220 00228 void setDSAY(const char * Y); 00229 00231 00234 ; 00244 00245 DOMElement * DSIGKeyInfoValue::createBlankRSAKeyValue(const char * modulus, 00246 const char * exponent); 00247 00256 void DSIGKeyInfoValue::setRSAModulus(const char * modulus); 00257 00266 void DSIGKeyInfoValue::setRSAExponent(const char * exponent); 00267 00269 00272 00279 virtual keyInfoType getKeyInfoType(void); 00280 00287 virtual safeBuffer getKeyName(void); 00288 00290 private: 00291 00292 // Structures to hold ALL the required information 00293 // Not the most efficient of methods, but simple. 00294 00295 // DSA 00296 00297 safeBuffer m_P; // DSA P Value 00298 safeBuffer m_Q; // DSA Q Value 00299 safeBuffer m_G; // DSA G Value 00300 safeBuffer m_Y; // DSA Y Value 00301 00302 DOMNode * mp_PTextNode; // Nodes where strings are stored 00303 DOMNode * mp_QTextNode; 00304 DOMNode * mp_GTextNode; 00305 DOMNode * mp_YTextNode; 00306 00307 // RSA 00308 00309 safeBuffer m_modulus; // RSA Modulus 00310 safeBuffer m_exponent; // RSA Exponent 00311 00312 DOMNode * mp_modulusTextNode; 00313 DOMNode * mp_exponentTextNode; 00314 00315 // General 00316 00317 DOMNode * mp_valueNode; 00318 keyInfoType m_keyInfoType; 00319 }; 00320 00321 #endif /* #define DSIGKEYVALUE_INCLUDE */