Hello, I tried to fix the situation :) so i attach 2 files - simpleRSASign.cpp and simpleRSAValidate.cpp and 2 projects simpleRSASign.vcproj and simpleRSAValidate.vcproj and makefile.in for unix platform cpp files must be in xml-security-root\src\samples and visual c project files must be in xml-security-root\Projects\Samples\simpleRSASign for simpleRSASign.vcproj and xml-security-root\Projects\Samples\simpleRSAValidate for simpleRSAValidate.vcproj. makefile.in must be also in xml-security-root\src\samples where xml-security-root is directory where xml-security package is installed.
This is a example how to sign document from memory with RSA keys and to validate signed document. If this is not for distribution, at least can help to someone like me who looking about code for this. regards, decho ----- Original Message ----- From: "Berin Lautenbach" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Sunday, May 23, 2004 12:39 AM Subject: Re: XML Signature > Decho, > > We probably do need to put some sample code in place for this. However > have a look in templatesign.cpp, that has some code in place for loading > RSA/DSA keys and using them to sign. > > Cheers, > Berin > > > Nedelcho Stanev wrote: > > > Hello all, > > > > where i can find example for signature with priv/pub keys? > > in distribution ( xml-security-c-1.1.0 ) there are example > > for validating of signature with certificate but example > > for signing is with hmac keys. > > there are classes for this but if there are some example > > this will spend time :) > > > > decho >
/* * Copyright 2002-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * imitations under the License. */ /* * XSEC * * simpleRSAValidate := An application to validate an in-memory RSA signature * * Author(s): Nedelcho Stanev <[EMAIL PROTECTED]> * * $ID$ * * $LOG$ * */ #include "IOStreamOutputter.hpp" // XML-Security-C (XSEC) #include <xsec/framework/XSECProvider.hpp> #include <xsec/framework/XSECException.hpp> #include <xsec/dsig/DSIGReference.hpp> #include <xsec/enc/OpenSSL/OpenSSLCryptoKeyHMAC.hpp> #include <xsec/enc/OpenSSL/OpenSSLCryptoX509.hpp> #include <xsec/enc/XSECCryptoException.hpp> // Xerces #include <xercesc/util/PlatformUtils.hpp> #include <xercesc/parsers/XercesDOMParser.hpp> #include <xercesc/framework/MemBufInputSource.hpp> XERCES_CPP_NAMESPACE_USE #ifndef XSEC_NO_XALAN // Xalan #include <xalanc/XalanTransformer/XalanTransformer.hpp> XALAN_USING_XALAN(XalanTransformer) #endif char docToValidate [4096] = "\ <Letter>\n\ <ToAddress>The address of the Recipient</ToAddress>\n\ <FromAddress>The address of the Sender</FromAddress>\n\ <Text>\n\ To whom it may concern\n\ \n\ ...\n\ </Text>\n\ <ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n\ <ds:SignedInfo>\n\ <ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments\"/>\n\ <ds:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>\n\ <ds:Reference URI=\"\">\n\ <ds:Transforms>\n\ <ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>\n\ </ds:Transforms>\n\ <ds:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>\n\ <ds:DigestValue>askxS/A3BaLCjFjZ/ttU9c12kA4=</ds:DigestValue>\n\ </ds:Reference>\n\ </ds:SignedInfo>\n\ <ds:SignatureValue>Nrl0KwXyPKaqHuOWlJf7cB4tOFGPSKJOULcua0WW6OmjABuUT5LfySUDVRVusSxT\n\ InZBQAQGXlOj4ndE7wU5pl+UxWpSnuY5/BSkrqbbjut6m2jQ9SmLIbU39VEz+I2E\n\ IjJY9p2mrI9W5Z+ic0N7wXlt4JJSSytH3v3q8RgDJnk=\n\ </ds:SignatureValue>\n\ </ds:Signature>\n\ </Letter>\n"; char cert[] = "\n\ MIIC7jCCAq6gAwIBAgICEAMwCQYHKoZIzjgEAzB5MQswCQYDVQQGEwJBVTEMMAoG\n\ A1UECBMDVmljMRIwEAYDVQQHEwlNZWxib3VybmUxHzAdBgNVBAoTFlhNTC1TZWN1\n\ cml0eS1DIFByb2plY3QxEDAOBgNVBAsTB1hTRUMtQ0ExFTATBgNVBAMTDFhTRUMt\n\ Q0EgUm9vdDAeFw0wMjEyMTIxMDEzMTlaFw0xMjEyMDkxMDEzMTlaMFYxCzAJBgNV\n\ BAYTAkFVMQwwCgYDVQQIEwNWaWMxHzAdBgNVBAoTFlhNTC1TZWN1cml0eS1DIFBy\n\ b2plY3QxGDAWBgNVBAMTD1JTQSBTYW1wbGUgQ2VydDCBnzANBgkqhkiG9w0BAQEF\n\ AAOBjQAwgYkCgYEA0I96ZLWXJAM8LIUZ37y4c93WjVOsaQM6B6N6own7cQ8B9Ucp\n\ zwOXsnCVZFfJsB9gtTxZLaY7UE2dgrz47iplFecxL5mM7iKOklmGlWTfzyY87BGT\n\ GlQPlPBoX19WBf67Lhc1wovK+hVXdyzf/6VxxMKAxnSVHZaXVRLl9YhSpTUCAwEA\n\ AaOCAQEwgf4wCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5l\n\ cmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFGq6U1SwYNRyTJGAwARirEdavfXB\n\ MIGjBgNVHSMEgZswgZiAFBKNX9CsAIsjUIFmVq4wE4wlOGC5oX2kezB5MQswCQYD\n\ VQQGEwJBVTEMMAoGA1UECBMDVmljMRIwEAYDVQQHEwlNZWxib3VybmUxHzAdBgNV\n\ BAoTFlhNTC1TZWN1cml0eS1DIFByb2plY3QxEDAOBgNVBAsTB1hTRUMtQ0ExFTAT\n\ BgNVBAMTDFhTRUMtQ0EgUm9vdIIBADAJBgcqhkjOOAQDAy8AMCwCFGoKhVPnDeg9\n\ nbEFo2KDDlG/NiUqAhRJxQPLXDhehQjn6eqQWOUlkFtA9A=="; int main (int argc, char **argv) { try { XMLPlatformUtils::Initialize(); #ifndef XSEC_NO_XALAN XalanTransformer::initialize(); #endif XSECPlatformUtils::Initialise(); } catch (const XMLException &e) { cerr << "Error during initialisation of Xerces" << endl; cerr << "Error Message = : " << e.getMessage() << endl; } // Use xerces to parse the document XercesDOMParser * parser = new XercesDOMParser; parser->setDoNamespaces(true); parser->setCreateEntityReferenceNodes(true); parser->setDoSchema(true); // Create an input source MemBufInputSource* memIS = new MemBufInputSource ((const XMLByte*) docToValidate, (unsigned int) strlen(docToValidate), "XSECMem"); int errorCount = 0; parser->parse(*memIS); errorCount = parser->getErrorCount(); if (errorCount > 0) { cerr << "Error parsing input document\n"; exit (1); } DOMDocument *doc = parser->getDocument(); docSetup(doc); // Now create a signature object to validate the document XSECProvider prov; DSIGSignature * sig = prov.newSignatureFromDOM(doc); try { // Load certificate OpenSSLCryptoX509 * x509 = new OpenSSLCryptoX509(); x509->loadX509Base64Bin(cert, (unsigned int) strlen(cert)); sig->load(); sig->setSigningKey(x509->clonePublicKey()); // Perform check bool bResVerify = sig->verify(); if( !bResVerify ) { char * err = XMLString::transcode(sig->getErrMsgs()); cout << "Signature check failed.Error:" << err << "\n"; XMLString::release(&err); } else cout << "Signature check OK.\n"; } catch (XSECException &e) { cerr << "An error occured during a signature load\n Message: " << e.getMsg() << endl; exit(1); } catch (XSECCryptoException &e) { cerr << "An error occured in the XML-Security-C Crypto routines\n Message: " << e.getMsg() << endl; exit(1); } // Clean up delete memIS; delete parser; return 0; }
/* * Copyright 2002-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * imitations under the License. */ /* * XSEC * * SimpleRSASign := An application to generate an XML document (via Xerces) and sign it * * Author(s): Nedelcho Stanev <[EMAIL PROTECTED]> * * $ID$ * * $LOG$ * */ #include "IOStreamOutputter.hpp" // Xerces #include <xercesc/util/PlatformUtils.hpp> // XML-Security-C (XSEC) #include <xsec/framework/XSECProvider.hpp> #include <xsec/framework/XSECException.hpp> #include <xsec/dsig/DSIGReference.hpp> #include <xsec/dsig/DSIGKeyInfoX509.hpp> #include <xsec/enc/OpenSSL/OpenSSLCryptoKeyRSA.hpp> #include <xsec/xenc/XENCCipher.hpp> #include <xsec/xenc/XENCEncryptedData.hpp> #include <xsec/xenc/XENCEncryptedKey.hpp> // Xalan #ifndef XSEC_NO_XALAN #include <xalanc/XalanTransformer/XalanTransformer.hpp> XALAN_USING_XALAN(XalanTransformer) #endif // OpenSSL #include <openssl/rand.h> #include <openssl/bio.h> #include <openssl/dsa.h> #include <openssl/err.h> #include <openssl/evp.h> #include <openssl/pem.h> #include <xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.hpp> #include <xsec/enc/OpenSSL/OpenSSLCryptoX509.hpp> XERCES_CPP_NAMESPACE_USE char cert[] = "\n\ MIIC7jCCAq6gAwIBAgICEAMwCQYHKoZIzjgEAzB5MQswCQYDVQQGEwJBVTEMMAoG\n\ A1UECBMDVmljMRIwEAYDVQQHEwlNZWxib3VybmUxHzAdBgNVBAoTFlhNTC1TZWN1\n\ cml0eS1DIFByb2plY3QxEDAOBgNVBAsTB1hTRUMtQ0ExFTATBgNVBAMTDFhTRUMt\n\ Q0EgUm9vdDAeFw0wMjEyMTIxMDEzMTlaFw0xMjEyMDkxMDEzMTlaMFYxCzAJBgNV\n\ BAYTAkFVMQwwCgYDVQQIEwNWaWMxHzAdBgNVBAoTFlhNTC1TZWN1cml0eS1DIFBy\n\ b2plY3QxGDAWBgNVBAMTD1JTQSBTYW1wbGUgQ2VydDCBnzANBgkqhkiG9w0BAQEF\n\ AAOBjQAwgYkCgYEA0I96ZLWXJAM8LIUZ37y4c93WjVOsaQM6B6N6own7cQ8B9Ucp\n\ zwOXsnCVZFfJsB9gtTxZLaY7UE2dgrz47iplFecxL5mM7iKOklmGlWTfzyY87BGT\n\ GlQPlPBoX19WBf67Lhc1wovK+hVXdyzf/6VxxMKAxnSVHZaXVRLl9YhSpTUCAwEA\n\ AaOCAQEwgf4wCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5l\n\ cmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFGq6U1SwYNRyTJGAwARirEdavfXB\n\ MIGjBgNVHSMEgZswgZiAFBKNX9CsAIsjUIFmVq4wE4wlOGC5oX2kezB5MQswCQYD\n\ VQQGEwJBVTEMMAoGA1UECBMDVmljMRIwEAYDVQQHEwlNZWxib3VybmUxHzAdBgNV\n\ BAoTFlhNTC1TZWN1cml0eS1DIFByb2plY3QxEDAOBgNVBAsTB1hTRUMtQ0ExFTAT\n\ BgNVBAMTDFhTRUMtQ0EgUm9vdIIBADAJBgcqhkjOOAQDAy8AMCwCFGoKhVPnDeg9\n\ nbEFo2KDDlG/NiUqAhRJxQPLXDhehQjn6eqQWOUlkFtA9A=="; char s_privateKey[] = "\n\ -----BEGIN RSA PRIVATE KEY-----\n\ MIICXAIBAAKBgQDQj3pktZckAzwshRnfvLhz3daNU6xpAzoHo3qjCftxDwH1RynP\n\ A5eycJVkV8mwH2C1PFktpjtQTZ2CvPjuKmUV5zEvmYzuIo6SWYaVZN/PJjzsEZMa\n\ VA+U8GhfX1YF/rsuFzXCi8r6FVd3LN//pXHEwoDGdJUdlpdVEuX1iFKlNQIDAQAB\n\ AoGAYQ7Uc7e6Xa0PvNw4XVHzOSC870pISxqQT+u5b9R+anAEhkQW5dsTJpyUOX1N\n\ RCRmGhG6oq7gnY9xRN1yr0uVfJNtc9/HnzJL7L1jeJC8Ub+zbEBvNuPDL2P21ArW\n\ tcXRycUlfRCRBLop7rfOYPXsjtboAGnQY/6hK4rOF4XGrQUCQQD3Euj+0mZqRRZ4\n\ M1yN2wVP0mKOMg2i/HZXaNeVd9X/wyBgK6b7BxHf6onf/mIBWnJnRBlvdCrSdhuT\n\ lPKEoSgvAkEA2BhfWwQihqD4qJcV65nfosjzOZG41rHX69nIqHI7Ejx5ZgeQByH9\n\ Ym96yXoSpZj9ZlFsJYNogTBBnUBjs+jL2wJAFjpVS9eR7y2X/+hfA0QZDj1XMIPA\n\ RlGANAzymDfXwNLFLuG+fAb+zK5FCSnRl12TvUabIzPIRnbptDVKPDRjcQJBALn8\n\ 0CVv+59P8HR6BR3QRBDBT8Xey+3NB4Aw42lHV9wsPHg6ThY1hPYx6MZ70IzCjmZ/\n\ 8cqfvVRjijWj86wm0z0CQFKfRfBRraOZqfmOiAB4+ILhbJwKBBO6avX9TPgMYkyN\n\ mWKCxS+9fPiy1iI+G+B9xkw2gJ9i8P81t7fsOvdTDFA=\n\ -----END RSA PRIVATE KEY-----"; DOMDocument *createLetter(DOMImplementation *impl) { DOMDocument *doc = impl->createDocument( 0, MAKE_UNICODE_STRING("Letter"), NULL); DOMElement *rootElem = doc->getDocumentElement(); // Add the ToAddress DOMElement *addressElem = doc->createElement(MAKE_UNICODE_STRING("ToAddress")); rootElem->appendChild(doc->createTextNode(MAKE_UNICODE_STRING("\n"))); rootElem->appendChild(addressElem); addressElem->appendChild(doc->createTextNode( MAKE_UNICODE_STRING("The address of the Recipient"))); // Add the FromAddress addressElem = doc->createElement(MAKE_UNICODE_STRING("FromAddress")); rootElem->appendChild(doc->createTextNode(MAKE_UNICODE_STRING("\n"))); rootElem->appendChild(addressElem); addressElem->appendChild(doc->createTextNode( MAKE_UNICODE_STRING("The address of the Sender"))); // Add some text DOMElement *textElem = doc->createElement(MAKE_UNICODE_STRING("Text")); rootElem->appendChild(doc->createTextNode(MAKE_UNICODE_STRING("\n"))); rootElem->appendChild(textElem); textElem->appendChild(doc->createTextNode( MAKE_UNICODE_STRING("\nTo whom it may concern\n\n...\n"))); return doc; } int main (int argc, char **argv) { try { XMLPlatformUtils::Initialize(); #ifndef XSEC_NO_XALAN XalanTransformer::initialize(); #endif XSECPlatformUtils::Initialise(); } catch (const XMLException &e) { cerr << "Error during initialisation of Xerces" << endl; cerr << "Error Message = : " << e.getMessage() << endl; } // Create a blank Document DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(MAKE_UNICODE_STRING("Core")); // Create a letter DOMDocument *doc = createLetter(impl); DOMElement *rootElem = doc->getDocumentElement(); // The signature XSECProvider prov; DSIGSignature *sig; DOMElement *sigNode; try { OpenSSLCryptoX509 * certs; DSIGKeyInfoX509 * keyInfoX509 = NULL; certs = new OpenSSLCryptoX509(); // Loading certificate certs->loadX509Base64Bin(cert, (unsigned int) strlen(cert)); // Create a signature object sig = prov.newSignature(); sig->setDSIGNSPrefix(MAKE_UNICODE_STRING("ds")); // Use it to create a blank signature DOM structure from the doc sigNode = sig->createBlankSignature(doc, CANON_C14N_COM, SIGNATURE_RSA, HASH_SHA1); // Inser the signature DOM nodes into the doc rootElem->appendChild(doc->createTextNode(MAKE_UNICODE_STRING("\n"))); rootElem->appendChild(sigNode); rootElem->appendChild(doc->createTextNode(MAKE_UNICODE_STRING("\n"))); // Create an envelope reference for the text to be signed DSIGReference * ref = sig->createReference(MAKE_UNICODE_STRING("")); ref->appendEnvelopedSignatureTransform(); // Create bio for private key BIO * bioMem = BIO_new(BIO_s_mem()); BIO_puts(bioMem, s_privateKey); // Create private key with bio EVP_PKEY * pk = PEM_read_bio_PrivateKey(bioMem, NULL, NULL, NULL); OpenSSLCryptoKeyRSA * rsaKey = new OpenSSLCryptoKeyRSA(pk); sig->setSigningKey(rsaKey); // Sign sig->sign(); // Add certificate to signature keyInfoX509 = sig->appendX509Data(); keyInfoX509->appendX509Certificate(certs->getDEREncodingSB().sbStrToXMLCh()); } catch (XSECException &e) { cerr << "An error occured during a signature load\n Message: " << e.getMsg() << endl; return false; } // Output docSetup(doc); cout << doc; return 0; }
<?xml version="1.0" encoding = "windows-1251"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
Name="simpleRSASign"
ProjectGUID="{0C26A39E-B5B4-48B4-A6AB-4A3112733BF9}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="..\..\..\..\Build\Win32\vc7\Debug"
IntermediateDirectory="..\..\..\..\Build\Win32\vc7\Debug\obj"
ConfigurationType="1"
UseOfMFC="2"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""..\..\..\..\..\..\ext\xerces-c-src_2_5_0\src";"..\..\..\..\..\..\ext\openssl-0.9.7c\inc32";..\..\..\..\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="libeay32.lib xerces-c_2D.lib
../../../../Build/Win32/vc7/Debug/xsec_1D.lib"
OutputFile="$(OutDir)/simpleRSASign.exe"
LinkIncremental="2"
AdditionalLibraryDirectories=""..\..\..\..\..\..\ext\openssl-0.9.7c\out32dll.dbg";"..\..\..\..\..\..\ext\xerces-c-src_2_5_0\Build\Win32\VC7\Debug""
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/simpleRSASign.pdb"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="1"
UseOfMFC="2"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
OmitFramePointers="TRUE"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/simpleRSASign.exe"
LinkIncremental="1"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
</Configurations>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
<File
RelativePath="..\..\..\..\src\samples\IOStreamOutputter.cpp">
</File>
<File
RelativePath="..\..\..\..\src\samples\simpleRSASign.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc">
<File
RelativePath="..\..\..\..\src\samples\IOStreamOutputter.hpp">
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
<?xml version="1.0" encoding = "windows-1251"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
Name="simpleRSAValidate"
ProjectGUID="{CA1B9FF0-367A-42EA-A97D-EADCCE837843}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="..\..\..\..\Build\Win32\vc7\Debug"
IntermediateDirectory="..\..\..\..\Build\Win32\vc7\Debug\obj"
ConfigurationType="1"
UseOfMFC="2"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""..\..\..\..\..\..\ext\xerces-c-src_2_5_0\src";"..\..\..\..\..\..\ext\openssl-0.9.7c\inc32";..\..\..\..\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="libeay32.lib xerces-c_2D.lib
../../../../Build/Win32/vc7/Debug/xsec_1D.lib"
OutputFile="$(OutDir)/simpleRSAValidate.exe"
LinkIncremental="2"
AdditionalLibraryDirectories=""..\..\..\..\..\..\ext\openssl-0.9.7c\out32dll.dbg";"..\..\..\..\..\..\ext\xerces-c-src_2_5_0\Build\Win32\VC7\Debug""
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/simpleRSAValidate.pdb"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="1"
UseOfMFC="2"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
OmitFramePointers="TRUE"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/simpleRSAValidate.exe"
LinkIncremental="1"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
</Configurations>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
<File
RelativePath="..\..\..\..\src\samples\IOStreamOutputter.cpp">
</File>
<File
RelativePath="..\..\..\..\src\samples\simpleRSAValidate.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc">
<File
RelativePath="..\..\..\..\src\samples\IOStreamOutputter.hpp">
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
Makefile.in
Description: Binary data
