qca
dsaunittest.cpp
Go to the documentation of this file.00001
00026 #include <QtCrypto>
00027 #include <QtTest/QtTest>
00028
00029 class DSAUnitTest : public QObject
00030 {
00031 Q_OBJECT
00032
00033 private slots:
00034 void initTestCase();
00035 void cleanupTestCase();
00036 void testdsa();
00037
00038 private:
00039 QCA::Initializer* m_init;
00040
00041 };
00042
00043 void DSAUnitTest::initTestCase()
00044 {
00045 m_init = new QCA::Initializer;
00046 #include "../fixpaths.include"
00047 }
00048
00049 void DSAUnitTest::cleanupTestCase()
00050 {
00051 delete m_init;
00052 }
00053
00054 void DSAUnitTest::testdsa()
00055 {
00056 if(!QCA::isSupported("pkey") ||
00057 !QCA::PKey::supportedTypes().contains(QCA::PKey::DSA) ||
00058 !QCA::PKey::supportedIOTypes().contains(QCA::PKey::DSA))
00059 QWARN("DSA not supported");
00060 else {
00061 QCA::KeyGenerator keygen;
00062 QCOMPARE( keygen.isBusy(), false );
00063 QCOMPARE( keygen.blockingEnabled(), true );
00064 QCA::DLGroup group = keygen.createDLGroup(QCA::DSA_1024);
00065 QCOMPARE( group.isNull(), false );
00066
00067 QCA::PrivateKey dsaKey = keygen.createDSA( group );
00068 QCOMPARE( dsaKey.isNull(), false );
00069 QCOMPARE( dsaKey.isRSA(), false );
00070 QCOMPARE( dsaKey.isDSA(), true );
00071 QCOMPARE( dsaKey.isDH(), false );
00072 QCOMPARE( dsaKey.isPrivate(), true );
00073 QCOMPARE( dsaKey.isPublic(), false );
00074 QCOMPARE( dsaKey.canSign(), true );
00075 QCOMPARE( dsaKey.canDecrypt(), false );
00076
00077 QCOMPARE( dsaKey.bitSize(), 1024 );
00078 QCA::DSAPrivateKey dsaPrivKey = dsaKey.toDSA();
00079 QCOMPARE( dsaPrivKey.bitSize(), 1024 );
00080
00081 QCA::SecureArray dsaDER = dsaKey.toDER();
00082 QCOMPARE( dsaDER.isEmpty(), false );
00083
00084 QString dsaPEM = dsaKey.toPEM();
00085 QCOMPARE( dsaPEM.isEmpty(), false );
00086
00087 QCA::ConvertResult checkResult;
00088 QCA::PrivateKey fromPEMkey = QCA::PrivateKey::fromPEM(dsaPEM, QCA::SecureArray(), &checkResult);
00089 QCOMPARE( checkResult, QCA::ConvertGood );
00090 QCOMPARE( fromPEMkey.isNull(), false );
00091 QCOMPARE( fromPEMkey.isRSA(), false );
00092 QCOMPARE( fromPEMkey.isDSA(), true );
00093 QCOMPARE( fromPEMkey.isDH(), false );
00094 QCOMPARE( fromPEMkey.isPrivate(), true );
00095 QCOMPARE( fromPEMkey.isPublic(), false );
00096 QVERIFY( dsaKey == fromPEMkey );
00097
00098 QCA::PrivateKey fromDERkey = QCA::PrivateKey::fromDER(dsaDER, QCA::SecureArray(), &checkResult);
00099 QCOMPARE( checkResult, QCA::ConvertGood );
00100 QCOMPARE( fromDERkey.isNull(), false );
00101 QCOMPARE( fromDERkey.isRSA(), false );
00102 QCOMPARE( fromDERkey.isDSA(), true );
00103 QCOMPARE( fromDERkey.isDH(), false );
00104 QCOMPARE( fromDERkey.isPrivate(), true );
00105 QCOMPARE( fromDERkey.isPublic(), false );
00106 QVERIFY( dsaKey == fromDERkey );
00107 }
00108 }
00109
00110 QTEST_MAIN(DSAUnitTest)
00111
00112 #include "dsaunittest.moc"
00113