Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP1:GA
xmltooling.15367
0012-CPPXT-110-Add-test-path-for-RSA-loadXXXBig...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0012-CPPXT-110-Add-test-path-for-RSA-loadXXXBigNums.patch of Package xmltooling.15367
From a673915585ca04c71f8330857472ad8233dbe3ea Mon Sep 17 00:00:00 2001 From: Rod Widdowson <rdw@steadingsoftware.com> Date: Tue, 1 Nov 2016 16:35:27 +0000 Subject: [PATCH 12/31] CPPXT-110 Add test path for RSA loadXXXBigNums https://issues.shibboleth.net/jira/browse/CPPXT-110 This completes the code coervage tests for the OpenSSLCryptoKeyRSA changes for OpenSSL 1.1 Add a test function to force the load of the RSA key from the <ds:RSAKeyValue>, then cast it and the credential into the base OpenSSL type. Throw various OpenSSL incantations at these to extract the OpenSSL struct and compare the two. This will need work when we move to OpenSSL 1.1 (since the structures become opaque). --- .../vc10/xmltoolingtest/xmltoolingtest.vcxproj | 6 +- .../xmltoolingtest/xmltoolingtest.vcxproj.filters | 12 +++- xmltoolingtest/InlineKeyResolverTest.h | 66 ++++++++++++++++++++++ 3 files changed, 78 insertions(+), 6 deletions(-) diff --git a/Projects/vc10/xmltoolingtest/xmltoolingtest.vcxproj b/Projects/vc10/xmltoolingtest/xmltoolingtest.vcxproj index 8399157..bedca98 100644 --- a/Projects/vc10/xmltoolingtest/xmltoolingtest.vcxproj +++ b/Projects/vc10/xmltoolingtest/xmltoolingtest.vcxproj @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Debug|Win32"> @@ -97,7 +97,7 @@ <DebugInformationFormat>EditAndContinue</DebugInformationFormat> </ClCompile> <Link> - <AdditionalDependencies>xerces-c_3D.lib;xsec_1D.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>xerces-c_3D.lib;xsec_1D.lib;libeay32D.lib;ssleay32D.lib;%(AdditionalDependencies)</AdditionalDependencies> <GenerateDebugInformation>true</GenerateDebugInformation> <SubSystem>Console</SubSystem> <RandomizedBaseAddress>false</RandomizedBaseAddress> @@ -452,4 +452,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> +</Project> \ No newline at end of file diff --git a/Projects/vc10/xmltoolingtest/xmltoolingtest.vcxproj.filters b/Projects/vc10/xmltoolingtest/xmltoolingtest.vcxproj.filters index d099072..58cc379 100644 --- a/Projects/vc10/xmltoolingtest/xmltoolingtest.vcxproj.filters +++ b/Projects/vc10/xmltoolingtest/xmltoolingtest.vcxproj.filters @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <Filter Include="Generated Code"> @@ -62,6 +62,9 @@ <ClCompile Include="SOAPTest.cpp"> <Filter>Generated Code</Filter> </ClCompile> + <ClCompile Include="CloneInputStreamTest.cpp"> + <Filter>Generated Code</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\..\XMLToolingTest\XMLObjectBaseTestCase.h"> @@ -120,8 +123,11 @@ <CustomBuild Include="..\..\..\XMLToolingTest\xmltoolingtest.h"> <Filter>Unit Tests</Filter> </CustomBuild> - <CustomBuild Include="..\..\..\XMLToolingTest\eSOAPTest.h"> + <CustomBuild Include="..\..\..\XMLToolingTest\CloneInputStreamTest.h"> + <Filter>Unit Tests</Filter> + </CustomBuild> + <CustomBuild Include="..\..\..\XMLToolingTest\SOAPTest.h"> <Filter>Unit Tests</Filter> </CustomBuild> </ItemGroup> -</Project> +</Project> \ No newline at end of file diff --git a/xmltoolingtest/InlineKeyResolverTest.h b/xmltoolingtest/InlineKeyResolverTest.h index a499d6a..6418ec2 100644 --- a/xmltoolingtest/InlineKeyResolverTest.h +++ b/xmltoolingtest/InlineKeyResolverTest.h @@ -21,11 +21,29 @@ #include "XMLObjectBaseTestCase.h" #include <fstream> + #include <xmltooling/security/X509Credential.h> #include <xmltooling/security/KeyInfoResolver.h> #include <xmltooling/signature/KeyInfo.h> + #include <xsec/enc/XSECCryptoKey.hpp> +#include <xsec/dsig/DSIGReference.hpp> +#include <xsec/dsig/DSIGSignature.hpp> +extern "C" { +#include <openssl/opensslv.h> +} + +// Force XMLSEC to assume OpenSSL +#define XSEC_HAVE_OPENSSL 1 + +#include <xsec/enc/OpenSSL/OpenSSLCryptoX509.hpp> +#include <xsec/enc/OpenSSL/OpenSSLCryptoKeyDSA.hpp> +#include <xsec/enc/OpenSSL/OpenSSLCryptoKeyEC.hpp> +#include <xsec/enc/OpenSSL/OpenSSLCryptoKeyRSA.hpp> + + + using namespace xmlsignature; class InlineKeyResolverTest : public CxxTest::TestSuite { @@ -65,6 +83,54 @@ public: TSM_ASSERT_EQUALS("Wrong CRL count.", cred->getCRLs().size(), 3); } + + void testOpenSSLRSA() { + string path=data_path + "KeyInfo1.xml"; + ifstream fs(path.c_str()); + DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs); + TS_ASSERT(doc!=nullptr); + const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); + TS_ASSERT(b!=nullptr); + auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc))); + TS_ASSERT(kiObject.get()!=nullptr); + + auto_ptr<X509Credential> cred(dynamic_cast<X509Credential*>(m_resolver->resolve(kiObject.get()))); + auto_ptr<X509Credential> key(dynamic_cast<X509Credential*>(m_resolver->resolve(kiObject.get(), Credential::RESOLVE_KEYS))); + + OpenSSLCryptoKeyRSA* sslCred = dynamic_cast<OpenSSLCryptoKeyRSA*>(cred->getPublicKey()); + OpenSSLCryptoKeyRSA* sslKey = dynamic_cast<OpenSSLCryptoKeyRSA*>(key->getPublicKey()); + + RSA* rsaCred = sslCred->getOpenSSLRSA(); + RSA* rsaKey = sslKey->getOpenSSLRSA(); + + BIGNUM* n = rsaCred->n; + BIGNUM* e = rsaCred->e; + BIGNUM* d = rsaCred->d; + BIGNUM* p = rsaCred->p; + BIGNUM* q = rsaCred->q; + BIGNUM* dmp1 = rsaCred->dmp1; + BIGNUM* dmq1 = rsaCred->dmq1; + BIGNUM* iqmp = rsaCred->iqmp; + + BIGNUM* kn = rsaKey->n; + BIGNUM* ke = rsaKey->e; + BIGNUM* kd = rsaKey->d; + BIGNUM* kp = rsaKey->p; + BIGNUM* kq = rsaKey->q; + BIGNUM* kdmp1 = rsaKey->dmp1; + BIGNUM* kdmq1 = rsaKey->dmq1; + BIGNUM* kiqmp = rsaKey->iqmp; + + TS_ASSERT(0 == BN_cmp(kn, n)); + TS_ASSERT(0 == BN_cmp(ke, e)); + TS_ASSERT(0 == BN_cmp(kd, d)); + TS_ASSERT(0 == BN_cmp(kp, p)); + TS_ASSERT(0 == BN_cmp(kq, q)); + TS_ASSERT(0 == BN_cmp(kdmp1, dmp1)); + TS_ASSERT(0 == BN_cmp(kdmq1, dmq1)); + TS_ASSERT(0 == BN_cmp(kiqmp, iqmp)); + } + void testDER() { string path=data_path + "KeyInfo5.xml"; ifstream fs(path.c_str()); -- 2.13.6
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor