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/05/18 13:01:30 UTC
cvs commit: xml-security/c/src/utils XSECSafeBuffer.cpp XSECSafeBuffer.hpp
blautenb 2003/05/18 04:01:30
Modified: c/Projects/VC6.0/xsec/checksig checksig.dsp
c/src/tools/checksig checksig.cpp
c/src/utils XSECSafeBuffer.cpp XSECSafeBuffer.hpp
Log:
Support for merlin-eighteen interop tests
Revision Changes Path
1.5 +17 -2 xml-security/c/Projects/VC6.0/xsec/checksig/checksig.dsp
Index: checksig.dsp
===================================================================
RCS file: /home/cvs/xml-security/c/Projects/VC6.0/xsec/checksig/checksig.dsp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- checksig.dsp 7 May 2003 11:31:22 -0000 1.4
+++ checksig.dsp 18 May 2003 11:01:30 -0000 1.5
@@ -119,7 +119,6 @@
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /Gm /GX /ZI /Od /I "%LIBWWW%\Library\External" /I "%LIBWWW%\Library\Src" /I "../../../../src" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MD /W3 /GX /Od /Ob1 /I "%LIBWWW%\Library\External" /I "%LIBWWW%\Library\Src" /I "../../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# SUBTRACT CPP /Z<none>
# ADD BASE RSC /l 0xc09 /d "_DEBUG"
# ADD RSC /l 0xc09 /d "NDEBUG"
BSC32=bscmake.exe
@@ -128,7 +127,7 @@
LINK32=link.exe
# ADD BASE LINK32 ../../../../Build/Win32/VC6/Debug/xsec_lib_01D.lib libeay32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib xerces-c_2D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ../../../../Build/Win32/VC6/Release/xsec_lib_02.lib libeay32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib xerces-c_2.lib crypt32.lib /nologo /subsystem:console /incremental:no /machine:I386
-# SUBTRACT LINK32 /debug /pdbtype:<none>
+# SUBTRACT LINK32 /debug
!ENDIF
@@ -143,12 +142,28 @@
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
+SOURCE=..\..\..\..\src\tools\checksig\AnonymousResolver.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\src\tools\checksig\checksig.cpp
# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\src\tools\checksig\InteropResolver.cpp
+# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\src\tools\checksig\AnonymousResolver.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\src\tools\checksig\InteropResolver.hpp
+# End Source File
# End Group
# Begin Group "Resource Files"
1.19 +23 -102 xml-security/c/src/tools/checksig/checksig.cpp
Index: checksig.cpp
===================================================================
RCS file: /home/cvs/xml-security/c/src/tools/checksig/checksig.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- checksig.cpp 10 May 2003 07:19:13 -0000 1.18
+++ checksig.cpp 18 May 2003 11:01:30 -0000 1.19
@@ -68,6 +68,9 @@
*
*/
+#include "AnonymousResolver.hpp"
+#include "InteropResolver.hpp"
+
// XSEC
#include <xsec/utils/XSECPlatformUtils.hpp>
@@ -116,7 +119,6 @@
#include <xercesc/util/XMLException.hpp>
#include <xercesc/util/XMLUri.hpp>
#include <xercesc/util/Janitor.hpp>
-#include <xercesc/framework/URLInputSource.hpp>
XSEC_USING_XERCES(XercesDOMParser);
XSEC_USING_XERCES(XMLException);
@@ -171,103 +173,6 @@
#endif
// ----------------------------------------------------------------------------
-// AnonymousResolver
-// ----------------------------------------------------------------------------
-
-/*
- * The anonymous resolver is a very simple resolver used for the IAIK
- * anonymousReferenceSignature.xml interop test example.
- * It simply takes an anonymous (NULL) uri reference and links to the
- * relevant file in the data suite
- */
-
-#define anonURI "../digestInputs/anonymousReferenceSignature.firstReference.txt"
-
-class AnonymousResolver : public XSECURIResolver {
-
-public:
-
- AnonymousResolver() {mp_baseURI = NULL;}
- virtual ~AnonymousResolver() {};
-
- // Interface method
-
- virtual BinInputStream * resolveURI(const XMLCh * uri);
-
- // Interface method
-
- virtual XSECURIResolver * clone(void);
-
- // Extra methods
-
- void setBaseURI(const XMLCh * uri);
-private:
- XMLCh * mp_baseURI;
-};
-
-XSECURIResolver * AnonymousResolver::clone(void) {
-
- AnonymousResolver * ret;
-
- ret = new AnonymousResolver();
-
- if (this->mp_baseURI != 0)
- ret->mp_baseURI = XMLString::replicate(this->mp_baseURI);
- else
- ret->mp_baseURI = 0;
-
- return ret;
-
-}
-
-void AnonymousResolver::setBaseURI(const XMLCh * uri) {
-
- if (mp_baseURI != NULL)
- delete[] mp_baseURI;
-
- mp_baseURI = XMLString::replicate(uri);
-
-}
-
-BinInputStream * AnonymousResolver::resolveURI(const XMLCh * uri) {
-
- XSEC_USING_XERCES(URLInputSource);
- XSEC_USING_XERCES(XMLURL);
- XSEC_USING_XERCES(BinInputStream);
-
- URLInputSource * URLS; // Use Xerces URL Input source
- BinInputStream * is; // To handle the actual input
-
- if (uri != NULL) {
- throw XSECException(XSECException::ErrorOpeningURI,
- "AnonymousResolver - only anonymous references supported");
- }
-
- if (mp_baseURI == 0) {
- URLS = new URLInputSource(XMLURL(MAKE_UNICODE_STRING(anonURI)));
- }
- else {
- URLS = new URLInputSource(XMLURL(XMLURL(mp_baseURI), MAKE_UNICODE_STRING(anonURI)));
- }
-
- // makeStream can (and is quite likely to) throw an exception
- Janitor<URLInputSource> j_URLS(URLS);
-
- is = URLS->makeStream();
-
- if (is == NULL) {
-
- throw XSECException(XSECException::ErrorOpeningURI,
- "An error occurred in AnonymousResolver when opening an URLInputStream");
-
- }
-
- return is;
-}
-
-
-
-// ----------------------------------------------------------------------------
// Checksig
// ----------------------------------------------------------------------------
@@ -305,6 +210,7 @@
XSECCryptoKey * key = NULL;
bool useXSECURIResolver = false;
bool useAnonymousResolver = false;
+ bool useInteropResolver = false;
#if defined(_WIN32)
HCRYPTPROV win32DSSCSP = 0; // Crypto Providers
HCRYPTPROV win32RSACSP = 0;
@@ -335,6 +241,11 @@
useXSECURIResolver = true;
paramCount++;
}
+ else if (stricmp(argv[paramCount], "--interop") == 0 || stricmp(argv[paramCount], "-i") == 0) {
+ // Use the interop key resolver
+ useInteropResolver = true;
+ paramCount++;
+ }
else if (stricmp(argv[paramCount], "--anonymousresolver") == 0 || stricmp(argv[paramCount], "-a") ==0) {
useAnonymousResolver = true;
paramCount++;
@@ -549,7 +460,9 @@
// Check whether we should use the internal resolver
- if (useXSECURIResolver == true || useAnonymousResolver == true) {
+ if (useXSECURIResolver == true ||
+ useAnonymousResolver == true ||
+ useInteropResolver == true) {
#if defined(_WIN32)
XSECURIResolverGenericWin32
@@ -599,10 +512,18 @@
theAnonymousResolver.setBaseURI(uri.getUriText());
sig->setURIResolver(&theAnonymousResolver);
}
- else {
+ else if (useXSECURIResolver == true) {
theResolver.setBaseURI(uri.getUriText());
sig->setURIResolver(&theResolver);
}
+
+ if (useInteropResolver == true) {
+
+ InteropResolver ires(&(uri.getUriText()[8]));
+ sig->setKeyInfoResolver(&ires);
+
+ }
+
}
@@ -756,7 +677,7 @@
if ( _CrtMemDifference( &s3, &s1, &s2 ) && (
s3.lCounts[0] > 0 ||
s3.lCounts[1] > 1 ||
- s3.lCounts[2] > 1 ||
+ // s3.lCounts[2] > 2 || We don't worry about C Runtime
s3.lCounts[3] > 0 ||
s3.lCounts[4] > 0)) {
1.7 +50 -1 xml-security/c/src/utils/XSECSafeBuffer.cpp
Index: XSECSafeBuffer.cpp
===================================================================
RCS file: /home/cvs/xml-security/c/src/utils/XSECSafeBuffer.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- XSECSafeBuffer.cpp 8 May 2003 12:10:59 -0000 1.6
+++ XSECSafeBuffer.cpp 18 May 2003 11:01:30 -0000 1.7
@@ -73,6 +73,8 @@
#include <xsec/utils/XSECSafeBuffer.hpp>
#include <xsec/framework/XSECError.hpp>
+#include <xercesc/util/XMLUniDefs.hpp>
+
XSEC_USING_XERCES(XMLString);
// Standard includes
@@ -450,6 +452,43 @@
}
+// XMLCh and char common functions
+
+void safeBuffer::sbStrlwr(void) {
+
+ if (m_bufferType == BUFFER_UNKNOWN) {
+
+ throw XSECException(XSECException::SafeBufferError,
+ "Attempt to perform an operation on a buffer of incorrect type");
+
+ }
+
+ if (m_bufferType == BUFFER_CHAR) {
+
+ unsigned int i;
+ unsigned int l = strlen((char *) buffer);
+
+ for (i = 0; i < l; ++i) {
+ if (buffer[i] >= 'A' && buffer[i] <= 'Z')
+ buffer[i] = (buffer[i] - 'A') + 'a';
+ }
+
+ }
+
+ else {
+
+ unsigned int i;
+ XMLCh * b = (XMLCh *) buffer;
+ unsigned int l = XMLString::stringLen(b);
+
+ for (i = 0; i < l; ++i) {
+ if (b[i] >= XERCES_CPP_NAMESPACE::chLatin_A && b[i] <= XERCES_CPP_NAMESPACE::chLatin_Z)
+ b[i] = (b[i] - XERCES_CPP_NAMESPACE::chLatin_A) + XERCES_CPP_NAMESPACE::chLatin_a;
+ }
+
+ }
+
+}
// Operators
unsigned char & safeBuffer::operator[](int n) {
@@ -485,6 +524,16 @@
return *this;
}
+
+safeBuffer & safeBuffer::operator= (const XMLCh * inStr) {
+
+ checkAndExpand(XMLString::stringLen(inStr) * size_XMLCh);
+ XMLString::copyString((XMLCh *) buffer, inStr);
+ m_bufferType = BUFFER_UNICODE;
+ return *this;
+
+}
+
// Unicode Functions
1.9 +4 -1 xml-security/c/src/utils/XSECSafeBuffer.hpp
Index: XSECSafeBuffer.hpp
===================================================================
RCS file: /home/cvs/xml-security/c/src/utils/XSECSafeBuffer.hpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- XSECSafeBuffer.hpp 8 May 2003 12:10:59 -0000 1.8
+++ XSECSafeBuffer.hpp 18 May 2003 11:01:30 -0000 1.9
@@ -152,11 +152,14 @@
int sbStrstr(const XMLCh * inStr) const;
void sbStrinsIn(const XMLCh * inStr, unsigned int offset);
+ // XMLCh and char common functions
+ void sbStrlwr(void); // Lowercase the string
// Operators
unsigned char & operator[](int n);
safeBuffer & operator= (const safeBuffer & cpy);
+ safeBuffer & operator= (const XMLCh * inStr);
// Get functions