diff options
Diffstat (limited to 'kcontrol/crypto/crypto.h')
-rw-r--r-- | kcontrol/crypto/crypto.h | 362 |
1 files changed, 362 insertions, 0 deletions
diff --git a/kcontrol/crypto/crypto.h b/kcontrol/crypto/crypto.h new file mode 100644 index 000000000..4d335570a --- /dev/null +++ b/kcontrol/crypto/crypto.h @@ -0,0 +1,362 @@ +/** + * crypto.h + * + * Copyright (c) 2000-2001 George Staikos <staikos@kde.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef _CRYPTO_H +#define _CRYPTO_H + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <qcheckbox.h> +#include <qdatetime.h> +#include <qlineedit.h> +#include <qlistview.h> +#include <qptrlist.h> +#include <qtabwidget.h> +#include <qvbuttongroup.h> + +#include <kcmodule.h> +#include <ksimpleconfig.h> + +class QGridLayout; +class QVButtonGroup; + +class KComboBox; +class KCryptoConfig; +class KPushButton; +class KSSLCertBox; +class KSSLSigners; +class KURLLabel; +class KURLRequester; + +class CipherItem : public QCheckListItem +{ +public: + CipherItem( QListView *view, const QString& cipher, int bits, int maxBits, + KCryptoConfig *module ); + ~CipherItem() {} + + void setCipher( const QString& cipher ) { m_cipher = cipher; } + const QString& cipher() const { return m_cipher; } + void setBits( int bits ) { m_bits = bits; } + int bits() const { return m_bits; } + + QString configName() const; + +protected: + virtual void stateChange( bool ); + +private: + int m_bits; + QString m_cipher; + KCryptoConfig *m_module; // just to call configChanged() +}; + + + +class OtherCertItem : public QListViewItem +{ +public: + OtherCertItem(QListView *view, const QString& sub, const QString& md5, bool perm, int policy, QDateTime exp, KCryptoConfig *module ); + ~OtherCertItem() {} + + QString configName() const; + const QString& getSub() { return _sub; } + int getPolicy() { return _policy; } + const QString& getMD5() { return _md5; } + bool isPermanent() { return _perm; } + QDateTime getExpires() { return _exp; } + void setPolicy(int x) { _policy = x; } + void setPermanent(bool x) { _perm = x; } + void setExpires(QDateTime x) { _exp = x; } + +protected: + virtual void stateChange( bool ); + +private: + QString _sub, _md5; + KCryptoConfig *m_module; // just to call configChanged() + QDateTime _exp; + bool _perm; + int _policy; +}; + + + + +class YourCertItem : public QListViewItem +{ +public: + YourCertItem(QListView *view, QString pkcs, QString pass, QString name, KCryptoConfig *module ); + ~YourCertItem() {} + + QString configName() const; + QString& getPKCS() { return _pkcs; } + void setPKCS(QString pkcs) { _pkcs = pkcs; } + QString& getPass() { return _pass; } + void setPass(QString pass) { _pass = pass; } + QString& getName() { return _name; } + void setName(QString name) { _name = name; } + QString& getPassCache() { return _cpass; } + void setPassCache(QString pass) { _cpass = pass; } + +protected: + virtual void stateChange( bool ); + +private: + QString _pkcs; + QString _pass; + QString _cpass; + QString _name; + KCryptoConfig *m_module; // just to call configChanged() +}; + + + + +class CAItem : public QListViewItem +{ +public: + CAItem(QListView *view, QString name, QString cert, bool site, bool email, bool code, KCryptoConfig *module ); + ~CAItem() {} + + QString configName() const; + QString& getName() { return _name; } + void setName(QString name) { _name = name; } + + inline QString getCert() const { return _cert; } + inline bool getSite() const { return _site; } + inline bool getEmail() const { return _email; } + inline bool getCode() const { return _code; } + inline void setSite(bool x) { _site = x; } + inline void setEmail(bool x) { _email = x; } + inline void setCode(bool x) { _code = x; } + + bool isNew, modified; + +protected: + virtual void stateChange( bool ); + +private: + QString _name; + QString _cert; + bool _site, _email, _code; + KCryptoConfig *m_module; // just to call configChanged() +}; + + + + + +class HostAuthItem : public QListViewItem +{ +public: + HostAuthItem(QListView *view, QString host, QString name, KCryptoConfig *module ) : QListViewItem(view, QString::null ) { + _name = name; _host = host; + m_module = module; + setText(0, _host); + setText(1, _name); + _oname = QString::null; + } + ~HostAuthItem() {} + + void setAction(KSSLCertificateHome::KSSLAuthAction aa) { + _aa = aa; + switch (aa) { + case KSSLCertificateHome::AuthSend: + setText(2, i18n("Send")); + break; + case KSSLCertificateHome::AuthDont: + setText(2, i18n("Don't Send")); + break; + case KSSLCertificateHome::AuthPrompt: + setText(2, i18n("Prompt")); + break; + default: + break; + } + } + KSSLCertificateHome::KSSLAuthAction getAction() const { return _aa; } + QString configName() const { return _host; } + QString getCertName() const { return _name; } + void setCertName(QString name) { _name = name; setText(1, name); } + void setHost(QString name) { _host = name; setText(0, name); } + void setOriginalName(QString oname) { _oname = oname; } + QString originalName() const { return _oname; } + +protected: + +private: + QString _host; + QString _name, _oname; + KSSLCertificateHome::KSSLAuthAction _aa; + KCryptoConfig *m_module; // just to call configChanged() +}; + + + + + +class KCryptoConfig : public KCModule +{ + Q_OBJECT +public: + KCryptoConfig(QWidget *parent = 0L, const char *name = 0L, const QStringList &list = QStringList()); + virtual ~KCryptoConfig(); + + void load(); + void load( bool useDefaults ); + void save(); + void defaults(); + +#ifdef HAVE_SSL + bool loadCiphers(); +#endif + +public slots: + void configChanged(); + + void slotGeneratePersonal(); + void slotUseEGD(); + void slotUseEFile(); + void slotSelectCipher(int id); + + void slotTestOSSL(); + + void slotExportCert(); + void slotRemoveCert(); + void slotVerifyCert(); + void slotOtherCertSelect(); + void slotPolicyChanged(int id); + void slotPermanent(); + void slotUntil(); + void slotDatePick(); + + void slotYourImport(); + void slotYourExport(); + void slotYourVerify(); + void slotYourRemove(); + void slotYourUnlock(); + void slotYourPass(); + void slotYourCertSelect(); + + void slotNewHostAuth(); + void slotRemoveHostAuth(); + void slotAuthItemChanged(); + void slotAuthText(const QString &t); + void slotAuthButtons(); + void slotAuthCombo(); + + void slotCAImport(); + void slotCARemove(); + void slotCARestore(); + void slotCAItemChanged(); + void slotCAChecked(); + +protected: + void cwCompatible(); + void cwUS(); + void cwExp(); + void cwAll(); + +private: + + void offerImportToKMail( const QString& certFile ); + void setAuthCertLists(); + void genCAList(); + + QTabWidget *tabs; + QWidget *tabSSL, *tabOSSL; + + QWidget *tabYourSSLCert, *tabOtherSSLCert, *tabSSLCA, *tabSSLCOpts, *tabAuth; + + QListView *SSLv2Box, *SSLv3Box; + QCheckBox *mUseTLS, *mUseSSLv2, *mUseSSLv3; + QCheckBox *mWarnOnEnter, *mWarnOnLeave; + + /* EGD stuff */ + QLabel *mEGDLabel; + KURLRequester *mEGDPath; + QCheckBox *mUseEGD; + QCheckBox *mUseEFile; + + /* CipherWizards */ + QPushButton *mCWall, *mCWus, *mCWexp, *mCWcompatible; + + QCheckBox *mWarnOnUnencrypted, *mWarnOnMixed; + QListView *yourSSLBox, *otherSSLBox, *caList; + QCheckBox *mWarnSelfSigned, *mWarnExpired, *mWarnRevoked; + QPushButton *macAdd, *macRemove; + KPushButton *macClear; + QListBox *macBox; + QPushButton *otherSSLExport, *otherSSLView, *otherSSLRemove, *otherSSLVerify; + QPushButton *yourSSLImport, *yourSSLPass, *yourSSLRemove, *yourSSLExport, + *yourSSLUnlock, *yourSSLVerify; + QRadioButton *yourSSLUseDefault, *yourSSLList, *yourSSLDont; + QLineEdit *macCert; + KSSLCertBox *oSubject, *oIssuer; + KSSLCertBox *ySubject, *yIssuer; + QGridLayout *oGrid; + + QVButtonGroup *policyGroup; + QVButtonGroup *cacheGroup; + QRadioButton *policyAccept, *policyReject, *policyPrompt; + QRadioButton *cacheUntil, *cachePerm; + QLabel *fromLabel, *untilLabel; + QLabel *validFrom, *validUntil; + QLabel *yValidFrom, *yValidUntil; + KURLLabel *untilDate; + + QVGroupBox *oInfo; + KURLRequester *oPath; + QPushButton *oTest; + QPtrList<OtherCertItem> otherCertDelList; + QPtrList<YourCertItem> yourCertDelList; + QPtrList<CAItem> caDelList; + + /* Personal Cert Policies tab */ + KComboBox *defCertBox; + KComboBox *hostCertBox; + QVButtonGroup *defCertBG; + QHButtonGroup *hostCertBG; + QRadioButton *defSend, *defPrompt, *defDont; + QRadioButton *hostSend, *hostPrompt, *hostDont; + QListView *hostAuthList; + QPushButton *authAdd, *authRemove; + QLineEdit *authHost; + QPtrList<HostAuthItem> authDelList; + QLabel *yHash, *pHash; + + /* CA stuff */ + KSSLCertBox *caSubject, *caIssuer; + QPushButton *caSSLImport, *caSSLRemove, *caSSLRestore; + QCheckBox *caSite, *caEmail, *caCode; + KSSLSigners *_signers; + QLabel *cHash; + + KConfig *config; + KSimpleConfig *policies, *pcerts, *authcfg; + KConfig *cacfg; + + bool ___lehack; // to hack around a lineedit problem +}; + +#endif |