You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by bl...@apache.org on 2003/09/15 13:57:45 UTC

cvs commit: xml-security/c/src/dsig DSIGConstants.cpp DSIGConstants.hpp DSIGKeyInfoList.cpp DSIGKeyInfoList.hpp DSIGReference.cpp DSIGReference.hpp DSIGSignature.cpp DSIGSignedInfo.cpp DSIGSignedInfo.hpp DSIGTransform.cpp DSIGTransform.hpp DSIGTransformBase64.cpp DSIGTransformBase64.hpp DSIGTransformC14n.cpp DSIGTransformC14n.hpp DSIGTransformEnvelope.cpp DSIGTransformEnvelope.hpp DSIGTransformXPath.cpp DSIGTransformXPath.hpp DSIGTransformXPathFilter.cpp DSIGTransformXPathFilter.hpp DSIGTransformXSL.cpp DSIGTransformXSL.hpp DSIGXPathFilterExpr.cpp DSIGXPathFilterExpr.hpp

blautenb    2003/09/15 04:57:45

  Modified:    c/src/dsig DSIGConstants.cpp DSIGConstants.hpp
                        DSIGKeyInfoList.cpp DSIGKeyInfoList.hpp
                        DSIGReference.cpp DSIGReference.hpp
                        DSIGSignature.cpp DSIGSignedInfo.cpp
                        DSIGSignedInfo.hpp DSIGTransform.cpp
                        DSIGTransform.hpp DSIGTransformBase64.cpp
                        DSIGTransformBase64.hpp DSIGTransformC14n.cpp
                        DSIGTransformC14n.hpp DSIGTransformEnvelope.cpp
                        DSIGTransformEnvelope.hpp DSIGTransformXPath.cpp
                        DSIGTransformXPath.hpp DSIGTransformXPathFilter.cpp
                        DSIGTransformXPathFilter.hpp DSIGTransformXSL.cpp
                        DSIGTransformXSL.hpp DSIGXPathFilterExpr.cpp
                        DSIGXPathFilterExpr.hpp
  Log:
  Moved all DSIG elements to support environment class + started move of KeyInfo processing more into KeyInfoList
  
  Revision  Changes    Path
  1.12      +7 -2      xml-security/c/src/dsig/DSIGConstants.cpp
  
  Index: DSIGConstants.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGConstants.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DSIGConstants.cpp	31 Aug 2003 12:50:47 -0000	1.11
  +++ DSIGConstants.cpp	15 Sep 2003 11:57:44 -0000	1.12
  @@ -100,7 +100,7 @@
   const XMLCh * DSIGConstants::s_unicodeStrURIHMAC_SHA1;
   const XMLCh * DSIGConstants::s_unicodeStrURIXMLNS;
   const XMLCh * DSIGConstants::s_unicodeStrURIMANIFEST;
  -
  +const XMLCh * DSIGConstants::s_unicodeStrURI3DES_CBC;
   const XMLCh * DSIGConstants::s_unicodeStrPROVOpenSSL;
   const XMLCh * DSIGConstants::s_unicodeStrPROVWinCAPI;
   
  @@ -138,6 +138,9 @@
   	s_unicodeStrURIHMAC_SHA1 = XMLString::transcode(URI_ID_HMAC_SHA1);
   	s_unicodeStrURIXMLNS = XMLString::transcode(URI_ID_XMLNS);
   	s_unicodeStrURIMANIFEST = XMLString::transcode(URI_ID_MANIFEST);
  +	
  +	s_unicodeStrURI3DES_CBC	= XMLString::transcode(URI_ID_3DES_CBC);
  +	
   	s_unicodeStrPROVOpenSSL = XMLString::transcode(PROV_OPENSSL);
   	s_unicodeStrPROVWinCAPI = XMLString::transcode(PROV_WINCAPI);
   
  @@ -173,6 +176,8 @@
   	delete[] (XMLCh *) s_unicodeStrURIHMAC_SHA1;
   	delete[] (XMLCh *) s_unicodeStrURIXMLNS;
   	delete[] (XMLCh *) s_unicodeStrURIMANIFEST;
  +
  +	delete[] (XMLCh *) s_unicodeStrURI3DES_CBC;
   
   	delete[] (XMLCh *) s_unicodeStrPROVOpenSSL;
   	delete[] (XMLCh *) s_unicodeStrPROVWinCAPI;
  
  
  
  1.14      +34 -1     xml-security/c/src/dsig/DSIGConstants.hpp
  
  Index: DSIGConstants.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGConstants.hpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DSIGConstants.hpp	31 Aug 2003 12:50:47 -0000	1.13
  +++ DSIGConstants.hpp	15 Sep 2003 11:57:44 -0000	1.14
  @@ -91,6 +91,9 @@
   #define URI_ID_SHA1		"http://www.w3.org/2000/09/xmldsig#sha1"
   #define URI_ID_MD5		"http://www.w3.org/2001/04/xmldsig-more#md5"
   
  +// Encryption Algorithms
  +#define URI_ID_3DES_CBC	"http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
  +
   // Transforms
   
   #define URI_ID_BASE64			"http://www.w3.org/2000/09/xmldsig#base64"
  @@ -176,6 +179,13 @@
   
   };
   
  +enum encryptionMethod {
  +
  +	ENCRYPT_NONE			= 0,				// No method defined
  +	ENCRYPT_3DES_CBC		= 1					// Use 3DES
  +
  +};
  +
   
   // --------------------------------------------------------------------------------
   //           Some utility functions
  @@ -286,6 +296,26 @@
   
   }
   
  +inline
  +bool encryptionMethod2URI(safeBuffer &uri, encryptionMethod em) {
  +
  +	switch (em) {
  +
  +	case (ENCRYPT_3DES_CBC) :
  +
  +		uri = URI_ID_3DES_CBC;
  +		break;
  +
  +	default:
  +
  +		return false;
  +
  +	}
  +
  +	return true;
  +
  +}
  +
   // --------------------------------------------------------------------------------
   //           Constant Strings Class
   // --------------------------------------------------------------------------------
  @@ -325,6 +355,9 @@
   	static const XMLCh * s_unicodeStrURIHMAC_SHA1;
   	static const XMLCh * s_unicodeStrURIXMLNS;
   	static const XMLCh * s_unicodeStrURIMANIFEST;
  +
  +	// URIs for Encryption
  +	static const XMLCh * s_unicodeStrURI3DES_CBC;
   
   	// Internal Crypto Providers
   	static const XMLCh * s_unicodeStrPROVOpenSSL;
  
  
  
  1.11      +208 -1    xml-security/c/src/dsig/DSIGKeyInfoList.cpp
  
  Index: DSIGKeyInfoList.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGKeyInfoList.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- DSIGKeyInfoList.cpp	12 Sep 2003 09:47:17 -0000	1.10
  +++ DSIGKeyInfoList.cpp	15 Sep 2003 11:57:44 -0000	1.11
  @@ -79,6 +79,13 @@
   #include <xsec/framework/XSECError.hpp>
   #include <xsec/utils/XSECDOMUtils.hpp>
   #include <xsec/dsig/DSIGSignature.hpp>
  +#include <xsec/dsig/DSIGReference.hpp>
  +#include <xsec/dsig/DSIGTransformList.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
  +#include <xsec/transformers/TXFMChain.hpp>
  +#include <xsec/transformers/TXFMBase.hpp>
  +
  +#include <xercesc/util/Janitor.hpp>
   
   XERCES_CPP_NAMESPACE_USE
   
  @@ -212,5 +219,205 @@
   
   }
   
  +// --------------------------------------------------------------------------------
  +//           Retrieve a complete KeyInfo list
  +// --------------------------------------------------------------------------------
  +
  +
  +bool DSIGKeyInfoList::loadListFromXML(DOMNode * node) {
  +
  +	if (node == NULL || !strEquals(getDSIGLocalName(node), "KeyInfo")) {
  +		throw XSECException(XSECException::ExpectedDSIGChildNotFound,
  +			"DSIGKeyInfoList::loadListFromXML - expected KeyInfo node");
  +	}
  +
  +	DOMNode *tmpKI = findFirstChildOfType(node, DOMNode::ELEMENT_NODE);
  +	
  +	while (tmpKI != 0) {
  +
  +		// Find out what kind of KeyInfo child it is
  +
  +		if (tmpKI != 0 && strEquals(getDSIGLocalName(tmpKI), "RetrievalMethod")) {
  +
  +			// A reference to key information held elsewhere
  +
  +			const XMLCh * URI = NULL;
  +			TXFMBase * currentTxfm;
  +			bool isRawX509 = false;
  +
  +			DOMNamedNodeMap *atts = tmpKI->getAttributes();
  +			const XMLCh * name;
  +			unsigned int size;
  +
  +			if (atts == 0 || (size = atts->getLength()) == 0)
  +				return true;
  +
  +			for (unsigned int i = 0; i < size; ++i) {
  +
  +				name = atts->item(i)->getNodeName();
  +
  +				if (strEquals(name, "URI")) {
  +					URI  = atts->item(i)->getNodeValue();
  +				}
  +
  +				else if (strEquals(name, "Type")) {
  +
  +					// Check if this is a raw X509 cert
  +					if (strEquals(atts->item(i)->getNodeValue(), DSIGConstants::s_unicodeStrURIRawX509)) {
  +						isRawX509 = true;
  +					}
  +
  +				}
  +
  +				else if (strEquals(name, "Id")) {
  +
  +					// For now ignore
  +
  +				}
  +
  +				else {
  +					safeBuffer tmp, error;
  +
  +					error << (*mp_env->getSBFormatter() << name);
  +					tmp.sbStrcpyIn("Unknown attribute in <RetrievalMethod> Element : ");
  +					tmp.sbStrcatIn(error);
  +
  +					throw XSECException(XSECException::UnknownDSIGAttribute, tmp.rawCharBuffer());
  +
  +				}
  +
  +			}
  +
  +			if (isRawX509 == true) {
  +
  +				if (URI == NULL) {
  +
  +					throw XSECException(XSECException::ExpectedDSIGChildNotFound,
  +						"Expected to find a URI attribute in a rawX509RetrievalMethod KeyInfo");
  +
  +				}
  +
  +				DSIGKeyInfoX509 * x509;
  +				XSECnew(x509, DSIGKeyInfoX509(mp_env));
  +				x509->setRawRetrievalURI(URI);
  +
  +				addKeyInfo(x509);
  +
  +			}
  +
  +			else {
  +
  +				// Find base transform using the base URI
  +				currentTxfm = DSIGReference::getURIBaseTXFM(mp_env->getParentDocument(), URI, mp_env->getURIResolver());
  +				TXFMChain * chain;
  +				XSECnew(chain, TXFMChain(currentTxfm));
  +				Janitor<TXFMChain> j_chain(chain);
  +
  +				// Now check for transforms
  +				tmpKI = tmpKI->getFirstChild();
   
  +				while (tmpKI != 0 && (tmpKI->getNodeType() != DOMNode::ELEMENT_NODE))
  +					// Skip text and comments
  +					tmpKI = tmpKI->getNextSibling();
   
  +				if (tmpKI == 0) {
  +
  +					throw XSECException(XSECException::ExpectedDSIGChildNotFound, 
  +							"Expected <Transforms> within <KeyInfo>");
  +
  +				}
  +
  +				if (strEquals(getDSIGLocalName(tmpKI), "Transforms")) {
  +
  +
  +					// Process the transforms using the static function.
  +					// For the moment we don't really support remote KeyInfos, so
  +					// Just built the transform list, process it and then destroy it.
  +
  +					DSIGTransformList * l = DSIGReference::loadTransforms(
  +						tmpKI,
  +						mp_env->getSBFormatter(),
  +						mp_env);
  +
  +					DSIGTransformList::TransformListVectorType::size_type size, i;
  +					size = l->getSize();
  +					for (i = 0; i < size; ++ i) {
  +						try {
  +							l->item(i)->appendTransformer(chain);
  +						}
  +						catch (...) {
  +							delete l;
  +							throw;
  +						}
  +					}
  +
  +					delete l;
  +
  +				}
  +
  +				// Find out the type of the final transform and process accordingly
  +				
  +				TXFMBase::nodeType type = chain->getLastTxfm()->getNodeType();
  +
  +				XSECXPathNodeList lst;
  +				const DOMNode * element;
  +
  +				switch (type) {
  +
  +				case TXFMBase::DOM_NODE_DOCUMENT :
  +
  +					break;
  +
  +				case TXFMBase::DOM_NODE_DOCUMENT_FRAGMENT :
  +
  +					break;
  +
  +				case TXFMBase::DOM_NODE_XPATH_NODESET :
  +
  +					lst = chain->getLastTxfm()->getXPathNodeList();
  +					element = lst.getFirstNode();
  +
  +					while (element != NULL) {
  +
  +						// Try to add each element - just call KeyInfoList add as it will
  +						// do the check to see if it is a valud KeyInfo
  +
  +						addXMLKeyInfo((DOMNode *) element);
  +						element = lst.getNextNode();
  +
  +					}
  +
  +					break;
  +
  +				default :
  +
  +					throw XSECException(XSECException::XPathError);
  +
  +				}
  +
  +				// Delete the transform chain
  +				chain->getLastTxfm()->deleteExpandedNameSpaces();
  +
  +				// Janitor will clean up chain
  +			}
  +
  +		} /* if getNodeName == Retrieval Method */
  +
  +		// Now just run through each node type in turn to process "local" KeyInfos
  +
  +		else if (!addXMLKeyInfo(tmpKI)) {
  +
  +			throw XSECException(XSECException::KeyInfoError,
  +				"Unknown KeyInfo element found");
  +
  +		}
  +
  +		tmpKI = tmpKI->getNextSibling();
  +
  +		while (tmpKI != 0 && (tmpKI->getNodeType() != DOMNode::ELEMENT_NODE))
  +			tmpKI = tmpKI->getNextSibling();
  +
  +	}
  +
  +	return true;
  +}
  \ No newline at end of file
  
  
  
  1.6       +15 -1     xml-security/c/src/dsig/DSIGKeyInfoList.hpp
  
  Index: DSIGKeyInfoList.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGKeyInfoList.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DSIGKeyInfoList.hpp	12 Sep 2003 09:47:17 -0000	1.5
  +++ DSIGKeyInfoList.hpp	15 Sep 2003 11:57:44 -0000	1.6
  @@ -188,6 +188,20 @@
   
   	bool addXMLKeyInfo(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *ki);
   
  +	/**
  +	 * \brief Read full list from DOM
  +	 *
  +	 * Will take the starting node of a KeyInfo list and read into the
  +	 * list structure.  This is a bit different from other "load"
  +	 * functions, in that it takes a node as a parameter.
  +	 *
  +	 * @note This is an internal functions and should not be called directly
  +	 *
  +	 * @param node The <KeyInfo> element node to read from
  +	 */
  +
  +	bool loadListFromXML(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
  +
   	/*
   	 * \brief Remove a KeyInfo from the list
   	 *
  
  
  
  1.15      +38 -37    xml-security/c/src/dsig/DSIGReference.cpp
  
  Index: DSIGReference.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGReference.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- DSIGReference.cpp	11 Sep 2003 11:13:36 -0000	1.14
  +++ DSIGReference.cpp	15 Sep 2003 11:57:44 -0000	1.15
  @@ -92,6 +92,7 @@
   #include <xsec/dsig/DSIGTransformC14n.hpp>
   
   #include <xsec/framework/XSECError.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
   #include <xsec/utils/XSECPlatformUtils.hpp>
   #include <xsec/utils/XSECDOMUtils.hpp>
   #include <xsec/utils/XSECBinTXFMInputStream.hpp>
  @@ -145,10 +146,10 @@
   // --------------------------------------------------------------------------------
   
   
  -DSIGReference::DSIGReference(DSIGSignature * sig, DOMNode *dom) {
  +DSIGReference::DSIGReference(const XSECEnv * env, DOMNode *dom) {
   
   	mp_referenceNode = dom;
  -	mp_parentSignature = sig;
  +	mp_env = env;
   
   	// Should throw an exception if the node is not a REFERENCE element
   
  @@ -166,9 +167,9 @@
   
   }
   
  -DSIGReference::DSIGReference(DSIGSignature *sig) {
  +DSIGReference::DSIGReference(const XSECEnv * env) {
   
  -	mp_parentSignature = sig;
  +	mp_env = env;
   	mp_referenceNode = NULL;
   	mp_transformsNode = NULL;
   	mp_transformList = NULL;
  @@ -213,9 +214,9 @@
   	// Creates the transforms list
   	safeBuffer str;
   	const XMLCh * prefix;
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   
  -	prefix = mp_parentSignature->getDSIGNSPrefix();
  +	prefix = mp_env->getDSIGNSPrefix();
   	
   	if (mp_transformsNode == NULL) {
   
  @@ -234,7 +235,7 @@
   
   void DSIGReference::addTransform(DSIGTransform * txfm, DOMElement * txfmElt) {
   
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   
   	if (mp_transformList == NULL)
   		createTransformList();
  @@ -251,8 +252,8 @@
   	DOMElement *txfmElt;
   	DSIGTransformEnvelope * txfm;
   
  -	XSECnew(txfm, DSIGTransformEnvelope(mp_parentSignature));
  -	txfmElt = txfm->createBlankTransform(mp_parentSignature->getParentDocument());
  +	XSECnew(txfm, DSIGTransformEnvelope(mp_env));
  +	txfmElt = txfm->createBlankTransform(mp_env->getParentDocument());
   
   	addTransform(txfm, txfmElt);
   
  @@ -265,8 +266,8 @@
   	DOMElement *txfmElt;
   	DSIGTransformBase64 * txfm;
   
  -	XSECnew(txfm, DSIGTransformBase64(mp_parentSignature));
  -	txfmElt = txfm->createBlankTransform(mp_parentSignature->getParentDocument());
  +	XSECnew(txfm, DSIGTransformBase64(mp_env));
  +	txfmElt = txfm->createBlankTransform(mp_env->getParentDocument());
   
   	addTransform(txfm, txfmElt);
   
  @@ -279,8 +280,8 @@
   	DOMElement *txfmElt;
   	DSIGTransformXSL * txfm;
   
  -	XSECnew(txfm, DSIGTransformXSL(mp_parentSignature));
  -	txfmElt = txfm->createBlankTransform(mp_parentSignature->getParentDocument());
  +	XSECnew(txfm, DSIGTransformXSL(mp_env));
  +	txfmElt = txfm->createBlankTransform(mp_env->getParentDocument());
   	txfm->setStylesheet(stylesheet);
   
   	addTransform(txfm, txfmElt);
  @@ -294,8 +295,8 @@
   	DOMElement *txfmElt;
   	DSIGTransformC14n * txfm;
   
  -	XSECnew(txfm, DSIGTransformC14n(mp_parentSignature));
  -	txfmElt = txfm->createBlankTransform(mp_parentSignature->getParentDocument());
  +	XSECnew(txfm, DSIGTransformC14n(mp_env));
  +	txfmElt = txfm->createBlankTransform(mp_env->getParentDocument());
   	txfm->setCanonicalizationMethod(cm);
   
   	addTransform(txfm, txfmElt);
  @@ -309,8 +310,8 @@
   	DOMElement *txfmElt;
   	DSIGTransformXPath * txfm;
   
  -	XSECnew(txfm, DSIGTransformXPath(mp_parentSignature));
  -	txfmElt = txfm->createBlankTransform(mp_parentSignature->getParentDocument());
  +	XSECnew(txfm, DSIGTransformXPath(mp_env));
  +	txfmElt = txfm->createBlankTransform(mp_env->getParentDocument());
   	txfm->setExpression(expr);
   
   	addTransform(txfm, txfmElt);
  @@ -323,11 +324,11 @@
   	DOMElement *txfmElt;
   	DSIGTransformXPathFilter * txfm;
   
  -	XSECnew(txfm, DSIGTransformXPathFilter(mp_parentSignature));
  -	txfmElt = txfm->createBlankTransform(mp_parentSignature->getParentDocument());
  +	XSECnew(txfm, DSIGTransformXPathFilter(mp_env));
  +	txfmElt = txfm->createBlankTransform(mp_env->getParentDocument());
   
   	addTransform(txfm, txfmElt);
  -	txfmElt->appendChild(mp_parentSignature->getParentDocument()->createTextNode(DSIGConstants::s_unicodeStrNL));
  +	txfmElt->appendChild(mp_env->getParentDocument()->createTextNode(DSIGConstants::s_unicodeStrNL));
   
   	return txfm;
   }
  @@ -351,8 +352,8 @@
   	mp_transformList = NULL;
   
   	safeBuffer str;
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  -	const XMLCh * prefix = mp_parentSignature->getDSIGNSPrefix();
  +	DOMDocument *doc = mp_env->getParentDocument();
  +	const XMLCh * prefix = mp_env->getDSIGNSPrefix();
   
   	makeQName(str, prefix, "Reference");
   
  @@ -633,7 +634,7 @@
   		mp_transformsNode = tmpElt;
   
   		// Load the transforms
  -		mp_transformList = loadTransforms(tmpElt, mp_formatter, mp_parentSignature);
  +		mp_transformList = loadTransforms(tmpElt, mp_formatter, mp_env);
   
   		// Find next node
   		tmpElt = tmpElt->getNextSibling();
  @@ -723,7 +724,7 @@
   		DOMNode					* manifestNode, * referenceNode;
   
   		docObject = getURIBaseTXFM(mp_referenceNode->getOwnerDocument(), mp_URI, 
  -			mp_parentSignature->getURIResolver());
  +			mp_env->getURIResolver());
   
   		manifestNode = docObject->getFragmentNode();
   		delete docObject;
  @@ -761,7 +762,7 @@
   			"Expected <Reference> as child of <Manifest>");
   
   		// Have reference node, so lets create a list!
  -		mp_manifestList = DSIGReference::loadReferenceListFromXML(mp_parentSignature, referenceNode);
  +		mp_manifestList = DSIGReference::loadReferenceListFromXML(mp_env, referenceNode);
   
   	} /* m_isManifest */
   
  @@ -773,7 +774,7 @@
   //           createReferenceListFromXML
   // --------------------------------------------------------------------------------
   
  -DSIGReferenceList *DSIGReference::loadReferenceListFromXML(DSIGSignature * sig, DOMNode *firstReference) {
  +DSIGReferenceList *DSIGReference::loadReferenceListFromXML(const XSECEnv * env, DOMNode *firstReference) {
   
   	// Have the first reference element in the document, 
   	// so want to find and load them all
  @@ -797,7 +798,7 @@
   
   		}
   
  -		XSECnew(r, DSIGReference(sig, tmpRef));
  +		XSECnew(r, DSIGReference(env, tmpRef));
   
   		refList->addReference(r);
   
  @@ -836,7 +837,7 @@
   
   	// Find base transform
   	currentTxfm = getURIBaseTXFM(mp_referenceNode->getOwnerDocument(), mp_URI,
  -		mp_parentSignature->getURIResolver());
  +		mp_env->getURIResolver());
   
   	// Set up the transform chain
   
  @@ -1009,7 +1010,7 @@
   DSIGTransformList * DSIGReference::loadTransforms( 
   							DOMNode *transformsNode,
   							XSECSafeBufferFormatter * formatter,
  -							DSIGSignature * sig) {
  +							const XSECEnv * env) {
   
   	// This is defined as a static function, not because it makes use of any static variables
   	// in the DSIGReference class, but to neatly link it to the other users
  @@ -1071,7 +1072,7 @@
   		if (algorithm.sbStrcmp(URI_ID_BASE64) == 0) {
   			
   			DSIGTransformBase64 * b;
  -			XSECnew(b, DSIGTransformBase64(sig, transforms));
  +			XSECnew(b, DSIGTransformBase64(env, transforms));
   			lst->addTransform(b);
   			b->load();
   		}
  @@ -1079,7 +1080,7 @@
   		else if (algorithm.sbStrcmp(URI_ID_XPATH) == 0) {
   
   			DSIGTransformXPath * x;
  -			XSECnew(x, DSIGTransformXPath(sig, transforms));
  +			XSECnew(x, DSIGTransformXPath(env, transforms));
   			lst->addTransform(x);
   			x->load();
   		}
  @@ -1088,7 +1089,7 @@
   
   			DSIGTransformXPathFilter * xpf;
   
  -			XSECnew(xpf, DSIGTransformXPathFilter(sig, transforms));
  +			XSECnew(xpf, DSIGTransformXPathFilter(env, transforms));
   			lst->addTransform(xpf);
   			xpf->load();
   
  @@ -1097,7 +1098,7 @@
   		else if (algorithm.sbStrcmp(URI_ID_ENVELOPE) == 0) {
   
   			DSIGTransformEnvelope * e;
  -			XSECnew(e, DSIGTransformEnvelope(sig, transforms));
  +			XSECnew(e, DSIGTransformEnvelope(env, transforms));
   			lst->addTransform(e);
   			e->load();
   		}
  @@ -1105,7 +1106,7 @@
   		else if (algorithm.sbStrcmp(URI_ID_XSLT) == 0) {
   			
   			DSIGTransformXSL * x;
  -			XSECnew(x, DSIGTransformXSL(sig, transforms));
  +			XSECnew(x, DSIGTransformXSL(env, transforms));
   			lst->addTransform(x);
   			x->load();
   
  @@ -1118,7 +1119,7 @@
   				 algorithm.sbStrcmp(URI_ID_EXC_C14N_NOC) == 0) {
   			
   			DSIGTransformC14n * c;
  -			XSECnew(c, DSIGTransformC14n(sig, transforms));
  +			XSECnew(c, DSIGTransformC14n(env, transforms));
   			lst->addTransform(c);
   			c->load();
   
  @@ -1244,7 +1245,7 @@
   
   	// Find base transform
   	currentTxfm = getURIBaseTXFM(mp_referenceNode->getOwnerDocument(), mp_URI,
  -		mp_parentSignature->getURIResolver());
  +		mp_env->getURIResolver());
   
   	// Now build the transforms list
   	// Note this passes ownership of currentTxfm to the function, so it is the
  
  
  
  1.12      +8 -11     xml-security/c/src/dsig/DSIGReference.hpp
  
  Index: DSIGReference.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGReference.hpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DSIGReference.hpp	11 Sep 2003 11:13:36 -0000	1.11
  +++ DSIGReference.hpp	15 Sep 2003 11:57:44 -0000	1.12
  @@ -62,11 +62,7 @@
    *
    * DSIG_Reference := Class for checking and setting up reference nodes in a DSIG signature
    *
  - * Author(s): Berin Lautenbach
  - *
  - * $ID$
  - *
  - * $LOG$
  + * $Id$
    *					 
    */
   
  @@ -97,6 +93,7 @@
   class TXFMChain;
   class XSECBinTXFMInputStream;
   class XSECURIResolver;
  +class XSECEnv;
   
   /**
    * @ingroup pubsig
  @@ -128,13 +125,13 @@
   	 * @note DSIGReference structures should only ever be created via calls to a
   	 * DSIGSignature object.
   	 *
  -	 * @param sig The signature in which the reference is embedded.
  +	 * @param env The operating environment in which the Reference is operating
   	 * @param dom The DOM node (within doc) that is to be used as the base of the reference.
   	 * @see #load
   	 * @see DSIGSignature#createReference
   	 */
   
  -	DSIGReference(DSIGSignature * sig, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *dom);
  +	DSIGReference(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *dom);
   
       /**
   	 * \brief Contructor for use when creating new Reference structures.
  @@ -150,7 +147,7 @@
   	 * @see DSIGSignature#createReference
   	 */
   	
  -	DSIGReference(DSIGSignature * sig);
  +	DSIGReference(const XSECEnv * env);
   
   	/**
   	 * \brief Destructor.
  @@ -450,7 +447,7 @@
   	static DSIGTransformList * loadTransforms(
   							XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *transformsNode,
   							XSECSafeBufferFormatter * formatter,
  -							DSIGSignature * sig);
  +							const XSECEnv * env);
   
   	/**
   	 * \brief Create a starting point for a TXFM Chain.
  @@ -482,7 +479,7 @@
   	 * @returns the created list.
   	 */
   
  -	static DSIGReferenceList *loadReferenceListFromXML(DSIGSignature * sig, 
  +	static DSIGReferenceList *loadReferenceListFromXML(const XSECEnv * env, 
   													   XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *firstReference);
   
   	/**
  @@ -540,7 +537,7 @@
   	hashMethod					me_hashMethod;			// What form of digest?
   	XERCES_CPP_NAMESPACE_QUALIFIER DOMNode						
   								* mp_hashValueNode;		// Node where the Hash value is stored
  -	DSIGSignature				* mp_parentSignature;	// Owner signature
  +	const XSECEnv				* mp_env;
   	DSIGTransformList			* mp_transformList;		// List of transforms
   	
   	bool                        m_loaded;
  
  
  
  1.24      +4 -195    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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- DSIGSignature.cpp	12 Sep 2003 09:47:17 -0000	1.23
  +++ DSIGSignature.cpp	15 Sep 2003 11:57:44 -0000	1.24
  @@ -528,7 +528,7 @@
   	mp_sigNode->appendChild(mp_doc->createTextNode(DSIGConstants::s_unicodeStrNL));
   
   	// Create the skeleton SignedInfo
  -	XSECnew(mp_signedInfo, DSIGSignedInfo(mp_doc, mp_formatter, this));
  +	XSECnew(mp_signedInfo, DSIGSignedInfo(mp_doc, mp_formatter, mp_env));
   	
   	mp_sigNode->appendChild(mp_signedInfo->createBlankSignedInfo(cm, sm, hm));
   	mp_sigNode->appendChild(mp_doc->createTextNode(DSIGConstants::s_unicodeStrNL));
  @@ -792,7 +792,7 @@
   
   	// Have a signed info
   
  -	XSECnew(mp_signedInfo, DSIGSignedInfo(mp_doc, mp_formatter, tmpElt, this));
  +	XSECnew(mp_signedInfo, DSIGSignedInfo(mp_doc, mp_formatter, tmpElt, mp_env));
   	mp_signedInfo->load();
   
   	// Look at Signature Value
  @@ -837,198 +837,7 @@
   
   		mp_KeyInfoNode = tmpElt;		// In case we later want to manipulate it
   
  -		DOMNode *tmpKI = tmpElt->getFirstChild();
  -
  -		while (tmpKI != 0 && (tmpKI->getNodeType() != DOMNode::ELEMENT_NODE))
  -			tmpKI = tmpKI->getNextSibling();
  -
  -
  -		while (tmpKI != 0) {
  -
  -			// Find out what kind of KeyInfo child it is
  -
  -			if (tmpKI != 0 && strEquals(getDSIGLocalName(tmpKI), "RetrievalMethod")) {
  -
  -				// A reference to key information held elsewhere
  -
  -				const XMLCh * URI = NULL;
  -				TXFMBase * currentTxfm;
  -				bool isRawX509 = false;
  -
  -				DOMNamedNodeMap *atts = tmpKI->getAttributes();
  -				const XMLCh * name;
  -				unsigned int size;
  -
  -				if (atts == 0 || (size = atts->getLength()) == 0)
  -					return;
  -
  -				for (unsigned int i = 0; i < size; ++i) {
  -
  -					name = atts->item(i)->getNodeName();
  -
  -					if (strEquals(name, "URI")) {
  -						URI  = atts->item(i)->getNodeValue();
  -					}
  -
  -					else if (strEquals(name, "Type")) {
  -
  -						// Check if this is a raw X509 cert
  -						if (strEquals(atts->item(i)->getNodeValue(), DSIGConstants::s_unicodeStrURIRawX509)) {
  -							isRawX509 = true;
  -						}
  -
  -					}
  -
  -					else if (strEquals(name, "Id")) {
  -
  -						// For now ignore
  -
  -					}
  -
  -					else {
  -						safeBuffer tmp, error;
  -
  -						error << (*mp_formatter << name);
  -						tmp.sbStrcpyIn("Unknown attribute in <RetrievalMethod> Element : ");
  -						tmp.sbStrcatIn(error);
  -
  -						throw XSECException(XSECException::UnknownDSIGAttribute, tmp.rawCharBuffer());
  -
  -					}
  -
  -				}
  -
  -				if (isRawX509 == true) {
  -
  -					if (URI == NULL) {
  -
  -						throw XSECException(XSECException::ExpectedDSIGChildNotFound,
  -							"Expected to find a URI attribute in a rawX509RetrievalMethod KeyInfo");
  -
  -					}
  -
  -					DSIGKeyInfoX509 * x509;
  -					XSECnew(x509, DSIGKeyInfoX509(mp_env));
  -					x509->setRawRetrievalURI(URI);
  -
  -					this->m_keyInfoList.addKeyInfo(x509);
  -
  -				}
  -
  -				else {
  -
  -					// Find base transform using the base URI
  -					currentTxfm = DSIGReference::getURIBaseTXFM(mp_doc, URI, mp_env->getURIResolver());
  -					TXFMChain * chain;
  -					XSECnew(chain, TXFMChain(currentTxfm));
  -					Janitor<TXFMChain> j_chain(chain);
  -
  -					// Now check for transforms
  -					tmpKI = tmpKI->getFirstChild();
  -
  -					while (tmpKI != 0 && (tmpKI->getNodeType() != DOMNode::ELEMENT_NODE))
  -						// Skip text and comments
  -						tmpKI = tmpKI->getNextSibling();
  -
  -					if (tmpKI == 0) {
  -
  -						throw XSECException(XSECException::ExpectedDSIGChildNotFound, 
  -								"Expected <Transforms> within <KeyInfo>");
  -
  -					}
  -
  -					if (strEquals(getDSIGLocalName(tmpKI), "Transforms")) {
  -
  -
  -						// Process the transforms using the static function.
  -						// For the moment we don't really support remote KeyInfos, so
  -						// Just built the transform list, process it and then destroy it.
  -
  -						DSIGTransformList * l = DSIGReference::loadTransforms(
  -							tmpKI,
  -							mp_formatter,
  -							this);
  -
  -						DSIGTransformList::TransformListVectorType::size_type size, i;
  -						size = l->getSize();
  -						for (i = 0; i < size; ++ i) {
  -							try {
  -								l->item(i)->appendTransformer(chain);
  -							}
  -							catch (...) {
  -								delete l;
  -								throw;
  -							}
  -						}
  -
  -						delete l;
  -
  -					}
  -
  -					// Find out the type of the final transform and process accordingly
  -					
  -					TXFMBase::nodeType type = chain->getLastTxfm()->getNodeType();
  -
  -					XSECXPathNodeList lst;
  -					const DOMNode * element;
  -
  -					switch (type) {
  -
  -					case TXFMBase::DOM_NODE_DOCUMENT :
  -
  -						break;
  -
  -					case TXFMBase::DOM_NODE_DOCUMENT_FRAGMENT :
  -
  -						break;
  -
  -					case TXFMBase::DOM_NODE_XPATH_NODESET :
  -
  -						lst = chain->getLastTxfm()->getXPathNodeList();
  -						element = lst.getFirstNode();
  -
  -						while (element != NULL) {
  -
  -							// Try to add each element - just call KeyInfoList add as it will
  -							// do the check to see if it is a valud KeyInfo
  -
  -							m_keyInfoList.addXMLKeyInfo((DOMNode *) element);
  -							element = lst.getNextNode();
  -
  -						}
  -
  -						break;
  -
  -					default :
  -
  -						throw XSECException(XSECException::XPathError);
  -
  -					}
  -
  -					// Delete the transform chain
  -					chain->getLastTxfm()->deleteExpandedNameSpaces();
  -
  -					// Janitor will clean up chain
  -				}
  -
  -			} /* if getNodeName == Retrieval Method */
  -
  -			// Now just run through each node type in turn to process "local" KeyInfos
  -
  -			else if (!m_keyInfoList.addXMLKeyInfo(tmpKI)) {
  -
  -				throw XSECException(XSECException::KeyInfoError,
  -					"Unknown KeyInfo element found");
  -
  -			}
  -
  -			tmpKI = tmpKI->getNextSibling();
  -
  -			while (tmpKI != 0 && (tmpKI->getNodeType() != DOMNode::ELEMENT_NODE))
  -				tmpKI = tmpKI->getNextSibling();
  -
  -		}
  -
  +		m_keyInfoList.loadListFromXML(tmpElt);
   	}
   
   }
  
  
  
  1.7       +10 -9     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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DSIGSignedInfo.cpp	11 Sep 2003 11:13:36 -0000	1.6
  +++ DSIGSignedInfo.cpp	15 Sep 2003 11:57:44 -0000	1.7
  @@ -70,6 +70,7 @@
   #include <xsec/dsig/DSIGSignedInfo.hpp>
   #include <xsec/dsig/DSIGReference.hpp>
   #include <xsec/framework/XSECError.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
   #include <xsec/utils/XSECDOMUtils.hpp>
   #include <xsec/dsig/DSIGSignature.hpp>
   
  @@ -81,14 +82,14 @@
   
   DSIGSignedInfo::DSIGSignedInfo(DOMDocument *doc, 
   		XSECSafeBufferFormatter * pFormatter, 
  -		DOMNode *signedInfoNode, DSIGSignature * parentSignature) {
  +		DOMNode *signedInfoNode, const XSECEnv * env) {
   
   	mp_doc = doc;
   	m_HMACOutputLength = 0;
   	mp_formatter = pFormatter;
   	mp_signedInfoNode = signedInfoNode;
   	m_signatureMethod = SIGNATURE_NONE;
  -	mp_parentSignature = parentSignature;
  +	mp_env = env;
   	mp_referenceList = NULL;
   	m_loaded = false;
   
  @@ -96,14 +97,14 @@
   
   DSIGSignedInfo::DSIGSignedInfo(DOMDocument *doc, 
   		XSECSafeBufferFormatter * pFormatter, 
  -		DSIGSignature * parentSignature) {
  +		const XSECEnv * env) {
   
   	mp_doc = doc;
   	m_HMACOutputLength = 0;
   	mp_formatter = pFormatter;
   	mp_signedInfoNode = NULL;
   	m_signatureMethod = SIGNATURE_NONE;
  -	mp_parentSignature = parentSignature;
  +	mp_env = env;
   	mp_referenceList = NULL;
   	m_loaded = false;
   
  @@ -112,7 +113,7 @@
   DSIGSignedInfo::~DSIGSignedInfo() {
   
   	mp_formatter = NULL;
  -	mp_parentSignature = NULL;
  +	mp_env = NULL;
   	if (mp_referenceList != NULL) {
   
   		delete mp_referenceList;
  @@ -186,7 +187,7 @@
   								char * type) {
   
   	DSIGReference * ref;
  -	XSECnew(ref, DSIGReference(mp_parentSignature));
  +	XSECnew(ref, DSIGReference(mp_env));
   	Janitor<DSIGReference> j_ref(ref);
   
   	DOMNode *refNode = ref->createBlankReference(URI, hm, type);
  @@ -211,7 +212,7 @@
   			hashMethod hm) {
   
   	safeBuffer str;
  -	const XMLCh * prefixNS = mp_parentSignature->getDSIGNSPrefix();
  +	const XMLCh * prefixNS = mp_env->getDSIGNSPrefix();
   
   	makeQName(str, prefixNS, "SignedInfo");
   
  @@ -442,7 +443,7 @@
   
   		// Have an element node - should be a reference, so let's load the list
   
  -		mp_referenceList = DSIGReference::loadReferenceListFromXML(mp_parentSignature, tmpSI);
  +		mp_referenceList = DSIGReference::loadReferenceListFromXML(mp_env, tmpSI);
   
   	}
   
  
  
  
  1.10      +8 -8      xml-security/c/src/dsig/DSIGSignedInfo.hpp
  
  Index: DSIGSignedInfo.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGSignedInfo.hpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- DSIGSignedInfo.hpp	11 Sep 2003 11:13:36 -0000	1.9
  +++ DSIGSignedInfo.hpp	15 Sep 2003 11:57:44 -0000	1.10
  @@ -87,7 +87,7 @@
   
   #include <vector>
   
  -class DSIGSignature;
  +class XSECEnv;
   
   /**
    * @ingroup pubsig
  @@ -121,13 +121,13 @@
   	 * @param doc The document containing the structure to be loaded
   	 * @param pFormatter A safeBuffer formatter that will translate to UTF-8
   	 * @param signedInfoNode The node at the top of the SignedInfo tree fragment
  -	 * @param parentSignature The signature that owns me
  +	 * @param env Operating environment
   	 */
   
   	DSIGSignedInfo(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc, 
   		XSECSafeBufferFormatter * pFormatter, 
   		XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *signedInfoNode,
  -		DSIGSignature * parentSignature);
  +		const XSECEnv * env);
   
   
   	/**
  @@ -138,15 +138,15 @@
   	 *
   	 * @param doc The document to use to construct
   	 * @param pFormatter Formatter to use to translate to UTF-8
  -	 * @param parentSignature The owning Signature
  +	 * @param env Operating environment
   	 */
   
   	DSIGSignedInfo(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc,
   				XSECSafeBufferFormatter * pFormatter, 
  -				DSIGSignature * parentSignature);
  +				const XSECEnv * env);
   
   	/**
  -	 * \brief Destructur
  +	 * \brief Destructor
   	 * 
   	 * Delete - but does not destroy the DOM Nodes
   	 *
  @@ -294,7 +294,7 @@
   	hashMethod					m_hashMethod;
   	DSIGReferenceList			* mp_referenceList;
   	int							m_HMACOutputLength;
  -	DSIGSignature				* mp_parentSignature;
  +	const XSECEnv				* mp_env;
   
   	// Not implemented constructors
   
  
  
  
  1.5       +4 -3      xml-security/c/src/dsig/DSIGTransform.cpp
  
  Index: DSIGTransform.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransform.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DSIGTransform.cpp	11 Sep 2003 11:13:36 -0000	1.4
  +++ DSIGTransform.cpp	15 Sep 2003 11:57:44 -0000	1.5
  @@ -68,6 +68,7 @@
   
   #include <xsec/dsig/DSIGTransform.hpp>
   #include <xsec/dsig/DSIGSignature.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
   
   XERCES_CPP_NAMESPACE_USE
   
  @@ -78,9 +79,9 @@
   	safeBuffer str;
   	const XMLCh * prefix;
   	DOMElement *ret;
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   
  -	prefix = mp_parentSignature->getDSIGNSPrefix();
  +	prefix = mp_env->getDSIGNSPrefix();
   	
   	// Create the transform node
   	makeQName(str, prefix, "Transform");
  
  
  
  1.7       +8 -8      xml-security/c/src/dsig/DSIGTransform.hpp
  
  Index: DSIGTransform.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransform.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DSIGTransform.hpp	11 Sep 2003 11:13:36 -0000	1.6
  +++ DSIGTransform.hpp	15 Sep 2003 11:57:44 -0000	1.7
  @@ -80,7 +80,7 @@
   
   #include <stdio.h>
   
  -class DSIGSignature;
  +class XSECEnv;
   class TXFMChain;
   
   /**
  @@ -118,14 +118,14 @@
   	 * @note DSIGTransform structures should only ever be created via calls to a
   	 * DSIGTransformList object.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The environment in which this transform operates
   	 * @param node The DOM node (within doc) that is to be used as the base of the Transform.
   	 * @see #load
   	 */
   
  -	DSIGTransform(DSIGSignature *sig, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node) : 
  +	DSIGTransform(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node) : 
   		  mp_txfmNode(node),
  -		  mp_parentSignature(sig) {};
  +		  mp_env(env) {};
   
       /**
   	 * \brief Contructor used for new signatures.
  @@ -139,9 +139,9 @@
   	 *
   	 */
   
  -	DSIGTransform(DSIGSignature *sig) : 
  +	DSIGTransform(const XSECEnv * env) : 
   		  mp_txfmNode(NULL),
  -		  mp_parentSignature(sig) {};
  +		  mp_env(env) {};
   
   		  
   	/**
  @@ -215,7 +215,7 @@
   
   	XERCES_CPP_NAMESPACE_QUALIFIER DOMNode					
   							* mp_txfmNode;			// The node that we read from
  -	DSIGSignature			* mp_parentSignature;	// Owning signature
  +	const XSECEnv			* mp_env;	// Owning signature
   
   private:
   
  
  
  
  1.6       +8 -7      xml-security/c/src/dsig/DSIGTransformBase64.cpp
  
  Index: DSIGTransformBase64.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformBase64.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DSIGTransformBase64.cpp	11 Sep 2003 11:13:36 -0000	1.5
  +++ DSIGTransformBase64.cpp	15 Sep 2003 11:57:44 -0000	1.6
  @@ -75,6 +75,7 @@
   #include <xsec/transformers/TXFMChain.hpp>
   #include <xsec/transformers/TXFMXPath.hpp>
   #include <xsec/framework/XSECException.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
   #include <xsec/utils/XSECDOMUtils.hpp>
   #include <xsec/framework/XSECError.hpp>
   
  @@ -84,12 +85,12 @@
   //           Constructors and Destructors
   // --------------------------------------------------------------------------------
   
  -DSIGTransformBase64::DSIGTransformBase64(DSIGSignature *sig, DOMNode * node) :
  -DSIGTransform(sig, node) {};
  +DSIGTransformBase64::DSIGTransformBase64(const XSECEnv * env, DOMNode * node) :
  +DSIGTransform(env, node) {};
   
   
  -DSIGTransformBase64::DSIGTransformBase64(DSIGSignature *sig) :
  -DSIGTransform(sig) {};
  +DSIGTransformBase64::DSIGTransformBase64(const XSECEnv * env) :
  +DSIGTransform(env) {};
   		  
   
   DSIGTransformBase64::~DSIGTransformBase64() {};
  @@ -151,9 +152,9 @@
   	safeBuffer str;
   	const XMLCh * prefix;
   	DOMElement *ret;
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   
  -	prefix = mp_parentSignature->getDSIGNSPrefix();
  +	prefix = mp_env->getDSIGNSPrefix();
   	
   	// Create the transform node
   	makeQName(str, prefix, "Transform");
  
  
  
  1.8       +5 -5      xml-security/c/src/dsig/DSIGTransformBase64.hpp
  
  Index: DSIGTransformBase64.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformBase64.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DSIGTransformBase64.hpp	11 Sep 2003 11:13:36 -0000	1.7
  +++ DSIGTransformBase64.hpp	15 Sep 2003 11:57:44 -0000	1.8
  @@ -102,12 +102,12 @@
   	 *
   	 * The Node structure already exists, so read the nodes in.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @param node The DOM node (within doc) that is to be used as the base of the Transform.
   	 * @see #load
   	 */
   
  -	DSIGTransformBase64(DSIGSignature *sig, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
  +	DSIGTransformBase64(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
   
       /**
   	 * \brief Contructor used for new signatures.
  @@ -117,11 +117,11 @@
   	 * @note DSIGTransform structures should only ever be created via calls to a
   	 * DSIGTransformList object.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @see createBlankTransform
   	 */
   
  -	DSIGTransformBase64(DSIGSignature *sig);
  +	DSIGTransformBase64(const XSECEnv * env);
   		  
   	/**
   	 * \brief Destructor.
  
  
  
  1.14      +12 -11    xml-security/c/src/dsig/DSIGTransformC14n.cpp
  
  Index: DSIGTransformC14n.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformC14n.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DSIGTransformC14n.cpp	11 Sep 2003 11:13:36 -0000	1.13
  +++ DSIGTransformC14n.cpp	15 Sep 2003 11:57:44 -0000	1.14
  @@ -71,6 +71,7 @@
   #include <xsec/transformers/TXFMC14n.hpp>
   #include <xsec/transformers/TXFMChain.hpp>
   #include <xsec/framework/XSECError.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
   #include <xsec/dsig/DSIGSignature.hpp>
   
   #include <xercesc/util/Janitor.hpp>
  @@ -81,8 +82,8 @@
   //           Constructors and Destructors
   // --------------------------------------------------------------------------------
   
  -DSIGTransformC14n::DSIGTransformC14n(DSIGSignature *sig, DOMNode * node) :
  -DSIGTransform(sig, node) {
  +DSIGTransformC14n::DSIGTransformC14n(const XSECEnv * env, DOMNode * node) :
  +DSIGTransform(env, node) {
   
   	m_cMethod = CANON_NONE;
   	mp_inclNSNode = NULL;
  @@ -90,8 +91,8 @@
   }
   	
   
  -DSIGTransformC14n::DSIGTransformC14n(DSIGSignature *sig) :
  -DSIGTransform(sig) {
  +DSIGTransformC14n::DSIGTransformC14n(const XSECEnv * env) :
  +DSIGTransform(env) {
   
   	m_cMethod = CANON_NONE;
   	mp_inclNSNode = NULL;
  @@ -146,7 +147,7 @@
   		else {
   
   			safeBuffer incl;
  -			incl << (*(mp_parentSignature->getSBFormatter()) << mp_inclNSStr);
  +			incl << (*(mp_env->getSBFormatter()) << mp_inclNSStr);
   			c->setExclusive(incl);
   
   		}
  @@ -160,9 +161,9 @@
   	safeBuffer str;
   	const XMLCh * prefix;
   	DOMElement *ret;
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   
  -	prefix = mp_parentSignature->getDSIGNSPrefix();
  +	prefix = mp_env->getDSIGNSPrefix();
   	
   	// Create the transform node
   	makeQName(str, prefix, "Transform");
  @@ -307,10 +308,10 @@
   
   	safeBuffer str;
   	const XMLCh * prefix;
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   
   	// Use the Exclusive Canonicalisation prefix
  -	prefix = mp_parentSignature->getECNSPrefix();
  +	prefix = mp_env->getECNSPrefix();
   
   	// Create the transform node
   	makeQName(str, prefix, "InclusiveNamespaces");
  @@ -388,7 +389,7 @@
   		// More tricky
   		safeBuffer str;
   
  -		str << (*(mp_parentSignature->getSBFormatter()) << mp_inclNSStr);
  +		str << (*(mp_env->getSBFormatter()) << mp_inclNSStr);
   		str.sbStrcatIn(" ");
   		str.sbStrcatIn((char *) ns);
   		mp_inclNSNode->setAttribute(MAKE_UNICODE_STRING("PrefixList"), str.sbStrToXMLCh());
  
  
  
  1.9       +5 -5      xml-security/c/src/dsig/DSIGTransformC14n.hpp
  
  Index: DSIGTransformC14n.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformC14n.hpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DSIGTransformC14n.hpp	11 Sep 2003 11:13:36 -0000	1.8
  +++ DSIGTransformC14n.hpp	15 Sep 2003 11:57:44 -0000	1.9
  @@ -97,12 +97,12 @@
   	 *
   	 * The Node structure already exists, so read the nodes in.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @param node The DOM node (within doc) that is to be used as the base of the Transform.
   	 * @see #load
   	 */
   
  -	DSIGTransformC14n(DSIGSignature *sig, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
  +	DSIGTransformC14n(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
   
       /**
   	 * \brief Contructor used for new signatures.
  @@ -112,11 +112,11 @@
   	 * @note DSIGTransform structures should only ever be created via calls to a
   	 * DSIGTransformList object.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @see createBlankTransform
   	 */
   
  -	DSIGTransformC14n(DSIGSignature *sig);
  +	DSIGTransformC14n(const XSECEnv * env);
   		  
   	/**
   	 * \brief Destructor.
  
  
  
  1.6       +8 -7      xml-security/c/src/dsig/DSIGTransformEnvelope.cpp
  
  Index: DSIGTransformEnvelope.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformEnvelope.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DSIGTransformEnvelope.cpp	11 Sep 2003 11:13:36 -0000	1.5
  +++ DSIGTransformEnvelope.cpp	15 Sep 2003 11:57:44 -0000	1.6
  @@ -75,6 +75,7 @@
   #include <xsec/transformers/TXFMChain.hpp>
   #include <xsec/transformers/TXFMXPath.hpp>
   #include <xsec/framework/XSECException.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
   #include <xsec/utils/XSECDOMUtils.hpp>
   #include <xsec/framework/XSECError.hpp>
   
  @@ -84,12 +85,12 @@
   //           Constructors and Destructors
   // --------------------------------------------------------------------------------
   
  -DSIGTransformEnvelope::DSIGTransformEnvelope(DSIGSignature *sig, DOMNode * node) :
  -DSIGTransform(sig, node) {};
  +DSIGTransformEnvelope::DSIGTransformEnvelope(const XSECEnv * env, DOMNode * node) :
  +DSIGTransform(env, node) {};
   
   
  -DSIGTransformEnvelope::DSIGTransformEnvelope(DSIGSignature *sig) :
  -DSIGTransform(sig) {};
  +DSIGTransformEnvelope::DSIGTransformEnvelope(const XSECEnv * env) :
  +DSIGTransform(env) {};
   		  
   
   DSIGTransformEnvelope::~DSIGTransformEnvelope() {};
  @@ -139,9 +140,9 @@
   	safeBuffer str;
   	const XMLCh * prefix;
   	DOMElement *ret;
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   
  -	prefix = mp_parentSignature->getDSIGNSPrefix();
  +	prefix = mp_env->getDSIGNSPrefix();
   	
   	// Create the transform node
   	makeQName(str, prefix, "Transform");
  
  
  
  1.8       +5 -5      xml-security/c/src/dsig/DSIGTransformEnvelope.hpp
  
  Index: DSIGTransformEnvelope.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformEnvelope.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DSIGTransformEnvelope.hpp	11 Sep 2003 11:13:36 -0000	1.7
  +++ DSIGTransformEnvelope.hpp	15 Sep 2003 11:57:44 -0000	1.8
  @@ -100,23 +100,23 @@
   	 *
   	 * The Node structure already exists, so read the nodes in.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @param node The DOM node (within doc) that is to be used as the base of the Transform.
   	 * @see #load
   	 */
   
  -	DSIGTransformEnvelope(DSIGSignature *sig, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
  +	DSIGTransformEnvelope(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
   
       /**
   	 * \brief Contructor used for new signatures.
   	 *
   	 * The Node structure will have to be created.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @see createBlankTransform
   	 */
   
  -	DSIGTransformEnvelope(DSIGSignature *sig);
  +	DSIGTransformEnvelope(const XSECEnv * env);
   		  
   	/**
   	 * \brief Destructor.
  
  
  
  1.10      +10 -9     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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- DSIGTransformXPath.cpp	11 Sep 2003 11:13:36 -0000	1.9
  +++ DSIGTransformXPath.cpp	15 Sep 2003 11:57:44 -0000	1.10
  @@ -73,6 +73,7 @@
   #include <xsec/transformers/TXFMC14n.hpp>
   #include <xsec/transformers/TXFMChain.hpp>
   #include <xsec/framework/XSECError.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
   #include <xsec/dsig/DSIGSignature.hpp>
   
   #include <xercesc/util/Janitor.hpp>
  @@ -83,8 +84,8 @@
   //           Constructors and Destructors
   // --------------------------------------------------------------------------------
   
  -DSIGTransformXPath::DSIGTransformXPath(DSIGSignature *sig, DOMNode * node) :
  -DSIGTransform(sig, node) {
  +DSIGTransformXPath::DSIGTransformXPath(const XSECEnv * env, DOMNode * node) :
  +DSIGTransform(env, node) {
   
   	mp_exprTextNode = NULL;
   	mp_xpathNode = NULL;
  @@ -94,8 +95,8 @@
   }
   	
   
  -DSIGTransformXPath::DSIGTransformXPath(DSIGSignature *sig) :
  -DSIGTransform(sig) {
  +DSIGTransformXPath::DSIGTransformXPath(const XSECEnv * env) :
  +DSIGTransform(env) {
   
   	mp_exprTextNode = NULL;
   	mp_xpathNode = NULL;
  @@ -144,9 +145,9 @@
   	safeBuffer str;
   	const XMLCh * prefix;
   	DOMElement *ret;
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   
  -	prefix = mp_parentSignature->getDSIGNSPrefix();
  +	prefix = mp_env->getDSIGNSPrefix();
   	
   	// Create the transform node
   	makeQName(str, prefix, "Transform");
  @@ -202,9 +203,9 @@
   
   		gatherChildrenText(mp_xpathNode, exprSB);
   
  -		m_expr << (*(mp_parentSignature->getSBFormatter()) << exprSB.rawXMLChBuffer());
  +		m_expr << (*(mp_env->getSBFormatter()) << exprSB.rawXMLChBuffer());
   
  -		//m_expr << (*(mp_parentSignature->getSBFormatter()) << mp_exprTextNode->getNodeValue());
  +		//m_expr << (*(mp_env->getSBFormatter()) << mp_exprTextNode->getNodeValue());
   				
   	}
   
  
  
  
  1.8       +5 -5      xml-security/c/src/dsig/DSIGTransformXPath.hpp
  
  Index: DSIGTransformXPath.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformXPath.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DSIGTransformXPath.hpp	11 Sep 2003 11:13:36 -0000	1.7
  +++ DSIGTransformXPath.hpp	15 Sep 2003 11:57:44 -0000	1.8
  @@ -104,12 +104,12 @@
   	 *
   	 * The Node structure already exists, so read the nodes in.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @param node The DOM node (within doc) that is to be used as the base of the Transform.
   	 * @see #load
   	 */
   
  -	DSIGTransformXPath(DSIGSignature *sig, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
  +	DSIGTransformXPath(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
   
       /**
   	 * \brief Contructor used for new signatures.
  @@ -119,11 +119,11 @@
   	 * @note DSIGTransform structures should only ever be created via calls to a
   	 * DSIGTransformList object.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @see createBlankTransform
   	 */
   
  -	DSIGTransformXPath(DSIGSignature *sig);
  +	DSIGTransformXPath(const XSECEnv * env);
   		  
   	/**
   	 * \brief Destructor.
  
  
  
  1.5       +11 -10    xml-security/c/src/dsig/DSIGTransformXPathFilter.cpp
  
  Index: DSIGTransformXPathFilter.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformXPathFilter.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DSIGTransformXPathFilter.cpp	11 Sep 2003 11:13:36 -0000	1.4
  +++ DSIGTransformXPathFilter.cpp	15 Sep 2003 11:57:44 -0000	1.5
  @@ -73,6 +73,7 @@
   #include <xsec/dsig/DSIGXPathFilterExpr.hpp>
   #include <xsec/dsig/DSIGSignature.hpp>
   #include <xsec/framework/XSECError.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
   #include <xsec/transformers/TXFMXPathFilter.hpp>
   #include <xsec/transformers/TXFMChain.hpp>
   
  @@ -84,16 +85,16 @@
   //           Construct/Destruct
   // --------------------------------------------------------------------------------
   
  -DSIGTransformXPathFilter::DSIGTransformXPathFilter(DSIGSignature *sig, DOMNode * node) :
  -DSIGTransform(sig, node),
  +DSIGTransformXPathFilter::DSIGTransformXPathFilter(const XSECEnv * env, DOMNode * node) :
  +DSIGTransform(env, node),
   m_loaded(false) {
   
   
   }
   
   
  -DSIGTransformXPathFilter::DSIGTransformXPathFilter(DSIGSignature *sig) :
  -DSIGTransform(sig),
  +DSIGTransformXPathFilter::DSIGTransformXPathFilter(const XSECEnv * env) :
  +DSIGTransform(env),
   m_loaded(false) {
   
   }
  @@ -158,9 +159,9 @@
   	safeBuffer str;
   	const XMLCh * prefix;
   	DOMElement *ret;
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   
  -	prefix = mp_parentSignature->getDSIGNSPrefix();
  +	prefix = mp_env->getDSIGNSPrefix();
   	
   	// Create the transform node
   	makeQName(str, prefix, "Transform");
  @@ -181,13 +182,13 @@
   
   	DSIGXPathFilterExpr * e;
   
  -	XSECnew(e, DSIGXPathFilterExpr(mp_parentSignature));
  +	XSECnew(e, DSIGXPathFilterExpr(mp_env));
   
   	DOMNode * elt = e->setFilter(filterType, filterExpr);
   	m_exprs.push_back(e);
   
   	mp_txfmNode->appendChild(elt);
  -	mp_txfmNode->appendChild(mp_parentSignature->getParentDocument()->createTextNode(DSIGConstants::s_unicodeStrNL));
  +	mp_txfmNode->appendChild(mp_env->getParentDocument()->createTextNode(DSIGConstants::s_unicodeStrNL));
   
   	return e;
   
  @@ -217,7 +218,7 @@
   			strEquals(getXPFLocalName(n), "XPath")) {
   
   			DSIGXPathFilterExpr * xpf;
  -			XSECnew(xpf, DSIGXPathFilterExpr(mp_parentSignature, n));
  +			XSECnew(xpf, DSIGXPathFilterExpr(mp_env, n));
   
   			// Add it to the vector prior to load to ensure deleted if
   			// anything throws an exception
  
  
  
  1.5       +5 -5      xml-security/c/src/dsig/DSIGTransformXPathFilter.hpp
  
  Index: DSIGTransformXPathFilter.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformXPathFilter.hpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DSIGTransformXPathFilter.hpp	11 Sep 2003 11:13:36 -0000	1.4
  +++ DSIGTransformXPathFilter.hpp	15 Sep 2003 11:57:44 -0000	1.5
  @@ -116,12 +116,12 @@
   	 *
   	 * The Node structure already exists, so read the nodes in.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @param node The DOM node (within doc) that is to be used as the base of the Transform.
   	 * @see #load
   	 */
   
  -	DSIGTransformXPathFilter(DSIGSignature *sig, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
  +	DSIGTransformXPathFilter(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
   
       /**
   	 * \brief Contructor used for new signatures.
  @@ -131,11 +131,11 @@
   	 * @note DSIGTransform structures should only ever be created via calls to a
   	 * DSIGTransformList object.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @see createBlankTransform
   	 */
   
  -	DSIGTransformXPathFilter(DSIGSignature *sig);
  +	DSIGTransformXPathFilter(const XSECEnv * env);
   		  
   	/**
   	 * \brief Destructor.
  
  
  
  1.6       +8 -7      xml-security/c/src/dsig/DSIGTransformXSL.cpp
  
  Index: DSIGTransformXSL.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformXSL.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DSIGTransformXSL.cpp	11 Sep 2003 11:13:36 -0000	1.5
  +++ DSIGTransformXSL.cpp	15 Sep 2003 11:57:44 -0000	1.6
  @@ -74,6 +74,7 @@
   #include <xsec/transformers/TXFMC14n.hpp>
   #include <xsec/transformers/TXFMChain.hpp>
   #include <xsec/framework/XSECException.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
   #include <xsec/utils/XSECDOMUtils.hpp>
   #include <xsec/framework/XSECError.hpp>
   
  @@ -83,13 +84,13 @@
   //           Constructors and Destructors
   // --------------------------------------------------------------------------------
   
  -DSIGTransformXSL::DSIGTransformXSL(DSIGSignature *sig, DOMNode * node) :
  -DSIGTransform(sig, node),
  +DSIGTransformXSL::DSIGTransformXSL(const XSECEnv * env, DOMNode * node) :
  +DSIGTransform(env, node),
   mp_stylesheetNode(NULL) {};
   
   
  -DSIGTransformXSL::DSIGTransformXSL(DSIGSignature *sig) :
  -DSIGTransform(sig),
  +DSIGTransformXSL::DSIGTransformXSL(const XSECEnv * env) :
  +DSIGTransform(env),
   mp_stylesheetNode(NULL) {};
   		  
   
  @@ -167,9 +168,9 @@
   	safeBuffer str;
   	const XMLCh * prefix;
   	DOMElement *ret;
  -	DOMDocument *doc = mp_parentSignature->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   
  -	prefix = mp_parentSignature->getDSIGNSPrefix();
  +	prefix = mp_env->getDSIGNSPrefix();
   	
   	// Create the transform node
   	makeQName(str, prefix, "Transform");
  
  
  
  1.8       +5 -5      xml-security/c/src/dsig/DSIGTransformXSL.hpp
  
  Index: DSIGTransformXSL.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGTransformXSL.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DSIGTransformXSL.hpp	11 Sep 2003 11:13:36 -0000	1.7
  +++ DSIGTransformXSL.hpp	15 Sep 2003 11:57:44 -0000	1.8
  @@ -103,23 +103,23 @@
   	 *
   	 * The Node structure already exists, so read the nodes in.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @param node The DOM node (within doc) that is to be used as the base of the Transform.
   	 * @see #load
   	 */
   
  -	DSIGTransformXSL(DSIGSignature *sig, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
  +	DSIGTransformXSL(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
   
       /**
   	 * \brief Contructor used for new signatures.
   	 *
   	 * The Node structure will have to be created.
   	 *
  -	 * @param sig The Signature structure in which this transform exists.
  +	 * @param env The operating environment
   	 * @see createBlankTransform
   	 */
   
  -	DSIGTransformXSL(DSIGSignature *sig);
  +	DSIGTransformXSL(const XSECEnv * env);
   		  
   	/**
   	 * \brief Destructor.
  
  
  
  1.6       +9 -8      xml-security/c/src/dsig/DSIGXPathFilterExpr.cpp
  
  Index: DSIGXPathFilterExpr.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGXPathFilterExpr.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DSIGXPathFilterExpr.cpp	11 Sep 2003 11:13:36 -0000	1.5
  +++ DSIGXPathFilterExpr.cpp	15 Sep 2003 11:57:44 -0000	1.6
  @@ -72,6 +72,7 @@
   #include <xsec/dsig/DSIGXPathFilterExpr.hpp>
   #include <xsec/dsig/DSIGSignature.hpp>
   #include <xsec/framework/XSECException.hpp>
  +#include <xsec/framework/XSECEnv.hpp>
   
   
   #include <xercesc/dom/DOMNode.hpp>
  @@ -98,15 +99,15 @@
   //           Constructors and Destructors
   // --------------------------------------------------------------------------------
   
  -DSIGXPathFilterExpr::DSIGXPathFilterExpr(DSIGSignature * sig, DOMNode * node) :
  -mp_sig(sig),
  +DSIGXPathFilterExpr::DSIGXPathFilterExpr(const XSECEnv * env, DOMNode * node) :
  +mp_env(env),
   mp_xpathFilterNode(node),
   mp_NSMap(NULL) {
   
   }
   
  -DSIGXPathFilterExpr::DSIGXPathFilterExpr(DSIGSignature * sig) :
  -mp_sig(sig),
  +DSIGXPathFilterExpr::DSIGXPathFilterExpr(const XSECEnv * env) :
  +mp_env(env),
   mp_xpathFilterNode(NULL),
   mp_NSMap(NULL) {
   
  @@ -197,17 +198,17 @@
   
   	safeBuffer str;
   	const XMLCh * prefix;
  -	DOMDocument *doc = mp_sig->getParentDocument();
  +	DOMDocument *doc = mp_env->getParentDocument();
   	DOMElement * xe;
   
   	// Create the XPath element
  -	prefix = mp_sig->getXPFNSPrefix();
  +	prefix = mp_env->getXPFNSPrefix();
   	makeQName(str, prefix, "XPath");
   	xe = doc->createElementNS(DSIGConstants::s_unicodeStrURIXPF, str.rawXMLChBuffer());
   	mp_xpathFilterNode = xe;
   
   	// Put in correct namespace
  -	prefix = mp_sig->getXPFNSPrefix();
  +	prefix = mp_env->getXPFNSPrefix();
   
   	// Set the namespace attribute
   	if (prefix[0] == '\0') {
  
  
  
  1.5       +7 -7      xml-security/c/src/dsig/DSIGXPathFilterExpr.hpp
  
  Index: DSIGXPathFilterExpr.hpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/dsig/DSIGXPathFilterExpr.hpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DSIGXPathFilterExpr.hpp	11 Sep 2003 11:13:36 -0000	1.4
  +++ DSIGXPathFilterExpr.hpp	15 Sep 2003 11:57:44 -0000	1.5
  @@ -78,7 +78,7 @@
   XSEC_DECLARE_XERCES_CLASS(DOMNode);
   XSEC_DECLARE_XERCES_CLASS(DOMElement);
   
  -class DSIGSignature;
  +class XSECEnv;
   
   /**
    * @ingroup pubsig
  @@ -106,21 +106,21 @@
   	 *
   	 * Node already exists and is part of an existing XPathFilter tree
   	 *
  -	 * @param sig The owning signature
  +	 * @param env The operating environment
   	 * @param node The node that will be used to read the expression in
   	 */
   
  -	DSIGXPathFilterExpr(DSIGSignature * sig, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
  +	DSIGXPathFilterExpr(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * node);
   
   	/**
   	 * \brief Builder constructor
   	 *
   	 * Used to create the DOM structure and DSIGSignature elements
   	 *
  -	 * @param sig The owning signature
  +	 * @param env The operating Environment
   	 */
   
  -	DSIGXPathFilterExpr(DSIGSignature * sig);
  +	DSIGXPathFilterExpr(const XSECEnv * env);
   
   	/**
   	 * \brief Destructor.
  @@ -228,7 +228,7 @@
   	DSIGXPathFilterExpr();
   	DSIGXPathFilterExpr(const DSIGXPathFilterExpr& theOther);
   
  -	DSIGSignature				* mp_sig;
  +	const XSECEnv				* mp_env;
   	XERCES_CPP_NAMESPACE_QUALIFIER DOMNode						
   								* mp_xpathFilterNode;
   	XERCES_CPP_NAMESPACE_QUALIFIER DOMNode