summaryrefslogtreecommitdiffstats
path: root/certmanager/certmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'certmanager/certmanager.h')
-rw-r--r--certmanager/certmanager.h217
1 files changed, 217 insertions, 0 deletions
diff --git a/certmanager/certmanager.h b/certmanager/certmanager.h
new file mode 100644
index 00000000..915e079e
--- /dev/null
+++ b/certmanager/certmanager.h
@@ -0,0 +1,217 @@
+/* -*- mode: c++; c-basic-offset:4 -*-
+ certmanager.h
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2001,2002,2004 Klarälvdalens Datakonsult AB
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU 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
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef _CERTMANAGER_H_
+#define _CERTMANAGER_H_
+
+//#include <gpgme.h>
+
+#include <kmainwindow.h>
+#include <kdepimmacros.h>
+#include <kurl.h>
+#include <qcstring.h>
+#include <qptrlist.h>
+
+#include <set>
+#include <string>
+
+namespace Kleo {
+ class KeyListView;
+ class KeyListViewItem;
+ class ProgressBar;
+ class Job;
+}
+
+namespace KIO {
+ class Job;
+}
+class KProcess;
+class KToolBar;
+class KAction;
+
+class CRLView;
+class HierarchyAnalyser;
+
+class LineEditAction;
+class ComboAction;
+
+class KURL;
+class QFile;
+class QStringList;
+class QLabel;
+
+namespace GpgME {
+ class ImportResult;
+ class KeyListResult;
+ class Error;
+ class Key;
+}
+
+class KDE_EXPORT CertManager : public KMainWindow {
+ Q_OBJECT
+public:
+ CertManager( bool remote = false, const QString& query = QString::null,
+ const QString& import=QString::null,
+ QWidget * parent=0, const char * name=0, WFlags f=0 );
+ ~CertManager();
+
+ bool isRemote() const { return mRemote; }
+
+signals:
+ void stopOperations();
+ void enableOperations( bool );
+
+private slots:
+ void slotStartCertificateDownload( const QString & fingerprint, const QString& displayName );
+ void newCertificate();
+ void revokeCertificate();
+ void extendCertificate();
+ void slotDeleteCertificate();
+ void slotExportSecretKey();
+ void slotExportCertificate();
+ void slotUploadResult( KIO::Job* job );
+
+ void slotImportCertFromFile();
+ void slotImportCertFromFile( const KURL & filename );
+ void slotImportResult( KIO::Job* );
+
+ void slotCertificateImportResult( const GpgME::ImportResult & result );
+ void slotCertificateDownloadResult( const GpgME::Error & error, const QByteArray & keyData );
+ void slotKeyListResult( const GpgME::KeyListResult & result );
+ void slotDeleteResult( const GpgME::Error & error, const GpgME::Key & );
+ void slotSecretKeyExportResult( const GpgME::Error & error, const QByteArray & keyData );
+ void slotCertificateExportResult( const GpgME::Error & error, const QByteArray & keyData );
+ void slotClearCRLsResult();
+
+ void importCRLFromFile();
+ void importCRLFromLDAP();
+ void slotImportCRLJobFinished( KIO::Job * );
+
+ void slotDirmngrExited();
+ void slotStderr( KProcess*, char*, int );
+
+ void slotToggleRemote(int idx);
+ void slotToggleHierarchicalView( bool );
+
+ void slotViewCRLs();
+ void slotClearCRLs();
+
+ void slotViewDetails();
+ void slotViewDetails( Kleo::KeyListViewItem * item );
+ void slotSelectionChanged();
+ void slotDownloadCertificate();
+ void slotStartWatchGnuPG();
+
+ void slotEditKeybindings();
+ void slotShowConfigurationDialog();
+ void slotConfigureGpgME();
+ void slotContextMenu(Kleo::KeyListViewItem*, const QPoint& point);
+ void slotDropped(const KURL::List&);
+ /** Schedule a repaint for the listview items. E.g. when the
+ colour config has changed */
+ void slotRepaint();
+ /** Schedule a validating keylisting for the selected items (or
+ all items, if none is selected). */
+ void slotValidate() { startRedisplay( true ); }
+ /** Schedule a non-validating keylisting for the selected items
+ (or all items, if none are selected). */
+ void slotRedisplay() { startRedisplay( false ); }
+ /** Start a keylisting with the current value of the query text as
+ pattern. */
+ void slotSearch();
+
+ void slotExpandAll();
+ void slotCollapseAll();
+ void slotRefreshKeys();
+ void slotRefreshKeysResult( const GpgME::Error & );
+
+private:
+ void createStatusBar();
+ void createActions();
+ void updateStatusBarLabels();
+ void updateImportActions( bool enable );
+ void startKeyListing( bool, bool, const QStringList & );
+ void startKeyListing( bool, bool, const std::set<std::string> & );
+ void startCertificateImport( const QByteArray & keyData, const QString& certDisplayName );
+ void startImportCRL( const QString& fileName, bool isTempFile );
+ void startClearCRLs();
+ void startSecretKeyExport( const QString & fingerprint );
+ void startCertificateExport( const QStringList & fingerprints );
+ bool connectAndStartDirmngr( const char*, const char* );
+ void connectJobToStatusBarProgress( Kleo::Job * job, const QString & initialText );
+ void disconnectJobFromStatusBarProgress( const GpgME::Error & err );
+ void importNextURLOrRedisplay();
+ void startRedisplay( bool validating );
+ QString displayNameForJob( const Kleo::Job *job );
+ void readConfig( bool noQueryGiven );
+ void writeConfig();
+
+private:
+ Kleo::KeyListView * mKeyListView;
+ CRLView * mCrlView;
+ Kleo::ProgressBar * mProgressBar;
+ QLabel * mStatusLabel;
+
+ KProcess * mDirmngrProc;
+ QString mErrorbuffer;
+ QPtrList<Kleo::KeyListViewItem> mItemsToDelete;
+ KURL::List mURLsToImport;
+ typedef QMap<const Kleo::Job *, QString> JobsDisplayNameMap;
+ JobsDisplayNameMap mJobsDisplayNameMap;
+ HierarchyAnalyser * mHierarchyAnalyser;
+
+ LineEditAction * mLineEditAction;
+ ComboAction * mComboAction;
+ KAction * mFindAction;
+ KAction * mImportCertFromFileAction;
+ KAction * mImportCRLFromFileAction;
+ KAction * mExportCertificateAction;
+ KAction * mViewCertDetailsAction;
+ KAction * mDeleteCertificateAction;
+#ifdef NOT_IMPLEMENTED_ANYWAY
+ KAction * mRevokeCertificateAction;
+ KAction * mExtendCertificateAction;
+#endif
+ KAction * mExportSecretKeyAction;
+ KAction * mDownloadCertificateAction;
+ KAction * mValidateCertificateAction;
+
+ QString mImportCRLTempFile;
+ QString mCurrentQuery;
+ std::set<std::string> mPreviouslySelectedFingerprints;
+ bool mNextFindRemote : 1; // state of the combo, i.e. whether the next find action will be remote
+ bool mRemote : 1; // whether the currently displayed items are from a remote listing
+ bool mDirMngrFound : 1;
+ bool mHierarchicalView : 1; // whether to display the list view in hierarchical mode
+};
+
+#endif // _CERTMANAGER_H_