aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--context.cpp9
-rw-r--r--context.h1
-rw-r--r--gpgwin.cpp19
-rw-r--r--gpgwin.h27
-rwxr-xr-xkeymgmt.cpp132
-rwxr-xr-xkeymgmt.h26
-rwxr-xr-xrelease/icons/kgpg_key2.pngbin0 -> 850 bytes
7 files changed, 197 insertions, 17 deletions
diff --git a/context.cpp b/context.cpp
index 006d843..cf20073 100644
--- a/context.cpp
+++ b/context.cpp
@@ -106,7 +106,16 @@ void Context::importKey(QByteArray inBuffer)
checkErr(err);
gpgme_data_release(in);
emit keyDBChanged();
+}
+/** Generate New Key with values params
+ *
+ */
+void Context::generateKey(QString *params)
+{
+ err = gpgme_op_genkey(mCtx, params->toAscii().data(), NULL,NULL);
+ checkErr(err);
+ emit keyDBChanged();
}
/** Export Key to QByteArray
diff --git a/context.h b/context.h
index 9986d55..cb6be9f 100644
--- a/context.h
+++ b/context.h
@@ -61,6 +61,7 @@ public:
void importKey(QByteArray inBuffer);
void exportKeys(QList<QString> *uidList, QByteArray *outBuffer);
+ void generateKey(QString *params);
GpgKeyList listKeys();
void deleteKeys(QList<QString> *uidList);
bool encrypt(QList<QString> *uidList, const QByteArray &inBuffer,
diff --git a/gpgwin.cpp b/gpgwin.cpp
index 03e9dcb..d6bc3da 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 + "key_import.png"));
+ importKeyFromFileAct->setIcon(QIcon(iconPath + "misc_doc.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 + "key_import.png"));
+ importKeyFromEditAct->setIcon(QIcon(iconPath + "txt.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 + "key_import.png"));
+ importKeyFromClipboardAct->setIcon(QIcon(iconPath + "button_paste.png"));
importKeyFromClipboardAct->setStatusTip(tr("Import New Key From Clipboard"));
connect(importKeyFromClipboardAct, SIGNAL(triggered()), this, SLOT(importKeyFromClipboard()));
@@ -153,9 +153,10 @@ void GpgWin::createActions()
connect(openKeyManagementAct, SIGNAL(triggered()), this, SLOT(openKeyManagement()));
importKeyDialogAct = new QAction(tr("Import Key"), this);
- importKeyDialogAct->setIcon(QIcon(iconPath + "key_import"));
+ importKeyDialogAct->setIcon(QIcon(iconPath + "key_import.png"));
importKeyDialogAct->setStatusTip(tr("Open Import New Key Dialog"));
connect(importKeyDialogAct, SIGNAL(triggered()), this, SLOT(importKeyDialog()));
+
/** About Menu
*/
aboutAct = new QAction(tr("&About"), this);
@@ -195,7 +196,9 @@ void GpgWin::createMenus()
cryptMenu->addAction(decryptAct);
cryptMenu->addSeparator();
- importKeyMenu = cryptMenu->addMenu(tr("&Import Key From..."));
+ keyMenu = menuBar()->addMenu(tr("&Keys"));
+ importKeyMenu = keyMenu->addMenu(tr("&Import Key From..."));
+ importKeyMenu->setIcon(QIcon(iconPath + "key_import.png"));
importKeyMenu->addAction(importKeyFromFileAct);
importKeyMenu->addAction(importKeyFromEditAct);
importKeyMenu->addAction(importKeyFromClipboardAct);
@@ -209,8 +212,10 @@ void GpgWin::createToolBars()
cryptToolBar = addToolBar(tr("Crypt"));
cryptToolBar->addAction(encryptAct);
cryptToolBar->addAction(decryptAct);
- cryptToolBar->addAction(importKeyDialogAct);
- cryptToolBar->addAction(openKeyManagementAct);
+
+ keyToolBar = addToolBar(tr("Key"));
+ keyToolBar->addAction(importKeyDialogAct);
+ keyToolBar->addAction(openKeyManagementAct);
editToolBar = addToolBar(tr("Edit"));
editToolBar->addAction(copyAct);
diff --git a/gpgwin.h b/gpgwin.h
index fa3a3c5..5f8bc57 100644
--- a/gpgwin.h
+++ b/gpgwin.h
@@ -63,6 +63,7 @@ public slots:
void importKeyFromEdit();
void importKeyFromClipboard();
void importKeyDialog();
+ void deleteSelectedKeys();
void appendSelectedKeys();
void openKeyManagement();
void print();
@@ -70,7 +71,6 @@ public slots:
bool save();
bool saveAs();
void open();
- void deleteSelectedKeys();
private:
void createActions();
@@ -84,17 +84,18 @@ private:
bool maybeSave();
void preventNoDataErr(QByteArray *in);
QString strippedName(const QString &fullFileName);
-
+
QPlainTextEdit *edit;
QMenu *fileMenu;
QMenu *editMenu;
QMenu *cryptMenu;
QMenu *helpMenu;
+ QMenu *keyMenu;
QMenu *importKeyMenu;
QToolBar *cryptToolBar;
QToolBar *editToolBar;
- QPushButton *browseButton;
- QWidget *keywindow;
+ QToolBar *keyToolBar;
+ QDialog *genkeyDialog;
QAction *openAct;
QAction *saveAct;
@@ -107,6 +108,7 @@ private:
QAction *importKeyFromFileAct;
QAction *importKeyFromEditAct;
QAction *importKeyFromClipboardAct;
+ QAction *deleteSelectedKeysAct;
QAction *appendSelectedKeysAct;
QAction *openKeyManagementAct;
QAction *copyAct;
@@ -114,8 +116,21 @@ private:
QAction *pasteAct;
QAction *selectallAct;
QAction *aboutAct;
- QAction *deleteSelectedKeysAct;
+ QLineEdit *nameEdit;
+ QLineEdit *emailEdit;
+ QLineEdit *commentEdit;
+ QLineEdit *passwordEdit;
+ QLineEdit *repeatpwEdit;
+ QSpinBox *keysizeSpinBox;
+ QLabel *nameLabel;
+ QLabel *emailLabel;
+ QLabel *commentLabel;
+ QLabel *keysizeLabel;
+ QLabel *passwordLabel;
+ QLabel *repeatpwLabel;
+ QLabel *errorLabel;
+
QString curFile;
KeyList *mKeyList;
Attachments *mAttachments;
@@ -123,5 +138,3 @@ private:
QString iconPath;
};
-
-
diff --git a/keymgmt.cpp b/keymgmt.cpp
index 3db0866..8703f40 100755
--- a/keymgmt.cpp
+++ b/keymgmt.cpp
@@ -28,8 +28,7 @@ KeyMgmt::KeyMgmt(GpgME::Context *ctx, QString iconpath)
{
mCtx = ctx;
mIconPath = iconpath;
- resize(640, 400);
-
+
/* the list of Keys available*/
mKeyList = new KeyList(mCtx, mIconPath);
mKeyList->setColumnWidth(2,250);
@@ -82,6 +81,11 @@ void KeyMgmt::createActions()
deleteCheckedKeysAct->setStatusTip(tr("Delete the Checked keys"));
deleteCheckedKeysAct->setIcon(QIcon(mIconPath + "button_cancel.png"));
connect(deleteCheckedKeysAct, SIGNAL(triggered()), this, SLOT(deleteCheckedKeys()));
+
+ generateKeyDialogAct = new QAction(tr("Generate Key"), this);
+ generateKeyDialogAct->setStatusTip(tr("Generate New Key"));
+ generateKeyDialogAct->setIcon(QIcon(mIconPath + "key_generate.png"));
+ connect(generateKeyDialogAct, SIGNAL(triggered()), this, SLOT(generateKeyDialog()));
}
void KeyMgmt::createMenus()
@@ -95,7 +99,10 @@ void KeyMgmt::createMenus()
keyMenu->addSeparator();
keyMenu->addAction(exportKeyToFileAct);
keyMenu->addAction(exportKeyToClipboardAct);
+ keyMenu->addSeparator();
keyMenu->addAction(deleteCheckedKeysAct);
+ keyMenu->addAction(generateKeyDialogAct);
+
}
void KeyMgmt::createToolBars()
@@ -167,4 +174,125 @@ void KeyMgmt::exportKeyToClipboard()
delete keyArray;
}
+void KeyMgmt::generateKeyDialog()
+{
+ QStringList errorMessages;
+ genkeyDialog = new QDialog();
+ QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
+
+ connect(buttonBox,SIGNAL(accepted()),this, SLOT(keyGenAccept()));
+ connect(buttonBox,SIGNAL(rejected()), genkeyDialog, SLOT(reject()));
+
+ genkeyDialog->setWindowTitle(tr("Generate Key"));
+ genkeyDialog->setModal(true);
+ nameLabel = new QLabel(tr("Name:*"));
+ emailLabel = new QLabel(tr("E-Mailaddress::"));
+ commentLabel = new QLabel(tr("Comment:"));
+ keySizeLabel = new QLabel(tr("KeySize (in Bit):"));
+ passwordLabel = new QLabel(tr("Password:"));
+ repeatpwLabel = new QLabel(tr("Repeat Password:"));
+ errorLabel = new QLabel(tr(""));
+
+ nameEdit = new QLineEdit(genkeyDialog);
+ emailEdit = new QLineEdit(genkeyDialog);
+ commentEdit = new QLineEdit(genkeyDialog);
+ keySizeSpinBox = new QSpinBox(genkeyDialog);
+ keySizeSpinBox->setRange(512,8192);
+ keySizeSpinBox->setValue(2048);
+ keySizeSpinBox->setSingleStep(256);
+ passwordEdit = new QLineEdit(genkeyDialog);
+ repeatpwEdit = new QLineEdit(genkeyDialog);
+
+ passwordEdit->setEchoMode(QLineEdit::Password);
+ repeatpwEdit->setEchoMode(QLineEdit::Password);
+
+ QGridLayout *vbox1 = new QGridLayout;
+ vbox1->addWidget(nameLabel,0,0);
+ vbox1->addWidget(nameEdit,0,1);
+ vbox1->addWidget(emailLabel,1,0);
+ vbox1->addWidget(emailEdit,1,1);
+ vbox1->addWidget(commentLabel,2,0);
+ vbox1->addWidget(commentEdit,2,1);
+ vbox1->addWidget(keySizeLabel,3,0);
+ vbox1->addWidget(keySizeSpinBox,3,1);
+ vbox1->addWidget(passwordLabel,4,0);
+ vbox1->addWidget(passwordEdit,4,1);
+ vbox1->addWidget(repeatpwLabel,5,0);
+ vbox1->addWidget(repeatpwEdit,5,1);
+
+ QWidget *nameList = new QWidget(genkeyDialog);
+ nameList->setLayout(vbox1);
+
+ QVBoxLayout *vbox2 = new QVBoxLayout();
+ vbox2->addWidget(nameList);
+ vbox2->addWidget(errorLabel);
+ vbox2->addWidget(buttonBox);
+
+ genkeyDialog->setLayout(vbox2);
+ genkeyDialog->show();
+
+ if(genkeyDialog->exec() == QDialog::Accepted ) {
+
+ }
+}
+
+
+void KeyMgmt::keyGenAccept()
+{
+ QString errorString="";
+ QString keyGenParams="";
+
+ /**
+ * check for errors in keygen dialog input
+ */
+ if ((nameEdit->text()).size() < 5 ) {
+ errorString.append(" Name must contain at least five characters. \n");
+ }
+ if (passwordEdit->text() != repeatpwEdit->text()) {
+ errorString.append(" Password and Repeat don't match. ");
+ }
+
+
+ if (errorString.isEmpty()) {
+
+ /**
+ * create the string for key generation
+ */
+ keyGenParams ="<GnupgKeyParms format=\"internal\">\n"
+ "Key-Type: DSA\n"
+ "Key-Length: "
+ +keySizeSpinBox->cleanText()+"\n"
+ "Subkey-Type: ELG-E\n"
+ "Name-Real: "+ nameEdit->text()+"\n";
+ if (!(commentEdit->text().isEmpty())) {
+ keyGenParams +="Name-Comment: "+commentEdit->text()+"\n";
+ }
+ if (!(emailEdit->text().isEmpty())) {
+ keyGenParams +="Name-Email: "+emailEdit->text()+"\n";
+ }
+ keyGenParams += "Expire-Date: 0\n"
+ "Passphrase: "+passwordEdit->text()+"\n"
+ "</GnupgKeyParms>";
+
+ mCtx->generateKey(&keyGenParams);
+ genkeyDialog->accept();
+ } else {
+
+ /**
+ * create error message
+ */
+ errorLabel->setAutoFillBackground(true);
+ QPalette error = errorLabel->palette();
+ error.setColor(QPalette::Background, "#ff8080");
+ errorLabel->setPalette(error);
+ errorLabel->setText(errorString);
+
+ genkeyDialog->show();
+ }
+}
+
+/*int checkPassWordStrength(QString password)
+{
+ return 0;
+}*/
diff --git a/keymgmt.h b/keymgmt.h
index db9fe8f..5929d82 100755
--- a/keymgmt.h
+++ b/keymgmt.h
@@ -31,7 +31,6 @@ class QString;
class QFileDialog;
class QStringList;
class QIcon;
-class QMessageBox;
class QAction;
class QMenu;
class QApplication;
@@ -53,18 +52,24 @@ public slots:
void exportKeyToClipboard();
void deleteCheckedKeys();
void deleteSelectedKeys();
+
+private slots:
+ void keyGenAccept();
+ void generateKeyDialog();
private:
void createMenus();
void createActions();
void createToolBars();
+ // int checkPassWordStrength(QString password);
KeyList *mKeyList;
QString mIconPath;
GpgME::Context *mCtx;
QMenu *fileMenu;
QMenu *keyMenu;
+ QDialog *genkeyDialog;
QAction *importKeyFromFileAct;
QAction *importKeyFromEditAct;
QAction *importKeyFromClipboardAct;
@@ -72,7 +77,26 @@ private:
QAction *exportKeyToClipboardAct;
QAction *deleteCheckedKeysAct;
QAction *deleteSelectedKeysAct;
+ QAction *generateKeyDialogAct;
QAction *closeAct;
+
+
+ /**
+ * Variables For Key-Generation
+ */
+ QLabel *nameLabel;
+ QLabel *emailLabel;
+ QLabel *commentLabel;
+ QLabel *keySizeLabel;
+ QLabel *passwordLabel;
+ QLabel *repeatpwLabel;
+ QLabel *errorLabel;
+ QLineEdit *nameEdit;
+ QLineEdit *emailEdit;
+ QLineEdit *commentEdit;
+ QLineEdit *passwordEdit;
+ QLineEdit *repeatpwEdit;
+ QSpinBox *keySizeSpinBox;
};
#endif // __KEYMGMT_H__
diff --git a/release/icons/kgpg_key2.png b/release/icons/kgpg_key2.png
new file mode 100755
index 0000000..43e5a52
--- /dev/null
+++ b/release/icons/kgpg_key2.png
Binary files differ