#include "eetv4signer.h" #include #include #include class EetV4SignerTest : public QObject { Q_OBJECT private slots: void signsSoapWithPkcs12(); }; void EetV4SignerTest::signsSoapWithPkcs12() { QTemporaryDir directory; QVERIFY(directory.isValid()); const QString keyPath = directory.filePath(QStringLiteral("key.pem")); const QString certificatePath = directory.filePath(QStringLiteral("certificate.pem")); const QString bundlePath = directory.filePath(QStringLiteral("certificate.p12")); auto runOpenSsl = [](const QStringList &arguments) { QProcess process; process.start(QStringLiteral("openssl"), arguments); QVERIFY2(process.waitForFinished(30000), qPrintable(process.errorString())); QVERIFY2(process.exitStatus() == QProcess::NormalExit && process.exitCode() == 0, process.readAllStandardError().constData()); }; runOpenSsl({QStringLiteral("req"), QStringLiteral("-x509"), QStringLiteral("-newkey"), QStringLiteral("rsa:2048"), QStringLiteral("-nodes"), QStringLiteral("-subj"), QStringLiteral("/CN=EetCppTest"), QStringLiteral("-keyout"), keyPath, QStringLiteral("-out"), certificatePath, QStringLiteral("-days"), QStringLiteral("1")}); runOpenSsl({QStringLiteral("pkcs12"), QStringLiteral("-export"), QStringLiteral("-out"), bundlePath, QStringLiteral("-inkey"), keyPath, QStringLiteral("-in"), certificatePath, QStringLiteral("-passout"), QStringLiteral("pass:test")}); const QByteArray unsignedSoap = "" "" ""; QString error; const QByteArray signedSoap = EetV4Signer::signSoap( unsignedSoap, bundlePath, QByteArrayLiteral("test"), &error); QVERIFY2(!signedSoap.isEmpty(), qPrintable(error)); QVERIFY(signedSoap.contains("", "changed"); QVERIFY(!EetV4Signer::verifySoap(tamperedSoap, &verificationError)); } QTEST_MAIN(EetV4SignerTest) #include "eetv4signer_test.moc"