diff options
author | nils <nils@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2008-10-02 01:45:25 +0000 |
---|---|---|
committer | nils <nils@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2008-10-02 01:45:25 +0000 |
commit | e7857f4eace1302891a8b983eecb39264a1b918e (patch) | |
tree | 209b569ba9195d52e1178cf461e5901bf8a2faae | |
parent | deleted #include keyutils... (diff) | |
download | gpg4usb-e7857f4eace1302891a8b983eecb39264a1b918e.tar.gz gpg4usb-e7857f4eace1302891a8b983eecb39264a1b918e.zip |
added keymanagement including export of keys
git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@181 34ebc366-c3a9-4b3c-9f84-69acf7962910
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | context.cpp | 29 | ||||
-rw-r--r-- | context.h | 1 | ||||
-rw-r--r-- | gpgwin.cpp | 16 | ||||
-rwxr-xr-x | keymgmt.cpp | 54 | ||||
-rwxr-xr-x | keymgmt.h | 14 | ||||
-rw-r--r-- | release/icons/export_key_to_clipbaord.png | bin | 0 -> 4672 bytes | |||
-rw-r--r-- | release/icons/export_key_to_file.png | bin | 0 -> 3976 bytes | |||
-rw-r--r-- | release/icons/import_key_from_clipbaord.png | bin | 0 -> 4771 bytes | |||
-rw-r--r-- | release/icons/import_key_from_file.png | bin | 0 -> 3985 bytes | |||
-rwxr-xr-x | release/icons/key_export.png | bin | 0 -> 2534 bytes | |||
-rwxr-xr-x | release/icons/key_import.png | bin | 0 -> 2775 bytes |
12 files changed, 95 insertions, 21 deletions
@@ -15,7 +15,7 @@ onwards Later: - Binary File Attachements, function for Decrypt & Help-Text (like safe eml, etc) -- add a button to open Keytable ( no you have to restart, if accidently closed the keytable. +- add a button to open Keytable ( now you have to restart, if accidently closed the keytable ). - add a message-box with warning if someone's adding a secret-key to usb-keyring - sorting keys would be nice (e.g. a-z or complete manual) --> show all email-Adresses connected to a key diff --git a/context.cpp b/context.cpp index 132621d..94a4ea1 100644 --- a/context.cpp +++ b/context.cpp @@ -107,6 +107,35 @@ void Context::importKey(QByteArray inBuffer) gpgme_data_release(in); } +/** Export Key to QByteArray + * + */ +void Context::exportKeys(QList<QString> *uidList, QByteArray *outBuffer) +{ + size_t read_bytes; + gpgme_data_t out = 0; + outBuffer->resize(0); + + if (uidList->count() == 0) { + QMessageBox::critical(0, "Export Keys Error", "No Keys Selected"); + return; + } + + for (int i = 0; i < uidList->count(); i++) { + err = gpgme_data_new(&out); + checkErr(err); + + err = gpgme_op_export(m_ctx, uidList->at(i).toAscii().constData(), 0, out); + checkErr(err); + + read_bytes = gpgme_data_seek (out, 0, SEEK_END); + + err = readToBuffer(out, outBuffer); + checkErr(err); + gpgme_data_release(out); + } +} + /** List all availabe Keys (VERY much like kgpgme) */ GpgKeyList Context::listKeys() @@ -59,6 +59,7 @@ public: ~Context(); // Destructor void importKey(QByteArray inBuffer); + void exportKeys(QList<QString> *uidList, QByteArray *outBuffer); GpgKeyList listKeys(); void deleteKeys(QList<QString> *uidList); bool encrypt(QList<QString> *uidList, const QByteArray &inBuffer, @@ -133,17 +133,17 @@ void GpgWin::createActions() connect(decryptAct, SIGNAL(triggered()), this, SLOT(decrypt())); importKeyFromFileAct = new QAction(tr("&File"), this); - importKeyFromFileAct->setIcon(QIcon(iconPath + "kgpg_import.png")); + importKeyFromFileAct->setIcon(QIcon(iconPath + "key_import.png")); importKeyFromFileAct->setStatusTip(tr("Import New Key From File")); connect(importKeyFromFileAct, SIGNAL(triggered()), this, SLOT(importKeyFromFile())); importKeyFromEditAct = new QAction(tr("&Editor"), this); - importKeyFromEditAct->setIcon(QIcon(iconPath + "importkey_editor.png")); + importKeyFromEditAct->setIcon(QIcon(iconPath + "key_import.png")); importKeyFromEditAct->setStatusTip(tr("Import New Key From Editor")); connect(importKeyFromEditAct, SIGNAL(triggered()), this, SLOT(importKeyFromEdit())); importKeyFromClipboardAct = new QAction(tr("&Clipboard"), this); - importKeyFromClipboardAct->setIcon(QIcon(iconPath + "importkey_editor.png")); + importKeyFromClipboardAct->setIcon(QIcon(iconPath + "key_import.png")); importKeyFromClipboardAct->setStatusTip(tr("Import New Key From Clipboard")); connect(importKeyFromClipboardAct, SIGNAL(triggered()), this, SLOT(importKeyFromClipboard())); @@ -153,8 +153,8 @@ void GpgWin::createActions() connect(openKeyManagementAct, SIGNAL(triggered()), this, SLOT(openKeyManagement())); importKeyDialogAct = new QAction(tr("Import Key"), this); - importKeyDialogAct->setIcon(QIcon(iconPath + "importkey_editor.png")); - importKeyDialogAct->setStatusTip(tr("Import New Key")); + importKeyDialogAct->setIcon(QIcon(iconPath + "key_import")); + importKeyDialogAct->setStatusTip(tr("Open Import New Key Dialog")); connect(importKeyDialogAct, SIGNAL(triggered()), this, SLOT(importKeyDialog())); /** About Menu */ @@ -429,20 +429,22 @@ void GpgWin::importKeyFromClipboard() void GpgWin::importKeyFromFile() { + QFile file; + QByteArray inBuffer; + QString fileName = QFileDialog::getOpenFileName(this, tr("Open Key"), "", tr("Key Files") + " (*.asc *.txt);;All Files (*.*)"); if (! fileName.isNull()) { - QFile file; file.setFileName(fileName); if (!file.open(QIODevice::ReadOnly)) { qDebug() << tr("couldn't open file: ") + fileName; } QByteArray inBuffer = file.readAll(); - myCtx->importKey(inBuffer); m_keyList->refresh(); } } + void GpgWin::openKeyManagement() { KeyMgmt *window = new KeyMgmt(myCtx, iconPath); window->show(); diff --git a/keymgmt.cpp b/keymgmt.cpp index 007c7a3..3e31bd5 100755 --- a/keymgmt.cpp +++ b/keymgmt.cpp @@ -35,6 +35,7 @@ KeyMgmt::KeyMgmt(GpgME::Context *ctx, QString iconpath) m_keyList->setColumnWidth(2,250); m_keyList->setColumnWidth(3,250); setCentralWidget(m_keyList); + createActions(); createMenus(); createToolBars(); @@ -54,15 +55,25 @@ void KeyMgmt::createActions() connect(closeAct, SIGNAL(triggered()), this, SLOT(close())); importKeyFromFileAct = new QAction(tr("Import Key From &File"), this); - importKeyFromFileAct->setIcon(QIcon(mIconPath + "importkey_editor.png")); + importKeyFromFileAct->setIcon(QIcon(mIconPath + "import_key_from_file.png")); importKeyFromFileAct->setStatusTip(tr("Import New Key From File")); connect(importKeyFromFileAct, SIGNAL(triggered()), this, SLOT(importKeyFromFile())); importKeyFromClipboardAct = new QAction(tr("Import Key From &Clipboard"), this); - importKeyFromClipboardAct->setIcon(QIcon(mIconPath + "importkey_editor.png")); + importKeyFromClipboardAct->setIcon(QIcon(mIconPath + "import_key_from_clipbaord.png")); importKeyFromClipboardAct->setStatusTip(tr("Import New Key From Clipboard")); connect(importKeyFromClipboardAct, SIGNAL(triggered()), this, SLOT(importKeyFromClipboard())); + exportKeyToClipboardAct = new QAction(tr("Export Key To &Clipboard"), this); + exportKeyToClipboardAct->setIcon(QIcon(mIconPath + "export_key_to_clipbaord.png")); + exportKeyToClipboardAct->setStatusTip(tr("Export Selected Key(s) To Clipboard")); + connect(exportKeyToClipboardAct, SIGNAL(triggered()), this, SLOT(exportKeyToClipboard())); + + exportKeyToFileAct = new QAction(tr("Export Key To &File"), this); + exportKeyToFileAct->setIcon(QIcon(mIconPath + "export_key_to_file.png")); + exportKeyToFileAct->setStatusTip(tr("Export Selected Key(s) To File")); + connect(exportKeyToFileAct, SIGNAL(triggered()), this, SLOT(exportKeyToFile())); + deleteSelectedKeysAct = new QAction(tr("Delete Selected Key(s)"), this); deleteSelectedKeysAct->setStatusTip(tr("Delete the Selected keys")); connect(deleteSelectedKeysAct, SIGNAL(triggered()), this, SLOT(deleteSelectedKeys())); @@ -75,12 +86,15 @@ void KeyMgmt::createActions() void KeyMgmt::createMenus() { - fileMenu = menuBar()->addMenu(tr("&Quit")); + fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(closeAct); + keyMenu = menuBar()->addMenu(tr("&Key")); keyMenu->addAction(importKeyFromFileAct); keyMenu->addAction(importKeyFromClipboardAct); keyMenu->addSeparator(); + keyMenu->addAction(exportKeyToFileAct); + keyMenu->addAction(exportKeyToClipboardAct); keyMenu->addAction(deleteCheckedKeysAct); } @@ -91,6 +105,9 @@ void KeyMgmt::createToolBars() keyToolBar->addAction(importKeyFromClipboardAct); keyToolBar->addSeparator(); keyToolBar->addAction(deleteCheckedKeysAct); + keyToolBar->addSeparator(); + keyToolBar->addAction(exportKeyToFileAct); + keyToolBar->addAction(exportKeyToClipboardAct); } void KeyMgmt::importKeyFromFile() @@ -100,7 +117,7 @@ void KeyMgmt::importKeyFromFile() QFile file; file.setFileName(fileName); if (!file.open(QIODevice::ReadOnly)) { - qDebug() << tr("couldn't open file: ") + fileName; + qDebug() << tr("Couldn't Open File: ") + fileName; } QByteArray inBuffer = file.readAll(); @@ -127,3 +144,32 @@ void KeyMgmt::deleteCheckedKeys() mCtx->deleteKeys(m_keyList->getChecked()); m_keyList->refresh(); } + +void KeyMgmt::exportKeyToFile() +{ + QList<QString> *uidList = m_keyList->getChecked(); + QByteArray *keyArray = new QByteArray(); + + mCtx->exportKeys(uidList, keyArray); + + QString fileName = QFileDialog::getSaveFileName(this, tr("Export Key To File"), "", tr("Key Files") + " (*.asc *.txt);;All Files (*.*)"); + QFile file(fileName); + if (!file.open( QIODevice::WriteOnly |QIODevice::Text)) + return; + QTextStream stream( &file ); + stream << *keyArray; + file.close(); + delete keyArray; +} + +void KeyMgmt::exportKeyToClipboard() +{ + QList<QString> *uidList = m_keyList->getChecked(); + QByteArray *keyArray = new QByteArray(); + + mCtx->exportKeys(uidList, keyArray); + QClipboard *cb = QApplication::clipboard(); + cb->setText(*keyArray); +} + + @@ -24,10 +24,7 @@ class QMainWindow; -class QPlainTextEdit; class QWidget; -class QVBoxLayout; -class QGridLayout; class iostream; class QtGui; class QString; @@ -35,14 +32,8 @@ class QFileDialog; class QStringList; class QIcon; class QMessageBox; -class QVBoxLayout; class QAction; class QMenu; -class QPlainTextEdit; -class QComboBox; -class QPushButton; -class QRadioButton; -class QButtonGroup; class QApplication; #include "context.h" @@ -58,9 +49,12 @@ public: public slots: void importKeyFromFile(); void importKeyFromClipboard(); + void exportKeyToFile(); + void exportKeyToClipboard(); void deleteCheckedKeys(); void deleteSelectedKeys(); + private: void createMenus(); void createActions(); @@ -74,6 +68,8 @@ private: QAction *importKeyFromFileAct; QAction *importKeyFromEditAct; QAction *importKeyFromClipboardAct; + QAction *exportKeyToFileAct; + QAction *exportKeyToClipboardAct; QAction *deleteCheckedKeysAct; QAction *deleteSelectedKeysAct; QAction *closeAct; diff --git a/release/icons/export_key_to_clipbaord.png b/release/icons/export_key_to_clipbaord.png Binary files differnew file mode 100644 index 0000000..9dbeb7a --- /dev/null +++ b/release/icons/export_key_to_clipbaord.png diff --git a/release/icons/export_key_to_file.png b/release/icons/export_key_to_file.png Binary files differnew file mode 100644 index 0000000..c1ccf8d --- /dev/null +++ b/release/icons/export_key_to_file.png diff --git a/release/icons/import_key_from_clipbaord.png b/release/icons/import_key_from_clipbaord.png Binary files differnew file mode 100644 index 0000000..337c024 --- /dev/null +++ b/release/icons/import_key_from_clipbaord.png diff --git a/release/icons/import_key_from_file.png b/release/icons/import_key_from_file.png Binary files differnew file mode 100644 index 0000000..621c4e2 --- /dev/null +++ b/release/icons/import_key_from_file.png diff --git a/release/icons/key_export.png b/release/icons/key_export.png Binary files differnew file mode 100755 index 0000000..ba72a3d --- /dev/null +++ b/release/icons/key_export.png diff --git a/release/icons/key_import.png b/release/icons/key_import.png Binary files differnew file mode 100755 index 0000000..0226c2f --- /dev/null +++ b/release/icons/key_import.png |