From zlewis@example.net Sat Mar 1 06:27:31 2003 Return-Path: <zlewis@example.net> Mailing-List: contact zlewis@example.net; run by ezmlm Delivered-To: mailing list zlewis@example.net Received: (qmail 39631 invoked from network); 1 Mar 2003 06:27:31 -0000 Received: from icarus.apache.org (83.161.120.155) by daedalus.apache.org with SMTP; 1 Mar 2003 06:27:31 -0000 Received: (qmail 33240 invoked by uid 1627); 1 Mar 2003 06:27:30 -0000 Date: 1 Mar 2003 06:27:30 -0000 Message-ID: <zlewis@example.net> From: zlewis@example.net To: zlewis@example.net Subject: cvs commit: xml-security/c/src/utils XSECBinTXFMInputStream.hpp XSECPlatformUtils.hpp XSECSafeBuffer.hpp XSECSafeBufferFormatter.hpp XSECXPathNodeList.cpp X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N blautenb 2003/02/28 22:27:30 Modified: c/src/dsig DSIGKeyInfoX509.cpp DSIGSignature.cpp DSIGSignedInfo.cpp DSIGTransformXPath.cpp c/src/enc XSECCryptoKeyDSA.hpp XSECCryptoKeyHMAC.hpp XSECCryptoKeyRSA.hpp XSECCryptoX509.hpp XSECKeyInfoResolver.hpp XSECKeyInfoResolverDefault.cpp XSECKeyInfoResolverDefault.hpp c/src/enc/OpenSSL OpenSSLCryptoKeyRSA.cpp c/src/framework XSECDefs.hpp XSECError.hpp XSECException.hpp XSECProvider.cpp XSECProvider.hpp XSECURIResolverXerces.cpp c/src/tools/checksig checksig.cpp c/src/tools/xtest xtest.cpp c/src/transformers TXFMBase.hpp TXFMBase64.cpp TXFMBase64.hpp TXFMC14n.cpp TXFMC14n.hpp TXFMChain.hpp TXFMDocObject.hpp TXFMEnvelope.hpp TXFMOutputFile.hpp TXFMParser.hpp TXFMSB.hpp TXFMSHA1.hpp TXFMURL.hpp TXFMXPath.cpp TXFMXPath.hpp TXFMXSL.cpp TXFMXSL.hpp c/src/utils XSECBinTXFMInputStream.hpp XSECPlatformUtils.hpp XSECSafeBuffer.hpp XSECSafeBufferFormatter.hpp XSECXPathNodeList.cpp Log: Java docs + memory cleaning Revision Changes Path 1.4 +3 -3 xml-security/c/src/dsig/DSIGKeyInfoX509.cpp Index: DSIGKeyInfoX509.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/dsig/DSIGKeyInfoX509.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DSIGKeyInfoX509.cpp 22 Feb 2003 08:47:23 -0000 1.3 +++ DSIGKeyInfoX509.cpp 1 Mar 2003 06:27:28 -0000 1.4 @@ -168,11 +168,11 @@ XSECnew(h, X509Holder); - h->mp_encodedX509 = certElt->getNodeValue(); - // Add to the list m_X509List.push_back(h); + + h->mp_encodedX509 = certElt->getNodeValue(); } } 1.7 +9 -7 xml-security/c/src/dsig/DSIGSignature.cpp Index: DSIGSignature.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/dsig/DSIGSignature.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- DSIGSignature.cpp 22 Feb 2003 08:47:23 -0000 1.6 +++ DSIGSignature.cpp 1 Mar 2003 06:27:28 -0000 1.7 @@ -125,13 +125,14 @@ } + Janitor<XSECCryptoBase64> j_b64(b64); + strncpy((char *) b64Str, (char *) b64SB.rawBuffer(), 1023); b64Str[1023] = '\0'; // Just in case b64->decodeInit(); outputLen = b64->decode((unsigned char *) b64Str, strlen((char *) b64Str), outputStr, 1024); outputLen += b64->decodeFinish(&outputStr[outputLen], 1024 - outputLen); - delete b64; // Compare @@ -212,6 +213,8 @@ } + Janitor<XSECCryptoBase64> j_b64(b64); + // Determine length to translate unsigned int size; @@ -231,7 +234,6 @@ b64->encodeInit(); outputLen = b64->encode((unsigned char *) raw, rawLen, b64Str, 1024); outputLen += b64->encodeFinish(&b64Str[outputLen], 1024 - outputLen); - delete b64; // Copy out @@ -529,7 +531,7 @@ mp_KeyInfoNode->release(); // No longer required - mp_KeyInfoNode = 0; + mp_KeyInfoNode = NULL; // Clear out the list m_keyInfoList.empty(); @@ -578,7 +580,7 @@ // Create the new element DSIGKeyInfoValue * v; - v = new DSIGKeyInfoValue(this); + XSECnew(v, DSIGKeyInfoValue(this)); mp_KeyInfoNode->appendChild(v->createBlankDSAKeyValue(P, Q, G, Y)); mp_KeyInfoNode->appendChild(mp_doc->createTextNode(DSIGConstants888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4s_unicodeStrNL)); @@ -596,7 +598,7 @@ DSIGKeyInfoX509 * x; - x = new DSIGKeyInfoX509(this); + XSECnew(x, DSIGKeyInfoX509(this)); mp_KeyInfoNode->appendChild(x->createBlankX509Data()); mp_KeyInfoNode->appendChild(mp_doc->createTextNode(DSIGConstants888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4s_unicodeStrNL)); @@ -614,7 +616,7 @@ DSIGKeyInfoName * n; - n = new DSIGKeyInfoName(this); + XSECnew(n, DSIGKeyInfoName(this)); mp_KeyInfoNode->appendChild(n->createBlankKeyName(name)); mp_KeyInfoNode->appendChild(mp_doc->createTextNode(DSIGConstants888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4s_unicodeStrNL)); 1.3 +5 -0 xml-security/c/src/dsig/DSIGSignedInfo.cpp Index: DSIGSignedInfo.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/dsig/DSIGSignedInfo.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DSIGSignedInfo.cpp 9 Feb 2003 11:13:47 -0000 1.2 +++ DSIGSignedInfo.cpp 1 Mar 2003 06:27:28 -0000 1.3 @@ -77,7 +77,10 @@ #include <xsec/utils/XSECDOMUtils.hpp> #include <xsec/dsig/DSIGSignature.hpp> +#include <xercesc/util/Janitor.hpp> + XSEC_USING_XERCES(DOMNamedNodeMap); +XSEC_USING_XERCES(Janitor); // Constructors and Destructors @@ -189,6 +192,7 @@ DSIGReference * ref; XSECnew(ref, DSIGReference(mp_parentSignature)); + Janitor<DSIGReference> j_ref(ref); DOMNode *refNode = ref->createBlankReference(URI, hm, type); @@ -197,6 +201,7 @@ mp_signedInfoNode->appendChild(mp_doc->createTextNode(DSIGConstants888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4s_unicodeStrNL)); // Add to the reference List + j_ref.release(); mp_referenceList->addReference(ref); return ref; 1.6 +5 -1 xml-security/c/src/dsig/DSIGTransformXPath.cpp Index: DSIGTransformXPath.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformXPath.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DSIGTransformXPath.cpp 21 Feb 2003 11:53:06 -0000 1.5 +++ DSIGTransformXPath.cpp 1 Mar 2003 06:27:28 -0000 1.6 @@ -130,6 +130,10 @@ // XPath transform XSECnew(x, TXFMXPath(mp_txfmNode->getOwnerDocument())); input->appendTxfm(x); + + // These can throw, but the TXFMXPath is now owned by the chain, so will + // be cleaned up down the calling stack. + x->setNameSpace(mp_NSMap); x->evaluateExpr(mp_txfmNode, m_expr); 1.3 +125 -13 xml-security/c/src/enc/XSECCryptoKeyDSA.hpp Index: XSECCryptoKeyDSA.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/enc/XSECCryptoKeyDSA.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECCryptoKeyDSA.hpp 9 Feb 2003 11:13:49 -0000 1.2 +++ XSECCryptoKeyDSA.hpp 1 Mar 2003 06:27:28 -0000 1.3 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -75,40 +73,154 @@ #include <xsec/enc/XSECCryptoKey.hpp> +/** + * \ingroup crypto + * @{ + */ + +/** + * \brief Interface class for DSA keys. + * + * The library uses classes derived from this to process DSA keys. + */ + class DSIG_EXPORT XSECCryptoKeyDSA : public XSECCryptoKey { public : - // Constructors/Destructors + /** @name Constructors and Destructors */ + //@{ XSECCryptoKeyDSA() {}; virtual ~XSECCryptoKeyDSA() {}; - // Generic key functions + //@} + + /** @name Key Interface methods */ + //@{ + + /** + * \brief Return the type of this key. + * + * For DSA keys, this allows people to determine whether this is a + * public key, private key or a key pair + */ virtual XSECCryptoKey888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4KeyType getKeyType() {return KEY_NONE;} - virtual XSECCryptoKey * clone() = 0; - // DSA Specific Functions + /** + * \brief Replicate key + */ - virtual void loadPBase64BigNums(const char * b64, unsigned int len) = 0; - virtual void loadQBase64BigNums(const char * b64, unsigned int len) = 0; - virtual void loadGBase64BigNums(const char * b64, unsigned int len) = 0; - virtual void loadYBase64BigNums(const char * b64, unsigned int len) = 0; - virtual void loadJBase64BigNums(const char * b64, unsigned int len) = 0; + virtual XSECCryptoKey * clone() = 0; - // Signature functions + //@} + + /** @name Mandatory DSA interface methods + * + * These classes are required by the library. + */ + //@{ + + /** + * \brief Verify a signature + * + * The library will call this function to validate a signature + * + * @param hashBuf Buffer containing the pre-calculated (binary) digest + * @param hashLen Length of the data in the digest buffer + * @param base64Signature Buffer containing the Base64 encoded signature + * @param sigLen Length of the data in the signature buffer + * @returns true if the signature was valid, false otherwise + */ virtual bool verifyBase64Signature(unsigned char * hashBuf, unsigned int hashLen, char * base64Signature, unsigned int sigLen) = 0; + /** + * \brief Create a signature + * + * The library will call this function to create a signature from + * a pre-calculated digest. The output signature is required to + * be Base64 encoded such that it can be placed directly into the + * XML document + * + * @param hashBuf Buffer containing the pre-calculated (binary) digest + * @param hashLen Number of bytes of hash in the hashBuf + * @param base64SignatureBuf Buffer to place the base64 encoded result + * in. + * @param base64SignatureBufLen Implementations need to ensure they do + * not write more bytes than this into the buffer + */ + virtual unsigned int signBase64Signature(unsigned char * hashBuf, unsigned int hashLen, char * base64SignatureBuf, unsigned int base64SignatureBufLen) = 0; + //@} + + /** @name Optional Interface methods + * + * These functions do not necessarily have to be implmented. They + * are used by XSECKeyInfoResolverDefault to try to create a key from + * KeyInfo elements without knowing anything else. + * + * If an interface class does not implement these functions, a simple + * stub that does nothing should be used. + */ + //@{ + + /** + * \brief Load P + * + * @param b64 Base64 encoded parameter - read from XML document + * @param len Length of the encoded string + */ + + virtual void loadPBase64BigNums(const char * b64, unsigned int len) = 0; + + /** + * \brief Load Q + * + * @param b64 Base64 encoded parameter - read from XML document + * @param len Length of the encoded string + */ + + virtual void loadQBase64BigNums(const char * b64, unsigned int len) = 0; + + /** + * \brief Load G + * + * @param b64 Base64 encoded parameter - read from XML document + * @param len Length of the encoded string + */ + + virtual void loadGBase64BigNums(const char * b64, unsigned int len) = 0; + + /** + * \brief Load Y + * + * @param b64 Base64 encoded parameter - read from XML document + * @param len Length of the encoded string + */ + + virtual void loadYBase64BigNums(const char * b64, unsigned int len) = 0; + + /** + * \brief Load J + * + * @param b64 Base64 encoded parameter - read from XML document + * @param len Length of the encoded string + */ + + virtual void loadJBase64BigNums(const char * b64, unsigned int len) = 0; + + //@} }; + +/** @} */ #endif /* XSECCRYPTOKEYDSA_INCLUDE */ 1.3 +66 -7 xml-security/c/src/enc/XSECCryptoKeyHMAC.hpp Index: XSECCryptoKeyHMAC.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/enc/XSECCryptoKeyHMAC.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECCryptoKeyHMAC.hpp 9 Feb 2003 11:13:49 -0000 1.2 +++ XSECCryptoKeyHMAC.hpp 1 Mar 2003 06:27:28 -0000 1.3 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -76,24 +74,85 @@ #include <xsec/enc/XSECCryptoKey.hpp> #include <xsec/utils/XSECSafeBuffer.hpp> +/** + * \ingroup crypto + * @{ + */ + +/** + * \brief Interface class for HMAC keys. + * + * The library uses classes derived from this to process HMAC keys. + */ + class DSIG_EXPORT XSECCryptoKeyHMAC : public XSECCryptoKey { public : - // Constructors/Destructors + /** @name Constructors and Destructors */ + //@{ XSECCryptoKeyHMAC() {}; virtual ~XSECCryptoKeyHMAC() {}; - virtual XSECCryptoKey * clone() = 0; + + //@} + + /** @name Key Interface methods */ + //@{ - // Generic key functions + /** + * \brief Return the type of this key. + * + * For DSA keys, this allows people to determine whether this is a + * public key, private key or a key pair + */ virtual XSECCryptoKey888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4KeyType getKeyType() {return KEY_HMAC;} - // HMAC Key functions + /** + * \brief Replicate key + */ + + virtual XSECCryptoKey * clone() = 0; + + //@} + + /** @name Optional Interface methods + * + * These functions do not necessarily have to be implmented. They + * are used by XSECKeyInfoResolverDefault to try to create a key from + * KeyInfo elements without knowing anything else. + * + * If an interface class does not implement these functions, a simple + * stub that does nothing should be used. + */ + + /** + * \brief Set the key + * + * Set the key from the buffer + * + * @param inBuf Buffer containing the key + * @param inLength Number of bytes of key in the buffer + */ virtual void setKey(unsigned char * inBuf, unsigned int inLength) = 0; + + /** + * \brief Get the key value + * + * Copy the key into the safeBuffer and return the number of bytes + * copied. + * + * @param outBuf Buffer to copy key into + * @returns number of bytes copied in + */ + virtual unsigned int getKey(safeBuffer &outBuf) = 0; + + //@} }; + +/** @} */ #endif /* XSECCRYPTOKEYHMAC_INCLUDE */ 1.3 +111 -11 xml-security/c/src/enc/XSECCryptoKeyRSA.hpp Index: XSECCryptoKeyRSA.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/enc/XSECCryptoKeyRSA.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECCryptoKeyRSA.hpp 9 Feb 2003 11:13:49 -0000 1.2 +++ XSECCryptoKeyRSA.hpp 1 Mar 2003 06:27:28 -0000 1.3 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -75,37 +73,139 @@ #include <xsec/enc/XSECCryptoKey.hpp> +/** + * \ingroup crypto + * @{ + */ + +/** + * \brief Interface class for RSA keys. + * + * The library uses classes derived from this to process RSA keys. + */ + + class DSIG_EXPORT XSECCryptoKeyRSA : public XSECCryptoKey { public : - // Constructors/Destructors - + /** @name Constructors and Destructors */ + //@{ + XSECCryptoKeyRSA() {}; virtual ~XSECCryptoKeyRSA() {}; - // Generic key functions + //@} + + /** @name Key Interface methods */ + //@{ + + /** + * \brief Return the type of this key. + * + * For RSA keys, this allows people to determine whether this is a + * public key, private key or a key pair + */ virtual XSECCryptoKey888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4KeyType getKeyType() {return KEY_NONE;} - virtual XSECCryptoKey * clone() = 0; + + /** + * \brief Replicate key + */ - // RSA Specific Functions + virtual XSECCryptoKey * clone() = 0; - virtual void loadPublicModulusBase64BigNums(const char * b64, unsigned int len) = 0; - virtual void loadPublicExponentBase64BigNums(const char * b64, unsigned int len) = 0; + //@} - // Signature functions + /** @name Mandatory RSA interface methods + * + * These classes are required by the library. + */ + //@{ + + /** + * \brief Verify a SHA1 PKCS1 encoded signature + * + * The library will call this function to validate an RSA signature + * The standard by default uses SHA1 in a PKCS1 encoding. + * + * @param hashBuf Buffer containing the pre-calculated (binary) digest + * @param hashLen Length of the data in the digest buffer + * @param base64Signature Buffer containing the Base64 encoded signature + * @param sigLen Length of the data in the signature buffer + * @returns true if the signature was valid, false otherwise + */ virtual bool verifySHA1PKCS1Base64Signature(const unsigned char * hashBuf, unsigned int hashLen, const char * base64Signature, unsigned int sigLen) = 0; + /** + * \brief Create a signature + * + * The library will call this function to create a signature from + * a pre-calculated digest. The output signature is required to + * be Base64 encoded such that it can be placed directly into the + * XML document + * + * This call needs to do a PKCS1 encode for a SHA-1 signature. + * + * @param hashBuf Buffer containing the pre-calculated (binary) digest + * @param hashLen Number of bytes of hash in the hashBuf + * @param base64SignatureBuf Buffer to place the base64 encoded result + * in. + * @param base64SignatureBufLen Implementations need to ensure they do + * not write more bytes than this into the buffer + */ + + virtual unsigned int signSHA1PKCS1Base64Signature(unsigned char * hashBuf, unsigned int hashLen, char * base64SignatureBuf, unsigned int base64SignatureBufLen) = 0; + //@} + + /** @name Optional Interface methods + * + * These functions do not necessarily have to be implmented. They + * are used by XSECKeyInfoResolverDefault to try to create a key from + * KeyInfo elements without knowing anything else. + * + * If an interface class does not implement these functions, a simple + * stub that does nothing should be used. + */ + + //@{ + + /** + * \brief Load the modulus + * + * Load the modulus from a Base64 encoded string + * + * param b64 A buffer containing the encoded string + * param len The length of the data in the buffer + */ + + virtual void loadPublicModulusBase64BigNums(const char * b64, unsigned int len) = 0; + + /** + * \brief Load the exponent + * + * Load the exponent from a Base64 encoded string + * + * param b64 A buffer containing the encoded string + * param len The length of the data in the buffer + */ + + virtual void loadPublicExponentBase64BigNums(const char * b64, unsigned int len) = 0; + + //@} + }; + +/** @} */ + #endif /* XSECCRYPTOKEYRSA_INCLUDE */ 1.3 +66 -9 xml-security/c/src/enc/XSECCryptoX509.hpp Index: XSECCryptoX509.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/enc/XSECCryptoX509.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECCryptoX509.hpp 9 Feb 2003 11:13:49 -0000 1.2 +++ XSECCryptoX509.hpp 1 Mar 2003 06:27:28 -0000 1.3 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -77,26 +75,85 @@ #include <xsec/enc/XSECCryptoKey.hpp> #include <xsec/utils/XSECSafeBuffer.hpp> +/** + * \ingroup crypto + * @{ + */ + +/** + * \brief Interface class for X509 certificates. + * + * The library uses classes derived from this to process X509 Certificates. + * + * Strictly speaking, this class is not required. However it is used by + * XSECKeyInfoResolverDefault to extract a key from a certificate in cases + * where the caller is not worried about the trust level of the certificate. + * + */ + + class DSIG_EXPORT XSECCryptoX509 { public : + /** @name Constructors and Destructors */ + //@{ + XSECCryptoX509() {}; virtual ~XSECCryptoX509() {}; - // load functions + //@} + /** @name Key Interface methods */ + //@{ + + /** + * \brief Return the type of the key stored in the certificate. + * + * The implementation is expected to extract the key from the + * certificate and determine the type. + * + */ - virtual void loadX509Base64Bin(const char * buf, unsigned int len) = 0; + virtual XSECCryptoKey888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4KeyType getPublicKeyType() = 0; - // Info functions + /** + * \brief Get a copy of the public key. + * + * The implementation should extract the key from the certificate, + * create an instance of the appropriate key type, and return it. + * + */ + + virtual XSECCryptoKey * clonePublicKey() = 0; + + //@} + + /** @name Load and Get the certificate */ + //@{ + + /** + * \brief Load a certificate into the object. + * + * Take a base64 DER encoded certificate and load. + * + * @param buf A buffer containing the Base64 encoded certificate + * @param len The number of bytes of data in the certificate. + */ - virtual XSECCryptoKey888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4KeyType getPublicKeyType() = 0; + virtual void loadX509Base64Bin(const char * buf, unsigned int len) = 0; + + /** + * \brief Get a Base64 DER encoded copy of the certificate + * + * @returns A safeBuffer containing the DER encoded certificate + */ - // Get functions - virtual XSECCryptoKey * clonePublicKey() = 0; // Return a copy (ownership of caller) virtual safeBuffer &getDEREncodingSB(void) = 0; // Get the DER string + + //@} }; +/** @} */ #endif /* XSECCRYPTOX509_INCLUDE */ 1.3 +2 -4 xml-security/c/src/enc/XSECKeyInfoResolver.hpp Index: XSECKeyInfoResolver.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/enc/XSECKeyInfoResolver.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECKeyInfoResolver.hpp 9 Feb 2003 11:13:49 -0000 1.2 +++ XSECKeyInfoResolver.hpp 1 Mar 2003 06:27:28 -0000 1.3 @@ -65,9 +65,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -79,7 +77,7 @@ #include <xsec/enc/XSECCryptoKey.hpp> /** - * @ingroup pubsig + * @ingroup interfaces */ /*\@{*/ 1.4 +11 -3 xml-security/c/src/enc/XSECKeyInfoResolverDefault.cpp Index: XSECKeyInfoResolverDefault.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/enc/XSECKeyInfoResolverDefault.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XSECKeyInfoResolverDefault.cpp 22 Feb 2003 08:47:24 -0000 1.3 +++ XSECKeyInfoResolverDefault.cpp 1 Mar 2003 06:27:28 -0000 1.4 @@ -74,6 +74,10 @@ #include <xsec/dsig/DSIGKeyInfoValue.hpp> #include <xsec/framework/XSECError.hpp> +#include <xercesc/util/Janitor.hpp> + +XSEC_USING_XERCES(Janitor); + // -------------------------------------------------------------------------------- // Construct/Destruct // -------------------------------------------------------------------------------- @@ -116,6 +120,8 @@ ret = NULL; const XMLCh * x509Str; XSECCryptoX509 * x509 = XSECPlatformUtils888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4g_cryptoProvider->X509(); + Janitor<XSECCryptoX509> j_x509(x509); + x509Str = ((DSIGKeyInfoX509 *) lst->item(i))->getCertificateItem(0); if (x509Str != 0) { @@ -128,8 +134,6 @@ ret = x509->clonePublicKey(); } - delete x509; - if (ret != NULL) return ret; @@ -140,6 +144,7 @@ { XSECCryptoKeyDSA * dsa = XSECPlatformUtils888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4g_cryptoProvider->keyDSA(); + Janitor<XSECCryptoKeyDSA> j_dsa(dsa); safeBuffer value; @@ -152,6 +157,7 @@ value << (*mp_formatter << ((DSIGKeyInfoValue *) lst->item(i))->getDSAY()); dsa->loadYBase64BigNums(value.rawCharBuffer(), strlen(value.rawCharBuffer())); + j_dsa.release(); return dsa; } break; @@ -160,6 +166,7 @@ { XSECCryptoKeyRSA * rsa = XSECPlatformUtils888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4g_cryptoProvider->keyRSA(); + Janitor<XSECCryptoKeyRSA> j_rsa(rsa); safeBuffer value; @@ -168,6 +175,7 @@ value << (*mp_formatter << ((DSIGKeyInfoValue *) lst->item(i))->getRSAExponent()); rsa->loadPublicExponentBase64BigNums(value.rawCharBuffer(), strlen(value.rawCharBuffer())); + j_rsa.release(); return rsa; } 1.3 +1 -1 xml-security/c/src/enc/XSECKeyInfoResolverDefault.hpp Index: XSECKeyInfoResolverDefault.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/enc/XSECKeyInfoResolverDefault.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECKeyInfoResolverDefault.hpp 9 Feb 2003 11:13:49 -0000 1.2 +++ XSECKeyInfoResolverDefault.hpp 1 Mar 2003 06:27:28 -0000 1.3 @@ -77,7 +77,7 @@ #include <xsec/enc/XSECKeyInfoResolver.hpp> /** - * @ingroup pubsig + * @ingroup interfaces */ /*\@{*/ 1.4 +6 -7 xml-security/c/src/enc/OpenSSL/OpenSSLCryptoKeyRSA.cpp Index: OpenSSLCryptoKeyRSA.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/enc/OpenSSL/OpenSSLCryptoKeyRSA.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- OpenSSLCryptoKeyRSA.cpp 22 Feb 2003 08:47:24 -0000 1.3 +++ OpenSSLCryptoKeyRSA.cpp 1 Mar 2003 06:27:28 -0000 1.4 @@ -73,6 +73,10 @@ #include <xsec/enc/XSECCryptoException.hpp> #include <xsec/framework/XSECError.hpp> +#include <xercesc/util/Janitor.hpp> + +XSEC_USING_XERCES(ArrayJanitor); + #include <memory.h> // Define OID for SHA-1 hash @@ -225,6 +229,7 @@ // Decrypt will always be longer than (RSA_len(key) - 11) decryptBuf = new unsigned char [RSA_size(mp_rsaKey)]; + ArrayJanitor<unsigned char> j_decryptBuf(decryptBuf); // Note at this time only supports PKCS1 padding // As that is what is defined in the standard. @@ -241,14 +246,12 @@ if (decryptSize < 0) { - delete[] decryptBuf; throw XSECCryptoException(XSECCryptoException888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4RSAError, "OpenSSL:RS888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4verify() - Error decrypting signature"); } if (decryptSize != (int) (sha1OIDLen + hashLen)) { - delete[] decryptBuf; return false; } @@ -257,7 +260,6 @@ if (sha1OID[t] != decryptBuf[t]) { - delete[] decryptBuf; return false; } @@ -268,7 +270,6 @@ if (hashBuf[t-sha1OIDLen] != decryptBuf[t]) { - delete[] decryptBuf; return false; } @@ -276,8 +277,6 @@ } // All OK - delete[] decryptBuf; - return true; } 1.3 +1 -3 xml-security/c/src/framework/XSECDefs.hpp Index: XSECDefs.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/framework/XSECDefs.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECDefs.hpp 9 Feb 2003 11:13:50 -0000 1.2 +++ XSECDefs.hpp 1 Mar 2003 06:27:29 -0000 1.3 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ 1.3 +15 -4 xml-security/c/src/framework/XSECError.hpp Index: XSECError.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/framework/XSECError.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECError.hpp 9 Feb 2003 11:13:50 -0000 1.2 +++ XSECError.hpp 1 Mar 2003 06:27:29 -0000 1.3 @@ -60,21 +60,32 @@ /* * XSEC * - * XSECError := General class for handling errors + * XSECError := General include file for handling errors * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ #include <xsec/framework/XSECDefs.hpp> #include <xsec/framework/XSECException.hpp> +/** + * @ingroup pubsig + * @{ + */ + +/** + * \brief Error strings + * + * An array that can be used to obtain an error string associated with + * an exception number. + */ + extern char * XSECExceptionStrings []; +/** @} */ #if defined (_WIN32) && defined (_DEBUG) 1.4 +2 -4 xml-security/c/src/framework/XSECException.hpp Index: XSECException.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/framework/XSECException.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XSECException.hpp 12 Feb 2003 11:21:03 -0000 1.3 +++ XSECException.hpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -220,9 +218,9 @@ /* Unimplemented Constructor */ XSECException(); - /*\@}*/ }; +/*\@}*/ #endif /* XSECEXCEPTION_INCLUDE */ 1.4 +3 -3 xml-security/c/src/framework/XSECProvider.cpp Index: XSECProvider.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/framework/XSECProvider.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XSECProvider.cpp 9 Feb 2003 11:13:50 -0000 1.3 +++ XSECProvider.cpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -65,9 +65,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -163,6 +161,8 @@ ++i; if (i == m_activeSignatures.end()) { + + m_providerMutex.unlock(); throw XSECException(XSECException888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4ProviderError, "Attempt to release a signature that was not created by this provider"); 1.4 +2 -0 xml-security/c/src/framework/XSECProvider.hpp Index: XSECProvider.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/framework/XSECProvider.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XSECProvider.hpp 9 Feb 2003 11:13:50 -0000 1.3 +++ XSECProvider.hpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -230,4 +230,6 @@ XERCES_CPP_NAMESPACE_QUALIFIER XMLMutex m_providerMutex; }; +/** @} */ + #endif /* XSECPROVIDER_INCLUDE */ 1.3 +9 -11 xml-security/c/src/framework/XSECURIResolverXerces.cpp Index: XSECURIResolverXerces.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/framework/XSECURIResolverXerces.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECURIResolverXerces.cpp 9 Feb 2003 11:13:50 -0000 1.2 +++ XSECURIResolverXerces.cpp 1 Mar 2003 06:27:29 -0000 1.3 @@ -74,7 +74,7 @@ #include <xsec/framework/XSECDefs.hpp> #include <xsec/framework/XSECURIResolverXerces.hpp> -#include <xsec/framework/XSECException.hpp> +#include <xsec/framework/XSECError.hpp> #include <xercesc/framework/URLInputSource.hpp> #include <xercesc/util/XMLString.hpp> @@ -98,13 +98,13 @@ } else - mp_baseURI = 0; + mp_baseURI = NULL; }; XSECURIResolverXerces888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4~XSECURIResolverXerces() { - if (mp_baseURI != 0) + if (mp_baseURI != NULL) delete[] mp_baseURI; } @@ -123,19 +123,17 @@ BinInputStream * is; // To handle the actual input - if (mp_baseURI == 0) - URLS = new URLInputSource(XMLURL(uri)); - else - URLS = new URLInputSource(XMLURL(XMLURL(mp_baseURI), uri)); + if (mp_baseURI == 0) { + XSECnew(URLS, URLInputSource(XMLURL(uri))); + } + else { + XSECnew(URLS, URLInputSource(XMLURL(XMLURL(mp_baseURI), uri))); + } // makeStream can (and is quite likely to) throw an exception Janitor<URLInputSource> j_URLS(URLS); is = URLS->makeStream(); - - j_URLS.release(); - - delete URLS; if (is == NULL) { 1.10 +12 -9 xml-security/c/src/tools/checksig/checksig.cpp Index: checksig.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/tools/checksig/checksig.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- checksig.cpp 23 Feb 2003 08:39:+1-706-882-4860.9 +++ checksig.cpp 1 Mar 2003 06:27:29 -0000 1.10 @@ -422,14 +422,6 @@ _CrtMemState s1, s2, s3; - // Send all reports to STDOUT - _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE ); - _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT ); - _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE ); - _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT ); - _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE ); - _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT ); - // At this point we are about to start really using XSEC, so // Take a "before" checkpoing @@ -471,6 +463,17 @@ _CrtMemCheckpoint( &s2 ); if ( _CrtMemDifference( &s3, &s1, &s2 ) ) { + + // Send all reports to STDOUT + _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT ); + + // Dumpy memory stats + _CrtMemDumpAllObjectsSince( &s3 ); _CrtMemDumpStatistics( &s3 ); } 1.4 +8 -20 xml-security/c/src/tools/xtest/xtest.cpp Index: xtest.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/tools/xtest/xtest.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- xtest.cpp 22 Feb 2003 08:47:24 -0000 1.3 +++ xtest.cpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -65,12 +65,11 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ - + +#include <xsec/framework/XSECDefs.hpp> #include <cassert> @@ -84,7 +83,6 @@ #include <xercesc/framework/XMLFormatter.hpp> #include <xercesc/dom/DOM.hpp> -//#include <xercesc/dom/DOMParser.hpp> #include <xercesc/util/XMLException.hpp> #include <xsec/transformers/TXFMOutputFile.hpp> @@ -96,17 +94,7 @@ #ifndef XSEC_NO_XALAN -#include <Include/PlatformDefinitions.hpp> -#include <XalanDOM/XalanDocument.hpp> -#include <XercesParserLiaison/XercesDocumentBridge.hpp> -#include <XalanDOM/XalanElement.hpp> -#include <XPath/XObject.hpp> #include <XPath/XPathEvaluator.hpp> -#include <XPath/NodeRefList.hpp> -#include <XPath/XalanXPathException.hpp> -#include <XalanSourceTree/XalanSourceTreeDOMSupport.hpp> -#include <XalanSourceTree/XalanSourceTreeInit.hpp> -#include <XalanSourceTree/XalanSourceTreeParserLiaison.hpp> #include <XalanTransformer/XalanTransformer.hpp> XALAN_USING_XALAN(XPathEvaluator) @@ -129,16 +117,16 @@ #include <xsec/dsig/DSIGKeyInfoX509.hpp> #include <xsec/dsig/DSIGKeyInfoName.hpp> -/* - * Because of all the characters, it's easiest to put the entire program - * in the Xerces namespace - */ - using st888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4ostream; using st888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4cout; using st888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4cerr; using st888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4endl; using st888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4flush; + +/* + * Because of all the characters, it's easiest to put the entire program + * in the Xerces namespace + */ XERCES_CPP_NAMESPACE_USE 1.5 +19 -1 xml-security/c/src/transformers/TXFMBase.hpp Index: TXFMBase.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMBase.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- TXFMBase.hpp 22 Feb 2003 08:47:24 -0000 1.4 +++ TXFMBase.hpp 1 Mar 2003 06:27:29 -0000 1.5 @@ -84,6 +84,22 @@ class TXFMChain; +/** @ingroup internal + * @{ + */ + +/** + * \brief Base class for transformers + * + * Transformers are internal classes within the xml-security-c library + * that actually perform the transformations. + * + * Users interface with the library should use the DSIGTransform classes, + * which define the DOM nodes and allow users to manipulate the actual + * transform defined. + */ + + class DSIG_EXPORT TXFMBase { protected: @@ -163,5 +179,7 @@ TXFMBase(); }; + +/** @} */ #endif /* #define TXFMBASE_INCLUDE */ 1.3 +2 -27 xml-security/c/src/transformers/TXFMBase64.cpp Index: TXFMBase64.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMBase64.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TXFMBase64.cpp 9 Feb 2003 11:13:51 -0000 1.2 +++ TXFMBase64.cpp 1 Mar 2003 06:27:29 -0000 1.3 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -76,29 +74,6 @@ #include <xsec/utils/XSECPlatformUtils.hpp> #include <xsec/framework/XSECException.hpp> -// Local function - -unsigned int cleanBuffer(unsigned char *buf, unsigned int bytes) { - - // Take an input buffer and "clean" it so that we can handle the Base64 transform OK - - unsigned char dest[2050]; - - unsigned int j = 0; - - for (unsigned int i = 0; i < bytes; ++i) { - - if (buf[i] != '\r' && buf[i] != '\n') - dest[j++] = buf[i]; - - } - - memcpy(buf, dest, j); - - return j; - -} - TXFMBas888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4TXFMBase64(DOMDocument *doc) : TXFMBase(doc) { m_complete = false; // Nothing yet to output @@ -118,7 +93,7 @@ TXFMBas888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4~TXFMBase64() { - if (mp_b64) + if (mp_b64 != NULL) delete mp_b64; }; 1.4 +9 -2 xml-security/c/src/transformers/TXFMBase64.hpp Index: TXFMBase64.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMBase64.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TXFMBase64.hpp 22 Feb 2003 08:47:24 -0000 1.3 +++ TXFMBase64.hpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -73,7 +73,13 @@ #include <xsec/transformers/TXFMBase.hpp> #include <xsec/enc/XSECCryptoBase64.hpp> -// Openssl includes +/** @ingroup internal + * @{ + */ + +/** + * \brief Transformer to handle base64 transforms + */ class DSIG_EXPORT TXFMBase64 : public TXFMBase { @@ -111,3 +117,4 @@ TXFMBase64(); }; +/** @} */ 1.5 +4 -4 xml-security/c/src/transformers/TXFMC14n.cpp Index: TXFMC14n.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMC14n.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- TXFMC14n.cpp 21 Feb 2003 11:53:08 -0000 1.4 +++ TXFMC14n.cpp 1 Mar 2003 06:27:29 -0000 1.5 @@ -120,7 +120,7 @@ case TXFMBas888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4DOM_NODE_DOCUMENT : - mp_c14n = new XSECC14n20010315(input->getDocument()); + XSECnew(mp_c14n, XSECC14n20010315(input->getDocument())); // Expand name spaces input->expandNameSpaces(); @@ -129,13 +129,13 @@ case TXFMBas888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4DOM_NODE_DOCUMENT_NODE : case TXFMBas888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4DOM_NODE_DOCUMENT_FRAGMENT : - mp_c14n = new XSECC14n20010315(input->getDocument(), input->getFragmentNode()); + XSECnew(mp_c14n, XSECC14n20010315(input->getDocument(), input->getFragmentNode())); input->expandNameSpaces(); break; case TXFMBas888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4DOM_NODE_XPATH_NODESET : - mp_c14n = new XSECC14n20010315(input->getDocument()); + XSECnew(mp_c14n, XSECC14n20010315(input->getDocument())); mp_c14n->setXPathMap(input->getXPathNodeList()); break; 1.4 +11 -1 xml-security/c/src/transformers/TXFMC14n.hpp Index: TXFMC14n.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMC14n.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TXFMC14n.hpp 22 Feb 2003 08:47:24 -0000 1.3 +++ TXFMC14n.hpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -73,6 +73,14 @@ #include <xsec/canon/XSECC14n20010315.hpp> #include <xsec/utils/XSECNameSpaceExpander.hpp> + /** @ingroup internal + * @{ + */ + +/** + * \brief Transformer to handle canonicalisation transforms + */ + class DSIG_EXPORT TXFMC14n : public TXFMBase { private: @@ -111,3 +119,5 @@ private: TXFMC14n(); }; + +/** @} */ 1.2 +13 -1 xml-security/c/src/transformers/TXFMChain.hpp Index: TXFMChain.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMChain.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TXFMChain.hpp 21 Feb 2003 11:53:08 -0000 1.1 +++ TXFMChain.hpp 1 Mar 2003 06:27:29 -0000 1.2 @@ -76,6 +76,16 @@ class TXFMBase; +/** @ingroup internal + * @{ + */ + +/** + * \brief A holder class to take care of a chain of internal + * transformer objects. + */ + + class DSIG_EXPORT TXFMChain { public: @@ -103,5 +113,7 @@ inline TXFMBase * TXFMChain888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4getLastTxfm(void) {return mp_currentTxfm;} + +/** @} */ #endif /* TXFMCHAIN_INCLUDE */ 1.3 +12 -3 xml-security/c/src/transformers/TXFMDocObject.hpp Index: TXFMDocObject.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMDocObject.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TXFMDocObject.hpp 9 Feb 2003 11:13:51 -0000 1.2 +++ TXFMDocObject.hpp 1 Mar 2003 06:27:29 -0000 1.3 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -77,6 +75,15 @@ #include <xercesc/dom/DOM.hpp> +/** @ingroup internal + * @{ + */ + +/** + * \brief Transformer that defines a document start to a transform chain + */ + + class DSIG_EXPORT TXFMDocObject : public TXFMBase { public: @@ -114,3 +121,5 @@ TXFMDocObject(); }; + +/** @} */ 1.3 +11 -3 xml-security/c/src/transformers/TXFMEnvelope.hpp Index: TXFMEnvelope.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMEnvelope.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TXFMEnvelope.hpp 9 Feb 2003 11:13:51 -0000 1.2 +++ TXFMEnvelope.hpp 1 Mar 2003 06:27:29 -0000 1.3 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -79,6 +77,14 @@ #include <xercesc/dom/DOM.hpp> +/** @ingroup internal + * @{ + */ + +/** + * \brief Transformer to handle envelope transforms + */ + class DSIG_EXPORT TXFMEnvelope : public TXFMBase { private: @@ -115,3 +121,5 @@ private: TXFMEnvelope(); }; + +/** @} */ 1.4 +17 -2 xml-security/c/src/transformers/TXFMOutputFile.hpp Index: TXFMOutputFile.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMOutputFile.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TXFMOutputFile.hpp 22 Feb 2003 08:47:24 -0000 1.3 +++ TXFMOutputFile.hpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -78,6 +78,21 @@ using st888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4ofstream; +/** @ingroup internal + * @{ + */ + +/** + * \brief Transformer to handle file output transforms + * + * This transformer simply reads from the input transform + * and passes the bytes to the transformer that reads from it. + * + * On the way through, the writes are written to an output + * stream (a file). This is primarily a debugging tool. + */ + + class DSIG_EXPORT TXFMOutputFile : public TXFMBase { private: @@ -114,6 +129,6 @@ TXFMOutputFile(); }; - +/** @} */ #endif /* #define TXFMOUTPUTFILE_INCLUDE */ 1.3 +19 -1 xml-security/c/src/transformers/TXFMParser.hpp Index: TXFMParser.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMParser.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TXFMParser.hpp 21 Feb 2003 11:53:08 -0000 1.2 +++ TXFMParser.hpp 1 Mar 2003 06:27:29 -0000 1.3 @@ -73,6 +73,22 @@ #include <xsec/transformers/TXFMBase.hpp> +/** @ingroup internal + * @{ + */ + +/** + * \brief Transformer to handle move between bytes and DOM + * + * THere is no "parser" transformation defined in DSIG, however there + * is a requirement to be able to move between a byte stream and + * a list of nodes. For example, if a ref URI points to an external + * document, and the first transformation on that document is an + * XPath expression, then the library uses this class to translate the + * BYTE stream to a DOM document. + */ + + class DSIG_EXPORT TXFMParser : public TXFMBase { public: @@ -111,5 +127,7 @@ DOMDocument * mp_parsedDoc; }; + +/** @} */ #endif /* #define TXFMPARSER_INCLUDE */ 1.4 +9 -3 xml-security/c/src/transformers/TXFMSB.hpp Index: TXFMSB.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMSB.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TXFMSB.hpp 22 Feb 2003 08:47:24 -0000 1.3 +++ TXFMSB.hpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -64,14 +64,20 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ #include <xsec/transformers/TXFMBase.hpp> #include <xsec/utils/XSECSafeBuffer.hpp> + +/** @ingroup internal + * @{ + */ + +/** + * \brief Base transformer to start a chain from a safeBuffer + */ class DSIG_EXPORT TXFMSB : public TXFMBase { 1.4 +10 -3 xml-security/c/src/transformers/TXFMSHA1.hpp Index: TXFMSHA1.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMSHA1.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TXFMSHA1.hpp 22 Feb 2003 08:47:24 -0000 1.3 +++ TXFMSHA1.hpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -75,6 +73,14 @@ #include <xsec/transformers/TXFMBase.hpp> #include <xsec/enc/XSECCryptoProvider.hpp> +/** @ingroup internal + * @{ + */ + +/** + * \brief Transformer to handle create a SHA-1 hash from a chain + */ + class DSIG_EXPORT TXFMSHA1 : public TXFMBase { private: @@ -111,3 +117,4 @@ TXFMSHA1(); }; +/** @} */ 1.4 +10 -1 xml-security/c/src/transformers/TXFMURL.hpp Index: TXFMURL.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMURL.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TXFMURL.hpp 22 Feb 2003 08:47:24 -0000 1.3 +++ TXFMURL.hpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -75,6 +75,14 @@ #include <xercesc/util/BinInputStream.hpp> +/** @ingroup internal + * @{ + */ + +/** + * \brief Base transformer for URL inputs to chains + */ + class DSIG_EXPORT TXFMURL : public TXFMBase { private: @@ -111,3 +119,4 @@ private : TXFMURL(); }; +/** @} */ 1.7 +3 -2 xml-security/c/src/transformers/TXFMXPath.cpp Index: TXFMXPath.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMXPath.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- TXFMXPath.cpp 22 Feb 2003 08:47:24 -0000 1.6 +++ TXFMXPath.cpp 1 Mar 2003 06:27:29 -0000 1.7 @@ -226,7 +226,8 @@ TXFMXPath888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4~TXFMXPath() { - delete formatter; + if (formatter != NULL) + delete formatter; } 1.4 +11 -1 xml-security/c/src/transformers/TXFMXPath.hpp Index: TXFMXPath.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMXPath.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TXFMXPath.hpp 17 Feb 2003 11:21:03 -0000 1.3 +++ TXFMXPath.hpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -99,6 +99,15 @@ #ifndef XSEC_NO_XPATH +/** @ingroup internal + * @{ + */ + +/** + * \brief Transformer to handle XPath transforms + */ + + class DSIG_EXPORT TXFMXPath : public TXFMBase { private: @@ -146,3 +155,4 @@ }; #endif +/** @} */ 1.5 +7 -7 xml-security/c/src/transformers/TXFMXSL.cpp Index: TXFMXSL.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMXSL.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- TXFMXSL.cpp 22 Feb 2003 08:47:25 -0000 1.4 +++ TXFMXSL.cpp 1 Mar 2003 06:27:29 -0000 1.5 @@ -80,9 +80,11 @@ #include <xercesc/dom/DOMImplementationLS.hpp> #include <xercesc/parsers/XercesDOMParser.hpp> #include <xercesc/framework/MemBufInputSource.hpp> +#include <xercesc/util/Janitor.hpp> XSEC_USING_XERCES(XercesDOMParser); XSEC_USING_XERCES(MemBufInputSource); +XSEC_USING_XERCES(Janitor); #include <iostream> #include <strstream> @@ -199,8 +201,6 @@ // Set up iostreams for input st888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4istrstream theXMLStream((char *) sbInDoc.rawBuffer(), strlen((char *) sbInDoc.rawBuffer())); st888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4istrstream theXSLStream((char *) sbStyleSheet.rawBuffer(), strlen((char *) sbStyleSheet.rawBuffer())); - //st888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4istringstream theXMLStream((char *) sbInDoc.rawBuffer(), strlen((char *) sbInDoc.rawBuffer())); - //st888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4istringstream theXSLStream((char *) sbStyleSheet.rawBuffer(), strlen((char *) sbStyleSheet.rawBuffer())); // Now resolve @@ -215,6 +215,8 @@ // Now use xerces to "re parse" this back into a DOM_Nodes document XercesDOMParser * parser = new XercesDOMParser; + Janitor<XercesDOMParser> j_parser(parser); + parser->setDoNamespaces(true); parser->setCreateEntityReferenceNodes(true); parser->setDoSchema(true); @@ -222,6 +224,7 @@ // Create an input source MemBufInputSource* memIS = new MemBufInputSource ((const XMLByte*) txoh.buffer.rawBuffer(), txoh.offset, "XSECMem"); + Janitor<MemBufInputSource> j_memIS(memIS); int errorCount = 0; @@ -232,10 +235,7 @@ docOut = parser->adoptDocument(); - // Clean up - - delete memIS; - delete parser; + // Janitors clean up } 1.4 +11 -1 xml-security/c/src/transformers/TXFMXSL.hpp Index: TXFMXSL.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/transformers/TXFMXSL.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TXFMXSL.hpp 22 Feb 2003 08:47:25 -0000 1.3 +++ TXFMXSL.hpp 1 Mar 2003 06:27:29 -0000 1.4 @@ -96,6 +96,14 @@ #ifndef XSEC_NO_XSLT +/** @ingroup internal + * @{ + */ + +/** + * \brief Transformer to handle XSLT transforms + */ + class DSIG_EXPORT TXFMXSL : public TXFMBase { private: @@ -152,5 +160,7 @@ TXFMXSL(); }; + +/** @} */ #endif /* No XSLT */ 1.4 +1 -0 xml-security/c/src/utils/XSECBinTXFMInputStream.hpp Index: XSECBinTXFMInputStream.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/utils/XSECBinTXFMInputStream.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XSECBinTXFMInputStream.hpp 21 Feb 2003 11:53:09 -0000 1.3 +++ XSECBinTXFMInputStream.hpp 1 Mar 2003 06:27:30 -0000 1.4 @@ -82,6 +82,7 @@ /** * @defgroup interfaces Classes that interface applications to XML Security C. + * * These classes and files provide interfaces to allow the XSEC library to link * to other libraries or to allow other libraries/applications to interface * to XSEC. 1.4 +64 -6 xml-security/c/src/utils/XSECPlatformUtils.hpp Index: XSECPlatformUtils.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/utils/XSECPlatformUtils.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XSECPlatformUtils.hpp 22 Feb 2003 08:47:26 -0000 1.3 +++ XSECPlatformUtils.hpp 1 Mar 2003 06:27:30 -0000 1.4 @@ -78,20 +78,78 @@ #include <stdio.h> +/** + * @ingroup pubsig + * @{ + */ + +/** + * \brief High level library interface class. + * + * This class is used primarily to initialise the library and + * communicate high level parameters that will be common to all + * objects from the class in any given session. + * + * It is primarily a static class. + */ + class DSIG_EXPORT XSECPlatformUtils { public : - // Static data used by all of XSEC - static int initCount; // Initialised? - static XSECCryptoProvider * g_cryptoProvider; // The provider we are using + /** + * \brief Number of times initialise has been called + * + * initCount can be read by any class or function to determine how + * many times the library has been initialised. + */ + + static int initCount; + + /** + * \brief The main cryptographic provider + * + * This pointer can be used to determine the primary crypto + * provider registered in the library. + * + * Individual signatures can over-ride this default. + * + */ + + static XSECCryptoProvider * g_cryptoProvider; - // Member functions + + /** + * \Initialise the library + * + * <b>Must</b> be called prior to using any functions in the library. + * + * Primarily sets up static variables used by all classes in the + * library. + * + * @param p A pointer to a XSECCryptoProvider object that the library + * should use for cryptographic functions. If p == NULL, the library + * will instantiate an OpenSSLCryptoProvider object. + */ static void Initialise(XSECCryptoProvider * p = NULL); + + /** + * \brief Terminate + * + * Should be called prior to any program exist to allow the library + * to cleanly delete any memory associated with the library as a whole. + * + * @note Do not call this function while any xml-security-c object + * remain instantiated. The results of doing so is undefined, and could + * cause bad results. + */ + static void Terminate(void); }; + +/** @} */ #endif /* XSECPLATFORMUTILS_INCLUDE */ 1.4 +25 -1 xml-security/c/src/utils/XSECSafeBuffer.hpp Index: XSECSafeBuffer.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/utils/XSECSafeBuffer.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XSECSafeBuffer.hpp 22 Feb 2003 08:47:26 -0000 1.3 +++ XSECSafeBuffer.hpp 1 Mar 2003 06:27:30 -0000 1.4 @@ -75,8 +75,30 @@ #include <xsec/framework/XSECDefs.hpp> #include <xercesc/util/XMLString.hpp> +/** + * \ingroup internal + * @{ + */ + + #define DEFAULT_SAFE_BUFFER_SIZE 1024 // Default size for a safe Buffer + /** + *\brief Manage buffers of arbitrary size + * + * The safeBuffer class is used internally in the library + * to manage buffers of bytes or UTF-16 characters. + * + * It's a fairly innefficient class, as buffers are continually + * being wrapped, coppied and enlarged, but given the nature of the + * library, a single class that manipulates buffers of variable + * size was felt to be preferable, + * + * The safeBuffer is not exposed through interface classes that + * might be used by external functions. In these cases, a + * pointer to a XMLCh * buffer is used by preference. + */ + class CANON_EXPORT safeBuffer { public: @@ -170,6 +192,8 @@ // For XMLCh manipulation static size_t size_XMLCh; }; + +/** @} */ #endif /* XSECSAFEBUFFER_INCLUDE */ 1.3 +13 -5 xml-security/c/src/utils/XSECSafeBufferFormatter.hpp Index: XSECSafeBufferFormatter.hpp =================================================================== RCS file: /home/cvs/xml-security/c/src/utils/XSECSafeBufferFormatter.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECSafeBufferFormatter.hpp 9 Feb 2003 11:13:52 -0000 1.2 +++ XSECSafeBufferFormatter.hpp 1 Mar 2003 06:27:30 -0000 1.3 @@ -64,9 +64,7 @@ * * Author(s): Berin Lautenbach * - * $ID$ - * - * $LOG$ + * $Id$ * */ @@ -84,6 +82,10 @@ XSEC_USING_XERCES(XMLFormatter); XSEC_USING_XERCES(XMLFormatTarget); +/** @ingroup internal + * @{ + */ + class sbFormatTarget : public XMLFormatTarget { public: @@ -118,9 +120,13 @@ }; -// For easy copying to a buffer +/** + * \brief Formatter for outputting to a safeBuffer + * + * The XSECSafeBufferFormatter class is used as an internal class + * to perform encoding translations with a safeBuffer as a target + */ -//XMLFormatter& operator<< (XMLFormatter& strm, const DOMString& s); class XSECSafeBufferFormatter { @@ -180,5 +186,7 @@ XSECSafeBufferFormatter() {}; }; + +/** @} */ #endif /* XSECSAFEBUFFERFORMATTER_INCLUDE */ 1.3 +2 -0 xml-security/c/src/utils/XSECXPathNodeList.cpp Index: XSECXPathNodeList.cpp =================================================================== RCS file: /home/cvs/xml-security/c/src/utils/XSECXPathNodeList.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSECXPathNodeList.cpp 9 Feb 2003 11:13:52 -0000 1.2 +++ XSECXPathNodeList.cpp 1 Mar 2003 06:27:30 -0000 1.3 @@ -194,6 +194,8 @@ else if (mp_last == NULL) { + delete tmp; + throw XSECException(XSECException888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4InternalError, "XSECXPathNodeList has an element that is incorrectly linked"); From zlewis@example.net Sat Mar 1 11:34:09 2003 Return-Path: <zlewis@example.net> Mailing-List: contact zlewis@example.net; run by ezmlm Delivered-To: mailing list zlewis@example.net Received: (qmail 52174 invoked from network); 1 Mar 2003 11:34:09 -0000 Received: from icarus.apache.org (83.161.120.155) by daedalus.apache.org with SMTP; 1 Mar 2003 11:34:09 -0000 Received: (qmail 95002 invoked by uid 1627); 1 Mar 2003 11:34:09 -0000 Date: 1 Mar 2003 11:34:09 -0000 Message-ID: <zlewis@example.net> From: zlewis@example.net To: zlewis@example.net Subject: cvs commit: xml-security ReleaseProcess.txt X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N blautenb 2003/03/01 03:34:09 Added: . ReleaseProcess.txt Log: First Draft Revision Changes Path 1.1 xml-security/ReleaseProcess.txt Index: ReleaseProcess.txt =================================================================== Release Instructions -------------------- V0.1Draft This document provides an outline of how to perform a release for the C or Java XML-Security libraries. (Hosted at http://xml.apache.org/xml-security.) Document Authors : Berin Lautenbach NOTE: Based on ReleaseInstructions.txt from the Ant CVS Announce Release Plan --------------------- Propose a release plan for vote. This should set out the timetable for the release under ideal circumstances. The level of bugs reported can delay things. Generally, give a few weeks to "close" the source tree to further changes so people can finalise contributions, etc. At this time, the first beta will be cut and there will be then a period of beta testing, usually 1 month but this should be flexible. Note that any mention of a deadline causes a flood of bug fixes, new tasks, etc. This needs to be managed as best it can. Some fixes will be applied, others held over. Make this clear in the release plan. The committers and particularly the release manager will need to make judgement calls here. Anything too "big" is likely to be held over. Create Branches in CVS ---------------------- Once the freeze date arrives, create a branch for the release builds. You will need to be comfortable in handling CVS branches with mutliple merge-backs to the main branch and even selected merges from the the main branch to the release branch. For more information on performing branching and merging, please visit http://www.durak.org/cvswebsites/doc/cvs_54.php#SEC54 Label such branches XMLSECC_11_BRANCH (for C library branches) or XMLSECJ_11_BRANCH (for Java library branches). Once the branch is setup, the version numbers in CVS are changed. On the branch, the build.xml (Java) or configure.ac (C++) version becomes 1.1Beta1 while the main branch is updated to 1.2alpha. Build the Archives ------------------ Ensure your GPG/PGP key is in the keys.txt file in the CVS. Export the xml-security module to a clean directory : cvs export xml-security Label the branch XMLSECC_11_B1 or XMLSECJ_11_B1 ** TODO - Create make process to build distributions and add commands here ** ** Java guys - what are the instructions to build the archives? ** Sign the archives ----------------- Sign the distribution files using the following simple script #!/bin/sh for i in distribution/* do echo "Signing " $i gpg -a -b --force-v3-sigs $i done Try to do this on Linux since the gpg signatures generated on Windows may cause some PGP users problems verifying signatures even though they seem OK. Also make sure you have sent the key that you use to a public keyserver. Transfer to Apache Web Site --------------------------- The beta distribution is now ready to go. Bundle it up into a tar.gz file and scp to your apache account. ** Do we have a standard set of WHATSNEW/README files? The would be updated here ** Once this is uploaded, unpack things, create the release directory, something like v1.1Beta1, push the release and README files into this directory. The files should go to /www/xml.apache.org/builds/xml-security/release on daedalus. ** Is the above correct? ** Address the available release tags in BugZilla. Create a new tag 1.1Beta1 and a 1.2alpha. Assign all existing 1.1alpha bugs to one of these release labels. Test the distribtion -------------------- Once that is done, do a test download to make sure everything is OK. A common problem may be: * the file's mime type is not recognized and is interpreted as text/plain. Fix it by using some .htaccess magic (AddEncoding stuff) * Your gz.asc files are not being displayed properly (RemoveEncoing stuff) ** What tests should be done to validate archives? ** If it looks OK, announce it on security-dev. After a few days pass and there are no major problems, a wider announcement is made (main xml website, zlewis@example.net, etc). ** Any other files/lists to update? ** Announce beta zlewis@example.net (Do we have an entry?) As problems in the beta are discovered, there may be a need for one or more subsequent betas. The release manager makes this call. Each time, the versions are updated and the above process is repeated. Try not to have too many betas. Try to advertise the need for testing of the betas as much as possible. This should eliminate the need to release minor patch versions. To monitor the number of downloads, look at the access_log file under /usr/local/apache2/logs When the final beta is considered OK, propose a vote on ant-dev to officially adopt the latest beta as the XML-Security-C/J 1.1 release. If it is passed, (it usually does,) this would be labelled XMLSECC_11 or XMLSECJ_11 and built in a similar fashion to the above process. BUT This time the directory you upload the files to is different and you'll have to do some house-keeping for the old release: ** NOTE I am guessing at all directories here ** * create a directory for the old release in /www/xml.apache.org/builds/xml-security/release on daedalus. * Move the release notes, .zip files and corresponding signatures and md5 hashes of the old release from /www/www.apache.org/dist/xml-security to a matching directory structure in /www/xml.apache.org/builds/xml-security/release. * remove the remaining files except for the KEYS file from /www/www.apache.org/dist/xml-security. * upload the new release files to /www/www.apache.org/dist/xml-security/[source|binary]. * Create proper -current symlinks in /www/www.apache.org/dist/xml-security/ Change
{'source': 'Apache Software Foundation Public Mail Archives'}