mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2026-11-15 00:07:08 +01:00
Update POCO library.
This commit is contained in:
1 parent
8d15f4b6e9
commit
233fc103f9
2521 files changed
+257092
-72789
No files matched your search
@@ -21,6 +21,7 @@
|
||||
#include "EVPTest.h"
|
||||
#include "DigestEngineTest.h"
|
||||
#include "PKCS12ContainerTest.h"
|
||||
#include "EnvelopeTest.h"
|
||||
|
||||
|
||||
CppUnit::Test* CryptoTestSuite::suite()
|
||||
@@ -33,5 +34,6 @@ CppUnit::Test* CryptoTestSuite::suite()
|
||||
pSuite->addTest(EVPTest::suite());
|
||||
pSuite->addTest(DigestEngineTest::suite());
|
||||
pSuite->addTest(PKCS12ContainerTest::suite());
|
||||
pSuite->addTest(EnvelopeTest::suite());
|
||||
return pSuite;
|
||||
}
|
||||
+1
-1
@@ -47,7 +47,7 @@ void DigestEngineTest::testMD5()
|
||||
|
||||
engine.update("abcdefghijklmnopqrstuvwxyz");
|
||||
assertTrue (DigestEngine::digestToHex(engine.digest()) == "c3fcd3d76192e4007dfb496cca67e13b");
|
||||
|
||||
|
||||
engine.update("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
engine.update("abcdefghijklmnopqrstuvwxyz0123456789");
|
||||
assertTrue (DigestEngine::digestToHex(engine.digest()) == "d174ab98d277d9f5a5611c2c9f419d9f");
|
||||
|
||||
+5
-3
@@ -13,6 +13,7 @@
|
||||
#include "CppUnit/TestRunner.h"
|
||||
#include "CryptoTestSuite.h"
|
||||
#include "Poco/Crypto/Crypto.h"
|
||||
#include "Poco/Exception.h"
|
||||
|
||||
|
||||
class CryptoInitializer
|
||||
@@ -22,7 +23,7 @@ public:
|
||||
{
|
||||
Poco::Crypto::initializeCrypto();
|
||||
}
|
||||
|
||||
|
||||
~CryptoInitializer()
|
||||
{
|
||||
Poco::Crypto::uninitializeCrypto();
|
||||
@@ -33,11 +34,12 @@ public:
|
||||
int main(int ac, char **av)
|
||||
{
|
||||
CryptoInitializer ci;
|
||||
|
||||
|
||||
std::vector<std::string> args;
|
||||
for (int i = 0; i < ac; ++i)
|
||||
args.push_back(std::string(av[i]));
|
||||
CppUnit::TestRunner runner;
|
||||
runner.addTest("CryptoTestSuite", CryptoTestSuite::suite());
|
||||
return runner.run(args) ? 0 : 1;
|
||||
CppUnitPocoExceptionText (exc);
|
||||
return runner.run(args, exc) ? 0 : 1;
|
||||
}
|
||||
+182
@@ -9,9 +9,13 @@
|
||||
|
||||
|
||||
#include "EVPTest.h"
|
||||
#include "PKCS12ContainerTest.h"
|
||||
#include "Poco/Crypto/RSAKey.h"
|
||||
#include "Poco/Crypto/ECKey.h"
|
||||
#include "Poco/Crypto/EVPPKey.h"
|
||||
#include "Poco/Crypto/CipherFactory.h"
|
||||
#include "Poco/Crypto/Cipher.h"
|
||||
#include "Poco/Crypto/X509Certificate.h"
|
||||
#include "Poco/TemporaryFile.h"
|
||||
#include "Poco/StreamCopier.h"
|
||||
#include "CppUnit/TestCaller.h"
|
||||
@@ -28,6 +32,58 @@ using Poco::TemporaryFile;
|
||||
using Poco::StreamCopier;
|
||||
|
||||
|
||||
static const std::string anyPemRSA(
|
||||
"-----BEGIN CERTIFICATE-----\r\n"
|
||||
"MIICaDCCAdECCQCzfxSsk7yaLjANBgkqhkiG9w0BAQUFADBzMQswCQYDVQQGEwJB\r\n"
|
||||
"VDESMBAGA1UECBMJQ2FyaW50aGlhMRIwEAYDVQQHEwlTdC4gSmFrb2IxDzANBgNV\r\n"
|
||||
"BAoTBkFwcEluZjEPMA0GA1UEAxMGQXBwSW5mMRowGAYJKoZIhvcNAQkBFgthcHBA\r\n"
|
||||
"aW5mLmNvbTAeFw0wNjAzMDExMzA3MzFaFw0wNjAzMzExMzA3MzFaMH4xCzAJBgNV\r\n"
|
||||
"BAYTAkFUMRIwEAYDVQQIEwlDYXJpbnRoaWExETAPBgNVBAcTCFN0IEpha29iMRww\r\n"
|
||||
"GgYDVQQKExNBcHBsaWVkIEluZm9ybWF0aWNzMQowCAYDVQQDFAEqMR4wHAYJKoZI\r\n"
|
||||
"hvcNAQkBFg9pbmZvQGFwcGluZi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ\r\n"
|
||||
"AoGBAJHGyXDHyCYoWz+65ltNwwZbhwOGnxr9P1WMATuFJh0bPBZxKbZRdbTm9KhZ\r\n"
|
||||
"OlvsEIsfgiYdsxURYIqXfEgISYLZcZY0pQwGEOmB+0NeC/+ENSfOlNSthx6zSVlc\r\n"
|
||||
"zhJ7+dJOGwepHAiLr1fRuc5jogYLraE+lKTnqAAFfzwvti77AgMBAAEwDQYJKoZI\r\n"
|
||||
"hvcNAQEFBQADgYEAY/ZoeY1ukkEJX7259NeoVM0oahlulWV0rlCqyaeosOiDORPT\r\n"
|
||||
"m6X1w/5MTCf9VyaD1zukoSZ4QqNVjHFXcXidbB7Tgt3yRuZ5PC5LIFCDPv9mgPne\r\n"
|
||||
"mUA70yfctNfza2z3ZiQ6NDkW3mZX+1tmxYIrJQIrkVeYeqf1Gh2nyZrUMcE=\r\n"
|
||||
"-----END CERTIFICATE-----\r\n"
|
||||
"-----BEGIN RSA PRIVATE KEY-----\r\n"
|
||||
"Proc-Type: 4,ENCRYPTED\r\n"
|
||||
"DEK-Info: DES-EDE3-CBC,E7AE93C9E49184EA\r\n"
|
||||
"\r\n"
|
||||
"A2IqzNcWs+I5vzV+i+woDk56+yr58eU0Onw8eEvXkLjnSc58JU4327IF7yUbKWdW\r\n"
|
||||
"Q7BYGGOkVFiZ7ANOwviDg5SUhxRDWCcW8dS6/p1vfdQ1C3qj2OwJjkpg0aDBIzJn\r\n"
|
||||
"FzgguT3MF3ama77vxv0S3kOfmCj62MLqPGpj5pQ0/1hefRFbL8oAX8bXUN7/rmGM\r\n"
|
||||
"Zc0QyzFZv2iQ04dY/6TNclwKPB4H0On4K+8BMs3PRkWA0clCaQaFO2+iwnk3XZfe\r\n"
|
||||
"+MsKUEbLCpAQeYspYv1cw38dCdWq1KTP5aJk+oXgwjfX5cAaPTz74NTqTIsCcaTD\r\n"
|
||||
"3vy7ukJYFlDR9Kyo7z8rMazYrKJslhnuRH0BhK9st9McwL957j5tZmrKyraCcmCx\r\n"
|
||||
"dMAGcsis1va3ayYZpIpFqA4EhYrTM+6N8ZRfUap20+b5IQwHfTQDejUhL6rBwy7j\r\n"
|
||||
"Ti5yD83/itoOMyXq2sV/XWfVD5zk/P5iv22O1EAQMhhnPB9K/I/JhuSGQJfn3cNh\r\n"
|
||||
"ykOUYT0+vDeSeEVa+FVEP1W35G0alTbKbNs5Tb8KxJ3iDJUxokM//SvPXZy9hOVX\r\n"
|
||||
"Y05imB04J15DaGbAHlNzunhuJi7121WV/JRXZRW9diE6hwpD8rwqi3FMuRUmy7U9\r\n"
|
||||
"aFA5poKRAYlo9YtZ3YpFyjGKB6MfCQcB2opuSnQ/gbugV41m67uQ4CDwWLaNRkTb\r\n"
|
||||
"GlsMBNcHnidg15Bsat5HaB7l250ukrI13Uw1MYdDUzaS3gPfw9aC4F2w0p3U+DPH\r\n"
|
||||
"80/zePxtroR7T4/+rI136Rl+aMXDMOEGCX1TVP8rjuZzuRyUSUKC8Q==\r\n"
|
||||
"-----END RSA PRIVATE KEY-----\r\n"
|
||||
"-----BEGIN CERTIFICATE-----\r\n"
|
||||
"MIICXTCCAcYCCQC1Vk/N8qR4AjANBgkqhkiG9w0BAQUFADBzMQswCQYDVQQGEwJB\r\n"
|
||||
"VDESMBAGA1UECBMJQ2FyaW50aGlhMRIwEAYDVQQHEwlTdC4gSmFrb2IxDzANBgNV\r\n"
|
||||
"BAoTBkFwcEluZjEPMA0GA1UEAxMGQXBwSW5mMRowGAYJKoZIhvcNAQkBFgthcHBA\r\n"
|
||||
"aW5mLmNvbTAeFw0wNjAyMjcxMzI3MThaFw0wNjAzMjkxMzI3MThaMHMxCzAJBgNV\r\n"
|
||||
"BAYTAkFUMRIwEAYDVQQIEwlDYXJpbnRoaWExEjAQBgNVBAcTCVN0LiBKYWtvYjEP\r\n"
|
||||
"MA0GA1UEChMGQXBwSW5mMQ8wDQYDVQQDEwZBcHBJbmYxGjAYBgkqhkiG9w0BCQEW\r\n"
|
||||
"C2FwcEBpbmYuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsFXiPuicN\r\n"
|
||||
"Im4oJwF8NuaFN+lgYwcZ6dAO3ILIR3kLA2PxF8HSQLfF8J8a4odZhLhctIMAKTxm\r\n"
|
||||
"k0w8TW5qhL8QLdGzY9vzvkgdKOkan2t3sMeXJAfrM1AphTsmgntAQazGZjOj5p4W\r\n"
|
||||
"jDnxQ+VXAylqwjHh49eSBxM3wgoscF4iLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GB\r\n"
|
||||
"AIpfLdXiKchPvFMhQS8xTtXvrw5dVL3yImUMYs4GQi8RrjGmfGB3yMAR7B/b8v4a\r\n"
|
||||
"+ztfusgWAWiUKuSGTk4S8YB0fsFlmOv0WDr+PyZ4Lui/a8opbyzGE7rqpnF/s0GO\r\n"
|
||||
"M7uLCNNwIN7WhmxcWV0KZU1wTppoSWPJda1yTbBzF9XP\r\n"
|
||||
"-----END CERTIFICATE-----\r\n"
|
||||
);
|
||||
|
||||
|
||||
EVPTest::EVPTest(const std::string& name): CppUnit::TestCase(name)
|
||||
{
|
||||
}
|
||||
@@ -512,6 +568,124 @@ void EVPTest::testECEVPSaveLoadFileNoPass()
|
||||
}
|
||||
|
||||
|
||||
void EVPTest::testRSAEVPKeyFromX509()
|
||||
{
|
||||
std::istringstream str(anyPemRSA);
|
||||
X509Certificate cert(str);
|
||||
EVPPKey publicKey(cert);
|
||||
std::istringstream str2(anyPemRSA);
|
||||
EVPPKey privateKey(0, &str2, "test");
|
||||
Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(publicKey);
|
||||
Cipher::Ptr pCipher2 = CipherFactory::defaultFactory().createCipher(privateKey);
|
||||
std::string val("lets do some encryption");
|
||||
std::string enc = pCipher->encryptString(val);
|
||||
std::string dec = pCipher2->decryptString(enc);
|
||||
assertTrue (dec == val);
|
||||
}
|
||||
|
||||
|
||||
void EVPTest::testRSAEVPKeyFromPKCS12()
|
||||
{
|
||||
std::string file = PKCS12ContainerTest::getTestFilesPath("full");
|
||||
PKCS12Container pkcs12(file.c_str(), "crypto");
|
||||
assertTrue (pkcs12.hasKey());
|
||||
EVPPKey pKey(pkcs12);
|
||||
assertTrue (EVP_PKEY_RSA == pKey.type());
|
||||
Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(pKey);
|
||||
Cipher::Ptr pCipher2 = CipherFactory::defaultFactory().createCipher(pKey);
|
||||
std::string val("lets do some encryption");
|
||||
std::string enc = pCipher->encryptString(val);
|
||||
std::string dec = pCipher2->decryptString(enc);
|
||||
assertTrue (dec == val);
|
||||
}
|
||||
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
|
||||
void EVPTest::testRSAEVPKeyByLength()
|
||||
{
|
||||
try
|
||||
{
|
||||
EVPPKey key(EVP_PKEY_RSA, 1024);
|
||||
std::ostringstream strPub;
|
||||
std::ostringstream strPriv;
|
||||
key.save(&strPub, &strPriv);
|
||||
std::string pubKey = strPub.str();
|
||||
std::string privKey = strPriv.str();
|
||||
|
||||
// now do the round trip
|
||||
std::istringstream iPub(pubKey);
|
||||
std::istringstream iPriv(privKey);
|
||||
EVPPKey key2(&iPub, &iPriv);
|
||||
|
||||
assertTrue (key == key2);
|
||||
assertTrue (!(key != key2));
|
||||
|
||||
EVPPKey keyNE(EVP_PKEY_RSA, 2048);
|
||||
assertTrue (key != keyNE);
|
||||
assertTrue (!(key == keyNE));
|
||||
assertTrue (key2 != keyNE);;
|
||||
assertTrue (!(key2 == keyNE));
|
||||
|
||||
std::istringstream iPriv2(privKey);
|
||||
EVPPKey key3(0, &iPriv2);
|
||||
std::ostringstream strPub3;
|
||||
key3.save(&strPub3);
|
||||
std::string pubFromPrivate = strPub3.str();
|
||||
assertTrue (pubFromPrivate == pubKey);
|
||||
}
|
||||
catch(Poco::Exception& ex)
|
||||
{
|
||||
std::cerr << ex.displayText() << std::endl;
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
||||
|
||||
void EVPTest::testECEVPKeyByLength()
|
||||
{
|
||||
try
|
||||
{
|
||||
EVPPKey key(EVP_PKEY_EC, NID_X9_62_prime256v1);
|
||||
std::ostringstream strPub;
|
||||
std::ostringstream strPriv;
|
||||
key.save(&strPub, &strPriv);
|
||||
std::string pubKey = strPub.str();
|
||||
std::string privKey = strPriv.str();
|
||||
|
||||
// now do the round trip
|
||||
std::istringstream iPub(pubKey);
|
||||
std::istringstream iPriv(privKey);
|
||||
EVPPKey key2(&iPub, &iPriv);
|
||||
|
||||
assertTrue (key == key2);
|
||||
assertTrue (!(key != key2));
|
||||
|
||||
EVPPKey keyNE(EVP_PKEY_EC, NID_X9_62_prime256v1);
|
||||
assertTrue (key != keyNE);
|
||||
assertTrue (!(key == keyNE));
|
||||
assertTrue (key2 != keyNE);;
|
||||
assertTrue (!(key2 == keyNE));
|
||||
|
||||
std::istringstream iPriv2(privKey);
|
||||
EVPPKey key3(0, &iPriv2);
|
||||
std::ostringstream strPub3;
|
||||
key3.save(&strPub3);
|
||||
std::string pubFromPrivate = strPub3.str();
|
||||
assertTrue (pubFromPrivate == pubKey);
|
||||
}
|
||||
catch(Poco::Exception& ex)
|
||||
{
|
||||
std::cerr << ex.displayText() << std::endl;
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // OPENSSL_VERSION_NUMBER >= 0x30000000
|
||||
#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
|
||||
|
||||
void EVPTest::setUp()
|
||||
{
|
||||
}
|
||||
@@ -534,6 +708,14 @@ CppUnit::Test* EVPTest::suite()
|
||||
CppUnit_addTest(pSuite, EVPTest, testECEVPSaveLoadStreamNoPass);
|
||||
CppUnit_addTest(pSuite, EVPTest, testECEVPSaveLoadFile);
|
||||
CppUnit_addTest(pSuite, EVPTest, testECEVPSaveLoadFileNoPass);
|
||||
CppUnit_addTest(pSuite, EVPTest, testRSAEVPKeyFromX509);
|
||||
CppUnit_addTest(pSuite, EVPTest, testRSAEVPKeyFromPKCS12);
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
CppUnit_addTest(pSuite, EVPTest, testRSAEVPKeyByLength);
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
||||
CppUnit_addTest(pSuite, EVPTest, testECEVPKeyByLength);
|
||||
#endif // OPENSSL_VERSION_NUMBER >= 0x30000000
|
||||
#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
+10
@@ -34,6 +34,16 @@ public:
|
||||
void testECEVPSaveLoadFile();
|
||||
void testECEVPSaveLoadFileNoPass();
|
||||
|
||||
void testRSAEVPKeyFromX509();
|
||||
void testRSAEVPKeyFromPKCS12();
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
void testRSAEVPKeyByLength();
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
||||
void testECEVPKeyByLength();
|
||||
#endif // OPENSSL_VERSION_NUMBER >= 0x30000000L
|
||||
#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
|
||||
void setUp();
|
||||
void tearDown();
|
||||
|
||||
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
//
|
||||
// EnvelopeTest.cpp
|
||||
//
|
||||
// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#include "EnvelopeTest.h"
|
||||
#include "CppUnit/TestCaller.h"
|
||||
#include "CppUnit/TestSuite.h"
|
||||
#include "Poco/Crypto/Envelope.h"
|
||||
#include "Poco/Crypto/EVPPKey.h"
|
||||
#include <iostream>
|
||||
|
||||
|
||||
using Poco::Crypto::Envelope;
|
||||
using Poco::Crypto::EVPPKey;
|
||||
|
||||
|
||||
EnvelopeTest::EnvelopeTest(const std::string& name): CppUnit::TestCase(name)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
EnvelopeTest::~EnvelopeTest()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void EnvelopeTest::testOneKeyRSA()
|
||||
{
|
||||
try
|
||||
{
|
||||
EVPPKey key(EVP_PKEY_RSA, 1024);
|
||||
Envelope env(key, NID_aes_256_cbc);
|
||||
assertEqual(env.cipherNID(), NID_aes_256_cbc);
|
||||
std::string dec = "let's encrypt some text";
|
||||
env.seal(dec);
|
||||
assertTrue(env.openAsString(key, env.keys()[0]) == dec);
|
||||
}
|
||||
catch(const Poco::Exception& e)
|
||||
{
|
||||
std::cerr << e.displayText() << '\n';
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void EnvelopeTest::testMultiKeyRSA()
|
||||
{
|
||||
try
|
||||
{
|
||||
Envelope::EVPPKeyVec keyVec;
|
||||
keyVec.emplace_back(EVP_PKEY_RSA, 1024);
|
||||
keyVec.emplace_back(EVP_PKEY_RSA, 2048);
|
||||
keyVec.emplace_back(EVP_PKEY_RSA, 1024);
|
||||
Envelope env(keyVec, NID_aes_256_cbc);
|
||||
assertEqual(env.cipherNID(), NID_aes_256_cbc);
|
||||
std::string dec = "let's encrypt some text";
|
||||
env.seal(dec);
|
||||
int i = 0;
|
||||
for (const auto& key : keyVec)
|
||||
{
|
||||
assertTrue(env.openAsString(key, env.keys()[i++]) == dec);
|
||||
}
|
||||
}
|
||||
catch(const Poco::Exception& e)
|
||||
{
|
||||
std::cerr << e.displayText() << '\n';
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void EnvelopeTest::testRSATransfer()
|
||||
{
|
||||
try
|
||||
{
|
||||
EVPPKey key(EVP_PKEY_RSA, 1024);
|
||||
Envelope env1(key, NID_aes_256_cbc);
|
||||
std::string dec = "let's encrypt some text";
|
||||
|
||||
Envelope env2(key, NID_aes_256_cbc);
|
||||
env2.setContent(env1.seal(dec));
|
||||
assertTrue(env2.openAsString(key, env1.keys()[0], env1.iv()) == dec);
|
||||
}
|
||||
catch(const Poco::Exception& e)
|
||||
{
|
||||
std::cerr << e.displayText() << '\n';
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void EnvelopeTest::testRSAMultiTransfer()
|
||||
{
|
||||
try
|
||||
{
|
||||
Envelope::EVPPKeyVec keyVec;
|
||||
keyVec.emplace_back(EVP_PKEY_RSA, 1024);
|
||||
keyVec.emplace_back(EVP_PKEY_RSA, 2048);
|
||||
keyVec.emplace_back(EVP_PKEY_RSA, 1024);
|
||||
|
||||
Envelope env0(keyVec, NID_aes_256_cbc);
|
||||
std::string dec = "let's encrypt some text";
|
||||
|
||||
const Envelope::ByteVec enc = env0.seal(dec);
|
||||
|
||||
int i = 0;
|
||||
for (const auto& key : keyVec)
|
||||
{
|
||||
Envelope env(key, NID_aes_256_cbc);
|
||||
env.setContent(enc);
|
||||
assertTrue(env.openAsString(key, env0.keys()[i++], env0.iv()) == dec);
|
||||
}
|
||||
}
|
||||
catch(const Poco::Exception& e)
|
||||
{
|
||||
std::cerr << e.displayText() << '\n';
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
void EnvelopeTest::setUp()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void EnvelopeTest::tearDown()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
CppUnit::Test* EnvelopeTest::suite()
|
||||
{
|
||||
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("EnvelopeTest");
|
||||
|
||||
CppUnit_addTest(pSuite, EnvelopeTest, testOneKeyRSA);
|
||||
CppUnit_addTest(pSuite, EnvelopeTest, testMultiKeyRSA);
|
||||
CppUnit_addTest(pSuite, EnvelopeTest, testRSATransfer);
|
||||
CppUnit_addTest(pSuite, EnvelopeTest, testRSAMultiTransfer);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
//
|
||||
// EnvelopeTest.h
|
||||
//
|
||||
// Definition of the EnvelopeTest class.
|
||||
//
|
||||
// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#ifndef EnvelopeTest_INCLUDED
|
||||
#define EnvelopeTest_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Crypto/Crypto.h"
|
||||
#include "CppUnit/TestCase.h"
|
||||
|
||||
|
||||
class EnvelopeTest: public CppUnit::TestCase
|
||||
{
|
||||
public:
|
||||
EnvelopeTest(const std::string& name);
|
||||
~EnvelopeTest();
|
||||
|
||||
void testOneKeyRSA();
|
||||
void testMultiKeyRSA();
|
||||
void testRSATransfer();
|
||||
void testRSAMultiTransfer();
|
||||
|
||||
void setUp();
|
||||
void tearDown();
|
||||
|
||||
static CppUnit::Test* suite();
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
|
||||
#endif // EnvelopeTest_INCLUDED
|
||||
+41
-41
@@ -134,29 +134,29 @@ void PKCS12ContainerTest::fullList(const PKCS12Container::CAList& caList,
|
||||
assertTrue (caNamesList[certOrder[1]].empty());
|
||||
}
|
||||
|
||||
assertTrue (caList[certOrder[0]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
|
||||
assertTrue (caList[certOrder[0]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Intermediate CA v3");
|
||||
assertTrue (caList[certOrder[0]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
|
||||
assertTrue (caList[certOrder[0]].commonName() == "CV Root CA v3");
|
||||
assertTrue (caList[certOrder[0]].commonName() == "CV Intermediate CA v3");
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
|
||||
assertTrue (caList[certOrder[0]].serialNumber() == "C3ECA1FCEAA16055");
|
||||
assertTrue (caList[certOrder[0]].serialNumber() == "1000");
|
||||
assertTrue (caList[certOrder[0]].version() == 3);
|
||||
assertTrue (caList[certOrder[0]].signatureAlgorithm() == "sha256WithRSAEncryption");
|
||||
|
||||
assertTrue (caList[certOrder[1]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Intermediate CA v3");
|
||||
assertTrue (caList[certOrder[1]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
|
||||
assertTrue (caList[certOrder[1]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
|
||||
assertTrue (caList[certOrder[1]].commonName() == "CV Intermediate CA v3");
|
||||
assertTrue (caList[certOrder[1]].commonName() == "CV Root CA v3");
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
|
||||
assertTrue (caList[certOrder[1]].serialNumber() == "1000");
|
||||
assertTrue (caList[certOrder[1]].serialNumber() == "C3ECA1FCEAA16055");
|
||||
assertTrue (caList[certOrder[1]].version() == 3);
|
||||
assertTrue (caList[certOrder[1]].signatureAlgorithm() == "sha256WithRSAEncryption");
|
||||
}
|
||||
@@ -200,36 +200,36 @@ void PKCS12ContainerTest::certsOnlyList(const PKCS12Container::CAList& caList,
|
||||
|
||||
if (caNamesList.size())
|
||||
{
|
||||
assertTrue (caNamesList[certOrder[0]].empty());
|
||||
assertTrue (caNamesList[certOrder[1]].empty());
|
||||
assertTrue (caNamesList[certOrder[0]] == "vally-ca");
|
||||
assertTrue (caNamesList[certOrder[1]] == "vally-ca");
|
||||
assertTrue (caNamesList[certOrder[2]].empty());
|
||||
assertTrue (caNamesList[certOrder[3]] == "vally-ca");
|
||||
assertTrue (caNamesList[certOrder[4]] == "vally-ca");
|
||||
assertTrue (caNamesList[certOrder[3]].empty());
|
||||
assertTrue (caNamesList[certOrder[4]].empty());
|
||||
}
|
||||
|
||||
assertTrue (caList[certOrder[0]].subjectName() == "C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3");
|
||||
assertTrue (caList[certOrder[0]].issuerName() == "C=US,O=Internet Security Research Group,CN=ISRG Root X1");
|
||||
assertTrue (caList[certOrder[0]].commonName() == "Let's Encrypt Authority X3");
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_COUNTRY) == "US");
|
||||
assertTrue (caList[certOrder[0]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Intermediate CA v3");
|
||||
assertTrue (caList[certOrder[0]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
|
||||
assertTrue (caList[certOrder[0]].commonName() == "CV Intermediate CA v3");
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE).empty());
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Let's Encrypt");
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
|
||||
assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
|
||||
assertTrue (caList[certOrder[0]].serialNumber() == "D3B17226342332DCF40528512AEC9C6A");
|
||||
assertTrue (caList[certOrder[0]].serialNumber()== "1000");
|
||||
assertTrue (caList[certOrder[0]].version() == 3);
|
||||
assertTrue (caList[certOrder[0]].signatureAlgorithm() == "sha256WithRSAEncryption");
|
||||
|
||||
assertTrue (caList[certOrder[1]].subjectName() == "C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3");
|
||||
assertTrue (caList[certOrder[1]].issuerName() == "O=Digital Signature Trust Co.,CN=DST Root CA X3");
|
||||
assertTrue (caList[certOrder[1]].commonName() == "Let's Encrypt Authority X3");
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_COUNTRY) == "US");
|
||||
assertTrue (caList[certOrder[1]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
|
||||
assertTrue (caList[certOrder[1]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
|
||||
assertTrue (caList[certOrder[1]].commonName() == "CV Root CA v3");
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE).empty());
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Let's Encrypt");
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
|
||||
assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
|
||||
assertTrue (caList[certOrder[1]].serialNumber() == "0A0141420000015385736A0B85ECA708");
|
||||
assertTrue (caList[certOrder[1]].serialNumber() == "C3ECA1FCEAA16055");
|
||||
assertTrue (caList[certOrder[1]].version() == 3);
|
||||
assertTrue (caList[certOrder[1]].signatureAlgorithm() == "sha256WithRSAEncryption");
|
||||
|
||||
@@ -246,31 +246,32 @@ void PKCS12ContainerTest::certsOnlyList(const PKCS12Container::CAList& caList,
|
||||
assertTrue (caList[certOrder[2]].version() == 3);
|
||||
assertTrue (caList[certOrder[2]].signatureAlgorithm() == "sha256WithRSAEncryption");
|
||||
|
||||
assertTrue (caList[certOrder[3]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
|
||||
assertTrue (caList[certOrder[3]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
|
||||
assertTrue (caList[certOrder[3]].commonName() == "CV Root CA v3");
|
||||
assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
|
||||
assertTrue (caList[certOrder[3]].subjectName() == "C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3");
|
||||
assertTrue (caList[certOrder[3]].issuerName() == "O=Digital Signature Trust Co.,CN=DST Root CA X3");
|
||||
assertTrue (caList[certOrder[3]].commonName() == "Let's Encrypt Authority X3");
|
||||
assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_COUNTRY) == "US");
|
||||
assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
|
||||
assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
|
||||
assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
|
||||
assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE).empty());
|
||||
assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Let's Encrypt");
|
||||
assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
|
||||
assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
|
||||
assertTrue (caList[certOrder[3]].serialNumber() == "C3ECA1FCEAA16055");
|
||||
assertTrue (caList[certOrder[3]].serialNumber() == "0A0141420000015385736A0B85ECA708");
|
||||
assertTrue (caList[certOrder[3]].version() == 3);
|
||||
assertTrue (caList[certOrder[3]].signatureAlgorithm() == "sha256WithRSAEncryption");
|
||||
|
||||
assertTrue (caList[certOrder[4]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Intermediate CA v3");
|
||||
assertTrue (caList[certOrder[4]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
|
||||
assertTrue (caList[certOrder[4]].commonName() == "CV Intermediate CA v3");
|
||||
assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
|
||||
assertTrue (caList[certOrder[4]].subjectName() == "C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3");
|
||||
assertTrue (caList[certOrder[4]].issuerName() == "C=US,O=Internet Security Research Group,CN=ISRG Root X1");
|
||||
assertTrue (caList[certOrder[4]].commonName() == "Let's Encrypt Authority X3");
|
||||
assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_COUNTRY) == "US");
|
||||
assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
|
||||
assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
|
||||
assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
|
||||
assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE).empty());
|
||||
assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Let's Encrypt");
|
||||
assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
|
||||
assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
|
||||
assertTrue (caList[certOrder[4]].serialNumber()== "1000");
|
||||
assertTrue (caList[certOrder[4]].serialNumber() == "D3B17226342332DCF40528512AEC9C6A");
|
||||
assertTrue (caList[certOrder[4]].version() == 3);
|
||||
assertTrue (caList[certOrder[4]].signatureAlgorithm() == "sha256WithRSAEncryption");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -281,9 +282,8 @@ void PKCS12ContainerTest::testPEMReadWrite()
|
||||
std::string file = getTestFilesPath("certs-only", "pem");
|
||||
X509Certificate::List certsOnly = X509Certificate::readPEM(file);
|
||||
assertTrue (certsOnly.size() == 5);
|
||||
// PEM is written by openssl in reverse order from p12
|
||||
std::vector<int> certOrder;
|
||||
for(int i = (int)certsOnly.size() - 1; i >= 0; --i) certOrder.push_back(i);
|
||||
for(int i = 0; i < certsOnly.size(); ++i) certOrder.push_back(i);
|
||||
certsOnlyList(certsOnly, PKCS12Container::CANameList(), certOrder);
|
||||
|
||||
TemporaryFile tmpFile;
|
||||
@@ -301,7 +301,7 @@ void PKCS12ContainerTest::testPEMReadWrite()
|
||||
assertTrue (full.size() == 2);
|
||||
|
||||
certOrder.clear();
|
||||
for(int i = (int)full.size() - 1; i >= 0; --i) certOrder.push_back(i);
|
||||
for(int i = 0; i < full.size(); ++i) certOrder.push_back(i);
|
||||
fullList(full, PKCS12Container::CANameList(), certOrder);
|
||||
|
||||
TemporaryFile tmpFile2;
|
||||
|
||||
+3
-2
@@ -35,9 +35,10 @@ public:
|
||||
|
||||
static CppUnit::Test* suite();
|
||||
|
||||
private:
|
||||
std::string getTestFilesPath(const std::string& name,
|
||||
static std::string getTestFilesPath(const std::string& name,
|
||||
const std::string& ext = "p12");
|
||||
|
||||
private:
|
||||
void certsOnly(const Poco::Crypto::PKCS12Container& pkcs12);
|
||||
void certsOnlyList(const Poco::Crypto::PKCS12Container::CAList& caList,
|
||||
const Poco::Crypto::PKCS12Container::CANameList& caNamesList,
|
||||
|
||||
+32
-2
@@ -15,7 +15,10 @@
|
||||
#include "Poco/Crypto/CipherFactory.h"
|
||||
#include "Poco/Crypto/Cipher.h"
|
||||
#include "Poco/Crypto/X509Certificate.h"
|
||||
#include "Poco/Path.h"
|
||||
#include "Poco/File.h"
|
||||
#include <sstream>
|
||||
#include <fstream>
|
||||
|
||||
|
||||
using namespace Poco::Crypto;
|
||||
@@ -203,6 +206,33 @@ void RSATest::testRSACipher()
|
||||
std::string dec = pCipher->decryptString(enc);
|
||||
assertTrue (dec == val);
|
||||
}
|
||||
|
||||
RSAKey key(RSAKey::KL_1024, RSAKey::EXP_SMALL);
|
||||
std::string pubKeyFile = Poco::Path::temp() + "poco.key.pub";
|
||||
std::string privKeyFile = Poco::Path::temp() + "poco.key.priv";
|
||||
|
||||
if (Poco::File(pubKeyFile).exists()) Poco::File(pubKeyFile).remove();
|
||||
if (Poco::File(privKeyFile).exists()) Poco::File(privKeyFile).remove();
|
||||
std::ofstream strPub(pubKeyFile);
|
||||
std::ofstream strPriv(privKeyFile);
|
||||
key.save(&strPub, &strPriv);
|
||||
strPub.close();
|
||||
strPriv.close();
|
||||
|
||||
Poco::Crypto::RSAKey encryptKey(pubKeyFile);
|
||||
Poco::Crypto::RSAKey decryptKey(pubKeyFile, privKeyFile);
|
||||
|
||||
Poco::Crypto::CipherFactory factory;
|
||||
auto iengine = factory.createCipher(encryptKey);
|
||||
auto oengine = factory.createCipher(decryptKey);
|
||||
|
||||
std::string ss = "test_str";
|
||||
auto enc = iengine->encryptString(ss);
|
||||
auto dec = oengine->decryptString(enc);
|
||||
assertEqual (ss, dec);
|
||||
|
||||
delete iengine;
|
||||
delete oengine;
|
||||
}
|
||||
|
||||
|
||||
@@ -221,7 +251,7 @@ void RSATest::testRSACipherLarge()
|
||||
sizes.push_back (16383);
|
||||
sizes.push_back (16384);
|
||||
sizes.push_back (16385);
|
||||
|
||||
|
||||
Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(RSAKey(RSAKey::KL_1024, RSAKey::EXP_SMALL));
|
||||
for (std::vector<std::size_t>::const_iterator it = sizes.begin(); it != sizes.end(); ++it)
|
||||
{
|
||||
@@ -243,7 +273,7 @@ void RSATest::testCertificate()
|
||||
Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(publicKey);
|
||||
Cipher::Ptr pCipher2 = CipherFactory::defaultFactory().createCipher(privateKey);
|
||||
std::string val("lets do some encryption");
|
||||
|
||||
|
||||
std::string enc = pCipher->encryptString(val);
|
||||
std::string dec = pCipher2->decryptString(enc);
|
||||
assertTrue (dec == val);
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@ public:
|
||||
{
|
||||
Poco::Crypto::initializeCrypto();
|
||||
}
|
||||
|
||||
|
||||
~CryptoInitializer()
|
||||
{
|
||||
Poco::Crypto::uninitializeCrypto();
|
||||
@@ -42,7 +42,7 @@ int _tmain(int argc, wchar_t* argv[])
|
||||
std::wcstombs(buffer, argv[i], sizeof(buffer));
|
||||
args.push_back(std::string(buffer));
|
||||
}
|
||||
CppUnit::TestRunner runner;
|
||||
CppUnit::TestRunner runner;
|
||||
runner.addTest("CryptoTestSuite", CryptoTestSuite::suite());
|
||||
return runner.run(args) ? 0 : 1;
|
||||
}
|
||||
+1
-1
@@ -22,7 +22,7 @@ public:
|
||||
{
|
||||
Poco::Crypto::initializeCrypto();
|
||||
}
|
||||
|
||||
|
||||
~CryptoInitializer()
|
||||
{
|
||||
Poco::Crypto::uninitializeCrypto();
|
||||
|
||||
Reference in new issue
Block a user