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
   
  
  
  

Reply via email to