File indexing completed on 2024-06-02 05:30:20
0001 /* SPDX-FileCopyrightText: 2015 Sandro Knauß <knauss@kolabsys.com> 0002 0003 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 */ 0005 #include "cryptohelpertest.h" 0006 0007 #include "cryptohelper.h" 0008 0009 #include <QTest> 0010 0011 using namespace MimeTreeParser; 0012 0013 void CryptoHelperTest::testPMFDEmpty() 0014 { 0015 QCOMPARE(prepareMessageForDecryption("").count(), 0); 0016 } 0017 0018 void CryptoHelperTest::testPMFDWithNoPGPBlock() 0019 { 0020 const QByteArray text = "testblabla"; 0021 const QList<Block> blocks = prepareMessageForDecryption(text); 0022 QCOMPARE(blocks.count(), 1); 0023 QCOMPARE(blocks[0].text(), text); 0024 QCOMPARE(blocks[0].type(), NoPgpBlock); 0025 } 0026 0027 void CryptoHelperTest::testPGPBlockType() 0028 { 0029 const QString blockText = QStringLiteral("text"); 0030 const QString preString = QStringLiteral("before\n"); 0031 for (int i = 1; i <= PrivateKeyBlock; ++i) { 0032 QString name; 0033 switch (i) { 0034 case PgpMessageBlock: 0035 name = QStringLiteral("MESSAGE"); 0036 break; 0037 case MultiPgpMessageBlock: 0038 name = QStringLiteral("MESSAGE PART"); 0039 break; 0040 case SignatureBlock: 0041 name = QStringLiteral("SIGNATURE"); 0042 break; 0043 case ClearsignedBlock: 0044 name = QStringLiteral("SIGNED MESSAGE"); 0045 break; 0046 case PublicKeyBlock: 0047 name = QStringLiteral("PUBLIC KEY BLOCK"); 0048 break; 0049 case PrivateKeyBlock: 0050 name = QStringLiteral("PRIVATE KEY BLOCK"); 0051 break; 0052 } 0053 QString text = QLatin1StringView("-----BEGIN PGP ") + name + QLatin1Char('\n') + blockText; 0054 QList<Block> blocks = prepareMessageForDecryption(preString.toLatin1() + text.toLatin1()); 0055 QCOMPARE(blocks.count(), 1); 0056 QCOMPARE(blocks[0].type(), UnknownBlock); 0057 0058 text += QLatin1StringView("\n-----END PGP ") + name + QLatin1Char('\n'); 0059 blocks = prepareMessageForDecryption(preString.toLatin1() + text.toLatin1()); 0060 QCOMPARE(blocks.count(), 2); 0061 QCOMPARE(blocks[1].text(), text.toLatin1()); 0062 QCOMPARE(blocks[1].type(), static_cast<PGPBlockType>(i)); 0063 } 0064 } 0065 0066 void CryptoHelperTest::testDeterminePGPBlockType() 0067 { 0068 const QString blockText = QStringLiteral("text"); 0069 for (int i = 1; i <= PrivateKeyBlock; ++i) { 0070 QString name; 0071 switch (i) { 0072 case PgpMessageBlock: 0073 name = QStringLiteral("MESSAGE"); 0074 break; 0075 case MultiPgpMessageBlock: 0076 name = QStringLiteral("MESSAGE PART"); 0077 break; 0078 case SignatureBlock: 0079 name = QStringLiteral("SIGNATURE"); 0080 break; 0081 case ClearsignedBlock: 0082 name = QStringLiteral("SIGNED MESSAGE"); 0083 break; 0084 case PublicKeyBlock: 0085 name = QStringLiteral("PUBLIC KEY BLOCK"); 0086 break; 0087 case PrivateKeyBlock: 0088 name = QStringLiteral("PRIVATE KEY BLOCK"); 0089 break; 0090 } 0091 const QString text = QLatin1StringView("-----BEGIN PGP ") + name + QLatin1Char('\n') + blockText + QLatin1Char('\n'); 0092 const Block block = Block(text.toLatin1()); 0093 QCOMPARE(block.text(), text.toLatin1()); 0094 QCOMPARE(block.type(), static_cast<PGPBlockType>(i)); 0095 } 0096 } 0097 0098 void CryptoHelperTest::testEmbededPGPBlock() 0099 { 0100 const QByteArray text = QByteArray("before\n-----BEGIN PGP MESSAGE-----\ncrypted - you see :)\n-----END PGP MESSAGE-----\nafter"); 0101 const QList<Block> blocks = prepareMessageForDecryption(text); 0102 QCOMPARE(blocks.count(), 3); 0103 QCOMPARE(blocks[0].text(), QByteArray("before\n")); 0104 QCOMPARE(blocks[1].text(), QByteArray("-----BEGIN PGP MESSAGE-----\ncrypted - you see :)\n-----END PGP MESSAGE-----\n")); 0105 QCOMPARE(blocks[2].text(), QByteArray("after")); 0106 } 0107 0108 void CryptoHelperTest::testClearSignedMessage() 0109 { 0110 const QByteArray text = QByteArray( 0111 "before\n-----BEGIN PGP SIGNED MESSAGE-----\nsigned content\n-----BEGIN PGP SIGNATURE-----\nfancy signature\n-----END PGP SIGNATURE-----\nafter"); 0112 const QList<Block> blocks = prepareMessageForDecryption(text); 0113 QCOMPARE(blocks.count(), 3); 0114 QCOMPARE(blocks[0].text(), QByteArray("before\n")); 0115 QCOMPARE(blocks[1].text(), 0116 QByteArray("-----BEGIN PGP SIGNED MESSAGE-----\nsigned content\n-----BEGIN PGP SIGNATURE-----\nfancy signature\n-----END PGP SIGNATURE-----\n")); 0117 QCOMPARE(blocks[2].text(), QByteArray("after")); 0118 } 0119 0120 void CryptoHelperTest::testMultipleBlockMessage() 0121 { 0122 const QByteArray text = QByteArray( 0123 "before\n-----BEGIN PGP SIGNED MESSAGE-----\nsigned content\n-----BEGIN PGP SIGNATURE-----\nfancy signature\n-----END PGP " 0124 "SIGNATURE-----\nafter\n-----BEGIN PGP MESSAGE-----\ncrypted - you see :)\n-----END PGP MESSAGE-----\n"); 0125 const QList<Block> blocks = prepareMessageForDecryption(text); 0126 QCOMPARE(blocks.count(), 4); 0127 QCOMPARE(blocks[0].text(), QByteArray("before\n")); 0128 QCOMPARE(blocks[1].text(), 0129 QByteArray("-----BEGIN PGP SIGNED MESSAGE-----\nsigned content\n-----BEGIN PGP SIGNATURE-----\nfancy signature\n-----END PGP SIGNATURE-----\n")); 0130 QCOMPARE(blocks[2].text(), QByteArray("after\n")); 0131 QCOMPARE(blocks[3].text(), QByteArray("-----BEGIN PGP MESSAGE-----\ncrypted - you see :)\n-----END PGP MESSAGE-----\n")); 0132 } 0133 0134 QTEST_APPLESS_MAIN(CryptoHelperTest) 0135 0136 #include "moc_cryptohelpertest.cpp"