Added a Security Page for Options to View, Copy and Export own Public Key.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1380 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
defnax 2009-07-14 23:11:37 +00:00
parent 1c729b93fc
commit 9c65c694c5
5 changed files with 422 additions and 678 deletions

View File

@ -1,7 +1,7 @@
/**************************************************************** /****************************************************************
* RShare is distributed under the following license: * RetroShare is distributed under the following license:
* *
* Copyright (C) 2006, crypton * Copyright (C) 2006 - 2009 RetroShare Team
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -19,10 +19,18 @@
* Boston, MA 02110-1301, USA. * Boston, MA 02110-1301, USA.
****************************************************************/ ****************************************************************/
#include "rsiface/rspeers.h" //for rsPeers variable
#include "rsiface/rsiface.h"
#include <QtGui>
#include <QClipboard>
#include <rshare.h> #include <rshare.h>
#include "CryptographyDialog.h" #include "CryptographyDialog.h"
#include <sstream>
#include <iostream>
#include <set>
/** Constructor */ /** Constructor */
CryptographyDialog::CryptographyDialog(QWidget *parent) CryptographyDialog::CryptographyDialog(QWidget *parent)
@ -34,6 +42,13 @@ CryptographyDialog::CryptographyDialog(QWidget *parent)
/* Create RshareSettings object */ /* Create RshareSettings object */
_settings = new RshareSettings(); _settings = new RshareSettings();
connect(ui.copykeyButton, SIGNAL(clicked()), this, SLOT(copyPublicKey()));
connect(ui.exportkeyButton, SIGNAL(clicked()), this, SLOT(exportPublicKey()));
loadPublicKey();
/* Hide platform specific features */ /* Hide platform specific features */
#ifdef Q_WS_WIN #ifdef Q_WS_WIN
@ -44,7 +59,7 @@ CryptographyDialog::CryptographyDialog(QWidget *parent)
bool bool
CryptographyDialog::save(QString &errmsg) CryptographyDialog::save(QString &errmsg)
{ {
return true;
} }
/** Loads the settings for this page */ /** Loads the settings for this page */
@ -54,3 +69,68 @@ CryptographyDialog::load()
} }
/** Loads ouer default Puplickey */
void
CryptographyDialog::loadPublicKey()
{
//std::cerr << "CryptoPage() getting Invite" << std::endl;
std::string invite = rsPeers->GetRetroshareInvite();
RsPeerDetails ownDetail;
rsPeers->getPeerDetails(rsPeers->getOwnId(), ownDetail);
invite += LOCAL_IP;
invite += ownDetail.localAddr + ":";
std::ostringstream out;
out << ownDetail.localPort;
invite += out.str() + ";";
invite += "\n";
invite += EXT_IP;
invite += ownDetail.extAddr + ":";
std::ostringstream out2;
out2 << ownDetail.extPort;
invite += out2.str() + ";";
ui.certtextEdit->setText(QString::fromStdString(invite));
ui.certtextEdit->setReadOnly(true);
ui.certtextEdit->setMinimumHeight(200);
//std::cerr << "CryptoPage() getting Invite: " << invite << std::endl;
}
void
CryptographyDialog::copyPublicKey()
{
QMessageBox::information(this,
tr("RetroShare"),
tr("Your Public Key is copied to Clipbard, paste and send it to your"
"friend via email or some other way"));
QClipboard *clipboard = QApplication::clipboard();
clipboard->setText(ui.certtextEdit->toPlainText());
}
void
CryptographyDialog::exportPublicKey()
{
qDebug() << " exportPulicKey";
QString qdir = QFileDialog::getSaveFileName(this,
"Please choose a filename",
QDir::homePath(),
"RetroShare Certificate (*.pqi)");
if ( rsPeers->SaveCertificateToFile(rsPeers->getOwnId(), qdir.toStdString()) )
{
QMessageBox::information(this, tr("RetroShare"),
tr("Certificate file successfully created"),
QMessageBox::Ok, QMessageBox::Ok);
}
else
{
QMessageBox::information(this, tr("RetroShare"),
tr("Sorry, certificate file creation failed"),
QMessageBox::Ok, QMessageBox::Ok);
}
}

View File

@ -1,7 +1,7 @@
/**************************************************************** /****************************************************************
* RShare is distributed under the following license: * RetroShare is distributed under the following license:
* *
* Copyright (C) 2006, crypton * Copyright (C) 2006 - 2009 RetroShare Team
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -25,10 +25,12 @@
#include <QFileDialog> #include <QFileDialog>
#include <gui/Preferences/rsharesettings.h> #include <gui/Preferences/rsharesettings.h>
#include "gui/connect/ConnectFriendWizard.h"
#include "configpage.h" #include "configpage.h"
#include "ui_CryptographyDialog.h" #include "ui_CryptographyDialog.h"
class CryptographyDialog : public ConfigPage class CryptographyDialog : public ConfigPage
{ {
Q_OBJECT Q_OBJECT
@ -45,6 +47,12 @@ public:
private slots: private slots:
void loadPublicKey();
void copyPublicKey();
void exportPublicKey();
private: private:
/** A RshareSettings object used for saving/loading settings */ /** A RshareSettings object used for saving/loading settings */

File diff suppressed because it is too large Load Diff

View File

@ -34,7 +34,7 @@
#define IMAGE_PREFERENCES ":/images/kcmsystem24.png" #define IMAGE_PREFERENCES ":/images/kcmsystem24.png"
#define IMAGE_SERVER ":/images/server_24x24.png" #define IMAGE_SERVER ":/images/server_24x24.png"
#define IMAGE_DIRECTORIES ":/images/folder_doments.png" #define IMAGE_DIRECTORIES ":/images/folder_doments.png"
#define IMAGE_CRYPTOGRAPHY ":/images/cryptography_24x24.png" #define IMAGE_CRYPTOGRAPHY ":/images/encrypted32.png"
#define IMAGE_LOG ":/images/log_24x24.png" #define IMAGE_LOG ":/images/log_24x24.png"
#define IMAGE_ABOUT ":/images/informations_24x24.png" #define IMAGE_ABOUT ":/images/informations_24x24.png"
#define IMAGE_SAVE ":/images/media-floppy.png" #define IMAGE_SAVE ":/images/media-floppy.png"
@ -69,6 +69,9 @@ PreferencesWindow::PreferencesWindow(QWidget *parent, Qt::WFlags flags)
ui.stackPages->add(new NotifyDialog(ui.stackPages), ui.stackPages->add(new NotifyDialog(ui.stackPages),
createPageAction(QIcon(IMAGE_NOTIFY), tr("Notify"), grp)); createPageAction(QIcon(IMAGE_NOTIFY), tr("Notify"), grp));
ui.stackPages->add(new CryptographyDialog(ui.stackPages),
createPageAction(QIcon(IMAGE_CRYPTOGRAPHY), tr("Security"), grp));
ui.stackPages->add(new FileAssotiationsDialog(ui.stackPages), ui.stackPages->add(new FileAssotiationsDialog(ui.stackPages),
createPageAction(QIcon(IMAGE_FILE_ASSOTIATIONS), createPageAction(QIcon(IMAGE_FILE_ASSOTIATIONS),
tr("File assotiations"), grp)); tr("File assotiations"), grp));

View File

@ -50,6 +50,7 @@ public:
Directories, /** Directories page. */ Directories, /** Directories page. */
Appearance, /** Appearance page. */ Appearance, /** Appearance page. */
Notify, /** Notify page. */ Notify, /** Notify page. */
Security, /** Security page. */
FileAssotiations /** File assotiations page. */ FileAssotiations /** File assotiations page. */
}; };