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