diff --git a/unittest/cipherunittest/CMakeLists.txt b/unittest/cipherunittest/CMakeLists.txt new file mode 100644 index 00000000..d83673e7 --- /dev/null +++ b/unittest/cipherunittest/CMakeLists.txt @@ -0,0 +1,8 @@ +set( cipherunittest_bin_SRCS cipherunittest.cpp ) + +MY_AUTOMOC( cipherunittest_bin_SRCS ) + +add_executable(cipherunittest ${cipherunittest_bin_SRCS} ) + +target_link_libraries( cipherunittest qca ${QT_QTTEST_LIBRARY}) + diff --git a/unittest/cipherunittest/cipherunittest.cpp b/unittest/cipherunittest/cipherunittest.cpp index 6eea4160..0438b383 100644 --- a/unittest/cipherunittest/cipherunittest.cpp +++ b/unittest/cipherunittest/cipherunittest.cpp @@ -23,9 +23,74 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "cipherunittest.h" - #include <QtCrypto> +#include <QtTest/QtTest> + +class CipherUnitTest : public QObject +{ + + Q_OBJECT + +private slots: + void initTestCase(); + void cleanupTestCase(); + void aes128_data(); + void aes128(); + void aes128_cbc_data(); + void aes128_cbc(); + void aes128_cfb_data(); + void aes128_cfb(); + void aes128_ofb_data(); + void aes128_ofb(); + + void aes192_data(); + void aes192(); + void aes192_cbc_data(); + void aes192_cbc(); + void aes192_cfb_data(); + void aes192_cfb(); + void aes192_ofb_data(); + void aes192_ofb(); + + void aes256_data(); + void aes256(); + void aes256_cbc_data(); + void aes256_cbc(); + void aes256_cfb_data(); + void aes256_cfb(); + void aes256_ofb_data(); + void aes256_ofb(); + + void tripleDES_data(); + void tripleDES(); + + void des_data(); + void des(); + void des_pkcs7_data(); + void des_pkcs7(); + void des_cbc_data(); + void des_cbc(); + void des_cbc_pkcs7_data(); + void des_cbc_pkcs7(); + void des_cfb_data(); + void des_cfb(); + void des_ofb_data(); + void des_ofb(); + + void blowfish_data(); + void blowfish(); + void blowfish_cbc_data(); + void blowfish_cbc(); + void blowfish_cbc_pkcs7_data(); + void blowfish_cbc_pkcs7(); + void blowfish_cfb_data(); + void blowfish_cfb(); + void blowfish_ofb_data(); + void blowfish_ofb(); +private: + QCA::Initializer* m_init; + +}; void CipherUnitTest::initTestCase() { @@ -121,9 +186,9 @@ void CipherUnitTest::aes128() QCA::Cipher forwardCipher( QString( "aes128" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, - QCA::Encode, + QCA::Encode, key, - QCA::InitializationVector(), + QCA::InitializationVector(), provider ); QCOMPARE( forwardCipher.blockSize(), (unsigned)16 ); @@ -135,7 +200,7 @@ void CipherUnitTest::aes128() QVERIFY( forwardCipher.ok() ); QCOMPARE( QCA::arrayToHex( forwardCipher.final() ), QString( "" ) ); QVERIFY( forwardCipher.ok() ); - + QCA::Cipher reverseCipher( QString( "aes128" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -192,9 +257,9 @@ void CipherUnitTest::aes128_cbc() QCA::SymmetricKey key( QCA::hexToArray( keyText ) ); QCA::InitializationVector iv( QCA::hexToArray( ivText ) ); QCA::Cipher forwardCipher( QString( "aes128" ), - QCA::Cipher::CBC, - QCA::Cipher::NoPadding, - QCA::Encode, + QCA::Cipher::CBC, + QCA::Cipher::NoPadding, + QCA::Encode, key, iv, provider); @@ -357,44 +422,44 @@ void CipherUnitTest::aes192_data() QTest::newRow("1") << QString("fec1c04f529bbd17d8cecfcc4718b17f") << QString("62564c738f3efe186e1a127a0c4d3c61") << QString("4a4b4c4d4f50515254555657595a5b5c5e5f606163646566"); - QTest::newRow("2") << QString("32df99b431ed5dc5acf8caf6dc6ce475") + QTest::newRow("2") << QString("32df99b431ed5dc5acf8caf6dc6ce475") << QString("07805aa043986eb23693e23bef8f3438") << QString("68696a6b6d6e6f70727374757778797a7c7d7e7f81828384"); QTest::newRow("3") << QString("7fdc2b746f3f665296943b83710d1f82") - << QString("df0b4931038bade848dee3b4b85aa44b") + << QString("df0b4931038bade848dee3b4b85aa44b") << QString("868788898b8c8d8e90919293959697989a9b9c9d9fa0a1a2"); - QTest::newRow("4") << QString("8fba1510a3c5b87e2eaa3f7a91455ca2") - << QString("592d5fded76582e4143c65099309477c") + QTest::newRow("4") << QString("8fba1510a3c5b87e2eaa3f7a91455ca2") + << QString("592d5fded76582e4143c65099309477c") << QString("a4a5a6a7a9aaabacaeafb0b1b3b4b5b6b8b9babbbdbebfc0"); - QTest::newRow("5") << QString("2c9b468b1c2eed92578d41b0716b223b") - << QString("c9b8d6545580d3dfbcdd09b954ed4e92") + QTest::newRow("5") << QString("2c9b468b1c2eed92578d41b0716b223b") + << QString("c9b8d6545580d3dfbcdd09b954ed4e92") << QString("c2c3c4c5c7c8c9cacccdcecfd1d2d3d4d6d7d8d9dbdcddde"); - QTest::newRow("6") << QString("0a2bbf0efc6bc0034f8a03433fca1b1a") - << QString("5dccd5d6eb7c1b42acb008201df707a0") + QTest::newRow("6") << QString("0a2bbf0efc6bc0034f8a03433fca1b1a") + << QString("5dccd5d6eb7c1b42acb008201df707a0") << QString("e0e1e2e3e5e6e7e8eaebecedeff0f1f2f4f5f6f7f9fafbfc"); - QTest::newRow("7") << QString("25260e1f31f4104d387222e70632504b") - << QString("a2a91682ffeb6ed1d34340946829e6f9") + QTest::newRow("7") << QString("25260e1f31f4104d387222e70632504b") + << QString("a2a91682ffeb6ed1d34340946829e6f9") << QString("fefe01010304050608090a0b0d0e0f10121314151718191a"); - QTest::newRow("8") << QString("c527d25a49f08a5228d338642ae65137") - << QString("e45d185b797000348d9267960a68435d") + QTest::newRow("8") << QString("c527d25a49f08a5228d338642ae65137") + << QString("e45d185b797000348d9267960a68435d") << QString("1c1d1e1f21222324262728292b2c2d2e3031323335363738"); - QTest::newRow("9") << QString("3b49fc081432f5890d0e3d87e884a69e") - << QString("45e060dae5901cda8089e10d4f4c246b") + QTest::newRow("9") << QString("3b49fc081432f5890d0e3d87e884a69e") + << QString("45e060dae5901cda8089e10d4f4c246b") << QString("3a3b3c3d3f40414244454647494a4b4c4e4f505153545556"); - QTest::newRow("10") << QString("d173f9ed1e57597e166931df2754a083") - << QString("f6951afacc0079a369c71fdcff45df50") + QTest::newRow("10") << QString("d173f9ed1e57597e166931df2754a083") + << QString("f6951afacc0079a369c71fdcff45df50") << QString("58595a5b5d5e5f60626364656768696a6c6d6e6f71727374"); - QTest::newRow("11") << QString("8c2b7cafa5afe7f13562daeae1adede0") - << QString("9e95e00f351d5b3ac3d0e22e626ddad6") + QTest::newRow("11") << QString("8c2b7cafa5afe7f13562daeae1adede0") + << QString("9e95e00f351d5b3ac3d0e22e626ddad6") << QString("767778797b7c7d7e80818283858687888a8b8c8d8f909192"); - QTest::newRow("12") << QString("aaf4ec8c1a815aeb826cab741339532c") - << QString("9cb566ff26d92dad083b51fdc18c173c") + QTest::newRow("12") << QString("aaf4ec8c1a815aeb826cab741339532c") + << QString("9cb566ff26d92dad083b51fdc18c173c") << QString("94959697999a9b9c9e9fa0a1a3a4a5a6a8a9aaabadaeafb0"); - QTest::newRow("13") << QString("40be8c5d9108e663f38f1a2395279ecf") - << QString("c9c82766176a9b228eb9a974a010b4fb") + QTest::newRow("13") << QString("40be8c5d9108e663f38f1a2395279ecf") + << QString("c9c82766176a9b228eb9a974a010b4fb") << QString("d0d1d2d3d5d6d7d8dadbdcdddfe0e1e2e4e5e6e7e9eaebec"); - QTest::newRow("14") << QString("0c8ad9bc32d43e04716753aa4cfbe351") - << QString("d8e26aa02945881d5137f1c1e1386e88") + QTest::newRow("14") << QString("0c8ad9bc32d43e04716753aa4cfbe351") + << QString("d8e26aa02945881d5137f1c1e1386e88") << QString("2a2b2c2d2f30313234353637393a3b3c3e3f404143444546"); QTest::newRow("15") << QString("1407b1d5f87d63357c8dc7ebbaebbfee") << QString("c0e024ccd68ff5ffa4d139c355a77c55") @@ -436,7 +501,7 @@ void CipherUnitTest::aes192() QVERIFY( forwardCipher.ok() ); QCOMPARE( QCA::arrayToHex( forwardCipher.final() ), QString( "" ) ); QVERIFY( forwardCipher.ok() ); - + QCA::Cipher reverseCipher( QString( "aes192" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -665,23 +730,23 @@ void CipherUnitTest::aes256_data() QTest::newRow("3") << QString("726165c1723fbcf6c026d7d00b091027") << QString("7c1700211a3991fc0ecded0ab3e576b0") << QString("30313233353637383a3b3c3d3f40414244454647494a4b4c4e4f505153545556"); - + QTest::newRow("4") << QString("d7c544de91d55cfcde1f84ca382200ce") << QString("dabcbcc855839251db51e224fbe87435") << QString("58595a5b5d5e5f60626364656768696a6c6d6e6f71727374767778797b7c7d7e"); - + QTest::newRow("5") << QString("fed3c9a161b9b5b2bd611b41dc9da357") << QString("68d56fad0406947a4dd27a7448c10f1d") << QString("80818283858687888a8b8c8d8f90919294959697999a9b9c9e9fa0a1a3a4a5a6"); - + QTest::newRow("6") << QString("4f634cdc6551043409f30b635832cf82") << QString("da9a11479844d1ffee24bbf3719a9925") << QString("a8a9aaabadaeafb0b2b3b4b5b7b8b9babcbdbebfc1c2c3c4c6c7c8c9cbcccdce"); - + QTest::newRow("7") << QString("109ce98db0dfb36734d9f3394711b4e6") << QString("5e4ba572f8d23e738da9b05ba24b8d81") << QString("d0d1d2d3d5d6d7d8dadbdcdddfe0e1e2e4e5e6e7e9eaebeceeeff0f1f3f4f5f6"); - + QTest::newRow("8") << QString("4ea6dfaba2d8a02ffdffa89835987242") << QString("a115a2065d667e3f0b883837a6e903f8") << QString("70717273757677787a7b7c7d7f80818284858687898a8b8c8e8f909193949596"); @@ -689,51 +754,51 @@ void CipherUnitTest::aes256_data() QTest::newRow("9") << QString("5ae094f54af58e6e3cdbf976dac6d9ef") << QString("3e9e90dc33eac2437d86ad30b137e66e") << QString("98999a9b9d9e9fa0a2a3a4a5a7a8a9aaacadaeafb1b2b3b4b6b7b8b9bbbcbdbe"); - + QTest::newRow("10") << QString("764d8e8e0f29926dbe5122e66354fdbe") << QString("01ce82d8fbcdae824cb3c48e495c3692") << QString("c0c1c2c3c5c6c7c8cacbcccdcfd0d1d2d4d5d6d7d9dadbdcdedfe0e1e3e4e5e6"); - + QTest::newRow("11") << QString("3f0418f888cdf29a982bf6b75410d6a9") << QString("0c9cff163ce936faaf083cfd3dea3117") << QString("e8e9eaebedeeeff0f2f3f4f5f7f8f9fafcfdfeff01020304060708090b0c0d0e"); - + QTest::newRow("12") << QString("e4a3e7cb12cdd56aa4a75197a9530220") << QString("5131ba9bd48f2bba85560680df504b52") << QString("10111213151617181a1b1c1d1f20212224252627292a2b2c2e2f303133343536"); - + QTest::newRow("13") << QString("211677684aac1ec1a160f44c4ebf3f26") << QString("9dc503bbf09823aec8a977a5ad26ccb2") << QString("38393a3b3d3e3f40424344454748494a4c4d4e4f51525354565758595b5c5d5e"); - + QTest::newRow("14") << QString("d21e439ff749ac8f18d6d4b105e03895") << QString("9a6db0c0862e506a9e397225884041d7") << QString("60616263656667686a6b6c6d6f70717274757677797a7b7c7e7f808183848586"); - + QTest::newRow("15") << QString("d9f6ff44646c4725bd4c0103ff5552a7") << QString("430bf9570804185e1ab6365fc6a6860c") << QString("88898a8b8d8e8f90929394959798999a9c9d9e9fa1a2a3a4a6a7a8a9abacadae"); - + QTest::newRow("16") << QString("0b1256c2a00b976250cfc5b0c37ed382") << QString("3525ebc02f4886e6a5a3762813e8ce8a") << QString("b0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c4c5c6c7c9cacbcccecfd0d1d3d4d5d6"); - + QTest::newRow("17") << QString("b056447ffc6dc4523a36cc2e972a3a79") << QString("07fa265c763779cce224c7bad671027b") << QString("d8d9dadbdddedfe0e2e3e4e5e7e8e9eaecedeeeff1f2f3f4f6f7f8f9fbfcfdfe"); - + QTest::newRow("18") << QString("5e25ca78f0de55802524d38da3fe4456") << QString("e8b72b4e8be243438c9fff1f0e205872") << QString("00010203050607080a0b0c0d0f10111214151617191a1b1c1e1f202123242526"); - + QTest::newRow("19") << QString("a5bcf4728fa5eaad8567c0dc24675f83") << QString("109d4f999a0e11ace1f05e6b22cbcb50") << QString("28292a2b2d2e2f30323334353738393a3c3d3e3f41424344464748494b4c4d4e"); - + QTest::newRow("20") << QString("814e59f97ed84646b78b2ca022e9ca43") << QString("45a5e8d4c3ed58403ff08d68a0cc4029") << QString("50515253555657585a5b5c5d5f60616264656667696a6b6c6e6f707173747576"); - + QTest::newRow("21") << QString("15478beec58f4775c7a7f5d4395514d7") << QString("196865964db3d417b6bd4d586bcb7634") << QString("78797a7b7d7e7f80828384858788898a8c8d8e8f91929394969798999b9c9d9e"); @@ -765,7 +830,7 @@ void CipherUnitTest::aes256() key, QCA::InitializationVector(), provider ); - + QCOMPARE( forwardCipher.blockSize(), (unsigned)16 ); QCOMPARE( forwardCipher.keyLength().minimum(), 32 ); QCOMPARE( forwardCipher.keyLength().maximum(), 32 ); @@ -775,7 +840,7 @@ void CipherUnitTest::aes256() QVERIFY( forwardCipher.ok() ); QCOMPARE( QCA::arrayToHex( forwardCipher.final() ), QString( "" ) ); QVERIFY( forwardCipher.ok() ); - + QCA::Cipher reverseCipher( QString( "aes256" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -1132,7 +1197,7 @@ void CipherUnitTest::tripleDES() QVERIFY( forwardCipher.ok() ); QCOMPARE( QCA::arrayToHex( forwardCipher.final() ), QString( "" ) ); QVERIFY( forwardCipher.ok() ); - + QCA::Cipher reverseCipher( QString( "tripledes" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -1402,7 +1467,7 @@ void CipherUnitTest::des() QVERIFY( forwardCipher.ok() ); QCOMPARE( QCA::arrayToHex( forwardCipher.final() ), QString( "" ) ); QVERIFY( forwardCipher.ok() ); - + QCA::Cipher reverseCipher( QString( "des" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -1495,7 +1560,7 @@ void CipherUnitTest::des_cfb_data() QTest::addColumn<QString>("keyText"); QTest::addColumn<QString>("ivText"); - QTest::newRow("") << QString("5eef8199471c2a7ef97509623cae32c35a90245b70a21ce36e") + QTest::newRow("") << QString("5eef8199471c2a7ef97509623cae32c35a90245b70a21ce36e") << QString("658b25e25df23948847afa4c9ffdd5b3ddf35d801cbe945168") << QString("add9ce7bcf48c44b") << QString("0f90e78835ba3183"); QTest::newRow("") << QString("4e6f77206973207468652074696d6520666f7220616c6c20") @@ -1533,7 +1598,7 @@ void CipherUnitTest::des_cfb_data() QTest::newRow("") << QString("d75acdd3e4040dfda924ce09e627") << QString("a878ce766412a9c387ad61642fb7") << QString("fbf9e6d9344b0f2c") << QString("6917f8fe1ac12101"); - QTest::newRow("") << QString("38b667a6e4458c8732aae6f4d0ac36") + QTest::newRow("") << QString("38b667a6e4458c8732aae6f4d0ac36") << QString("5bcfd93d6b4b45d9d0d03162fa8fb9") << QString("8616d2ea6e6106b3") << QString("cfe4dfa7044f56ab"); QTest::newRow("") << QString("0b439a72a4430b3d15e234034ba2c066") @@ -1688,7 +1753,7 @@ void CipherUnitTest::des_pkcs7_data() << QString("569be1f2ae91785b0634f8dd4ec1dff2") << QString("012a7de9cbfbd230"); QTest::newRow("") << QString("e923c535186730f309cdea6dea") << QString("846d7314f76e00902054bd2b2ae1f580") << QString("3d5d56ca2e8e359c"); - QTest::newRow("") << QString("116053a5820f9d36650eef49a05b") + QTest::newRow("") << QString("116053a5820f9d36650eef49a05b") << QString("9bd56c43036485b648efe6d31e69f0c6") << QString("2ad63a5312bf4259"); QTest::newRow("") << QString("b6dcd40077fe89138b5a2ed35e1b3d") << QString("2fbe419bada6d4bf3f6c7bb2a1aac329") << QString("7ff12d4d8a9ef138"); @@ -2056,10 +2121,10 @@ void CipherUnitTest::blowfish() if( !QCA::isSupported( "blowfish-ecb", provider ) ) QWARN( QString( "Blowfish ECB not supported for "+provider).toLocal8Bit() ); else { - QCA::Cipher cipherObj1( QString( "blowfish" ), + QCA::Cipher cipherObj1( QString( "blowfish" ), QCA::Cipher::ECB, - QCA::Cipher::NoPadding, - QCA::Encode, + QCA::Cipher::NoPadding, + QCA::Encode, QCA::SymmetricKey( 16 ), QCA::InitializationVector(), provider ); @@ -2071,7 +2136,7 @@ void CipherUnitTest::blowfish() QFETCH( QString, keyText ); QCA::SymmetricKey key( QCA::hexToArray( keyText ) ); - QCA::Cipher forwardCipher( QString( "blowfish" ), + QCA::Cipher forwardCipher( QString( "blowfish" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, QCA::Encode, @@ -2083,8 +2148,8 @@ void CipherUnitTest::blowfish() QVERIFY( forwardCipher.ok() ); QCOMPARE( QCA::arrayToHex( forwardCipher.final() ), QString( "" ) ); QVERIFY( forwardCipher.ok() ); - - QCA::Cipher reverseCipher( QString( "blowfish" ), + + QCA::Cipher reverseCipher( QString( "blowfish" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, QCA::Decode, @@ -2353,4 +2418,5 @@ void CipherUnitTest::blowfish_ofb() QTEST_MAIN(CipherUnitTest) +#include "cipherunittest.moc"