diff options
Diffstat (limited to '')
-rw-r--r-- | context.cpp | 9 | ||||
-rw-r--r-- | context.h | 1 | ||||
-rw-r--r-- | gpgwin.cpp | 19 | ||||
-rw-r--r-- | gpgwin.h | 27 | ||||
-rwxr-xr-x | keymgmt.cpp | 132 | ||||
-rwxr-xr-x | keymgmt.h | 26 | ||||
-rwxr-xr-x | release/icons/kgpg_key2.png | bin | 0 -> 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 @@ -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, @@ -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); @@ -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; +}*/ @@ -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 Binary files differnew file mode 100755 index 0000000..43e5a52 --- /dev/null +++ b/release/icons/kgpg_key2.png |