aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TODO2
-rw-r--r--context.cpp29
-rw-r--r--context.h1
-rw-r--r--gpgwin.cpp16
-rwxr-xr-xkeymgmt.cpp54
-rwxr-xr-xkeymgmt.h14
-rw-r--r--release/icons/export_key_to_clipbaord.pngbin0 -> 4672 bytes
-rw-r--r--release/icons/export_key_to_file.pngbin0 -> 3976 bytes
-rw-r--r--release/icons/import_key_from_clipbaord.pngbin0 -> 4771 bytes
-rw-r--r--release/icons/import_key_from_file.pngbin0 -> 3985 bytes
-rwxr-xr-xrelease/icons/key_export.pngbin0 -> 2534 bytes
-rwxr-xr-xrelease/icons/key_import.pngbin0 -> 2775 bytes
12 files changed, 95 insertions, 21 deletions
diff --git a/TODO b/TODO
index 3aff206..039b36a 100644
--- a/TODO
+++ b/TODO
@@ -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()
diff --git a/context.h b/context.h
index 66023ca..fd4277c 100644
--- a/context.h
+++ b/context.h
@@ -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,
diff --git a/gpgwin.cpp b/gpgwin.cpp
index 47ab4dc..9c9b5d0 100644
--- a/gpgwin.cpp
+++ b/gpgwin.cpp
@@ -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);
+}
+
+
diff --git a/keymgmt.h b/keymgmt.h
index 349b62b..03c9c60 100755
--- a/keymgmt.h
+++ b/keymgmt.h
@@ -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
new file mode 100644
index 0000000..9dbeb7a
--- /dev/null
+++ b/release/icons/export_key_to_clipbaord.png
Binary files differ
diff --git a/release/icons/export_key_to_file.png b/release/icons/export_key_to_file.png
new file mode 100644
index 0000000..c1ccf8d
--- /dev/null
+++ b/release/icons/export_key_to_file.png
Binary files differ
diff --git a/release/icons/import_key_from_clipbaord.png b/release/icons/import_key_from_clipbaord.png
new file mode 100644
index 0000000..337c024
--- /dev/null
+++ b/release/icons/import_key_from_clipbaord.png
Binary files differ
diff --git a/release/icons/import_key_from_file.png b/release/icons/import_key_from_file.png
new file mode 100644
index 0000000..621c4e2
--- /dev/null
+++ b/release/icons/import_key_from_file.png
Binary files differ
diff --git a/release/icons/key_export.png b/release/icons/key_export.png
new file mode 100755
index 0000000..ba72a3d
--- /dev/null
+++ b/release/icons/key_export.png
Binary files differ
diff --git a/release/icons/key_import.png b/release/icons/key_import.png
new file mode 100755
index 0000000..0226c2f
--- /dev/null
+++ b/release/icons/key_import.png
Binary files differ