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