1 | /* |
---|---|
2 | This file has been derived from Konversation, the KDE IRC client. |
3 | You can redistribute it and/or modify it under the terms of the |
4 | GNU General Public License as published by the Free Software Foundation; |
5 | either version 2 of the License, or (at your option) any later version. |
6 | */ |
7 | |
8 | /* |
9 | Copyright (C) 1997 Robey Pointer <robeypointer@gmail.com> |
10 | Copyright (C) 2005 Ismail Donmez <ismail@kde.org> |
11 | Copyright (C) 2009 Travis McHenry <tmchenryaz@cox.net> |
12 | Copyright (C) 2009 Johannes Huber <johu@gmx.de> |
13 | */ |
14 | |
15 | #ifndef CIPHER_H |
16 | #define CIPHER_H |
17 | |
18 | #include <QtCrypto> |
19 | |
20 | class Cipher |
21 | { |
22 | public: |
23 | Cipher(); |
24 | explicit Cipher(QByteArray key, QString cipherType = QString("blowfish")); |
25 | ~Cipher(); |
26 | QByteArray decrypt(QByteArray cipher); |
27 | QByteArray decryptTopic(QByteArray cipher); |
28 | bool encrypt(QByteArray &cipher); |
29 | QByteArray initKeyExchange(); |
30 | QByteArray parseInitKeyX(QByteArray key); |
31 | bool parseFinishKeyX(QByteArray key); |
32 | bool setKey(QByteArray key); |
33 | QByteArray key() { return m_key; } |
34 | bool setType(const QString &type); |
35 | QString type() { return m_type; } |
36 | static bool neededFeaturesAvailable(); |
37 | inline bool usesCBC() { return m_cbc; } |
38 | |
39 | private: |
40 | //direction is true for encrypt, false for decrypt |
41 | QByteArray blowfishCBC(QByteArray cipherText, bool direction); |
42 | QByteArray blowfishECB(QByteArray cipherText, bool direction); |
43 | QByteArray b64ToByte(QByteArray text); |
44 | QByteArray byteToB64(QByteArray text); |
45 | |
46 | QCA::Initializer init; |
47 | QByteArray m_key; |
48 | QCA::DHPrivateKey m_tempKey; |
49 | QCA::BigInteger m_primeNum; |
50 | QString m_type; |
51 | bool m_cbc; |
52 | }; |
53 | |
54 | |
55 | #endif // CIPHER_H |
56 |