------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=126639
charles connells org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
------- Additional Comments From charles connells org 2007-07-18 01:33 -------
SVN commit 689243 by cconnell:
Optionally ask user for secret key password at startup, also some changes from
QByteArray to QString
FEATURE:126639
M +2 -42 cryptographyconfig.cpp
M +9 -9 cryptographyconfig.h
M +25 -9 cryptographyplugin.cpp
M +5 -6 cryptographyplugin.h
M +12 -10 cryptographypreferences.cpp
M +2 -2 cryptographypreferences.h
M +8 -9 gpginterface.cpp
M +0 -1 gpginterface.h
--- trunk/KDE/kdenetwork/kopete/plugins/cryptography/cryptographyconfig.cpp
#689242:689243
@ -34,7 +34,7 @
KConfigGroup config(KGlobal::config(), "Cryptography Plugin");
mFingerprint = config.readEntry ("Private key fingerprint", "");
- mAskPassPhrase = config.readEntry ("Ask for passphrase", false);
+ mAskPassphraseOnStartup = config.readEntry ("Ask for passphrase on
startup", false);
mCacheMode = (CryptographyConfig::CacheMode)config.readEntry ("Cache
mode", (uint)CryptographyConfig::Close);
mCacheTime = config.readEntry ("Cache time", 15);
}
@ -44,49 +44,9 @
KConfigGroup config(KGlobal::config(), "Cryptography Plugin");
config.writeEntry("Private key fingerprint", mFingerprint );
- config.writeEntry("Ask for passphrase", mAskPassPhrase);
+ config.writeEntry("Ask for passphrase on startup",
mAskPassphraseOnStartup);
config.writeEntry("Cache mode", (uint)mCacheMode);
config.writeEntry("Cache time", mCacheTime);
config.sync();
}
-
-QString CryptographyConfig::fingerprint() const
-{
- return mFingerprint;
-}
-
-bool CryptographyConfig::askPassPhrase() const
-{
- return mAskPassPhrase;
-}
-
-CryptographyConfig::CacheMode CryptographyConfig::cacheMode() const
-{
- return mCacheMode;
-}
-
-uint CryptographyConfig::cacheTime() const
-{
- return mCacheTime;
-}
-
-void CryptographyConfig::setFingerprint(QString f)
-{
- mFingerprint = f;
-}
-
-void CryptographyConfig::setAskPassPhrase(bool b)
-{
- mAskPassPhrase = b;
-}
-
-void CryptographyConfig::setCacheMode(CacheMode m)
-{
- mCacheMode = m;
-}
-
-void CryptographyConfig::setCacheTime(uint t)
-{
- mCacheTime = t;
-}
--- trunk/KDE/kdenetwork/kopete/plugins/cryptography/cryptographyconfig.h
#689242:689243
@ -34,21 +34,21 @
void save();
//accessor functions
- QString fingerprint() const;
- bool askPassPhrase() const;
- CacheMode cacheMode() const;
- uint cacheTime() const;
+ QString fingerprint() const { return mFingerprint; }
+ CacheMode cacheMode() const { return mCacheMode; }
+ uint cacheTime() const { return mCacheTime; }
+ bool askPassphraseOnStartup() const { return mAskPassphraseOnStartup; }
- void setFingerprint(QString f);
- void setAskPassPhrase(bool b);
- void setCacheMode(CacheMode mode);
- void setCacheTime(uint time);
+ void setFingerprint(QString f) { mFingerprint = f; }
+ void setCacheMode(CacheMode mode) { mCacheMode = mode; }
+ void setCacheTime(uint time) { mCacheTime = time; }
+ void setAskPassphraseOnStartup (bool b) { mAskPassphraseOnStartup = b; }
private:
QString mFingerprint;
- bool mAskPassPhrase;
CacheMode mCacheMode;
uint mCacheTime;
+ bool mAskPassphraseOnStartup;
};
--- trunk/KDE/kdenetwork/kopete/plugins/cryptography/cryptographyplugin.cpp
#689242:689243
@ -19,7 +19,6 @
#include <qtimer.h>
#include <qregexp.h>
#include <QList>
-#include <QByteArray>
#include <kdebug.h>
#include <kaction.h>
@ -30,6 +29,8 @
#include <kicon.h>
#include <kiconloader.h>
#include <kmessagebox.h>
+#include <kpassworddialog.h>
+#include <kleo/ui/keylistview.h>
#include "kopetemetacontact.h"
#include "kopetecontactlist.h"
@ -86,6 +87,9 @
connect ( this, SIGNAL ( settingsChanged() ), this, SLOT (
loadSettings() ) );
connect ( Kopete::ChatSessionManager::self(), SIGNAL (
chatSessionCreated ( Kopete::ChatSession * ) ) , SLOT ( slotNewKMM (
Kopete::ChatSession * ) ) );
+
+ slotAskPassphraseOnStartup();
+
//Add GUI action to all already existing kmm (if the plugin is launched
when kopete already rining)
QList<Kopete::ChatSession*> sessions =
Kopete::ChatSessionManager::self()->sessions();
foreach ( Kopete::ChatSession *session, sessions )
@ -106,7 +110,7 @
CryptographyConfig c;
mPrivateKeyID = c.fingerprint();
- mAskPassPhrase = c.askPassPhrase();
+ mAskPassPhraseOnStartup = c.askPassphraseOnStartup();
mCachePassPhrase = c.cacheMode();
mCacheTime = c.cacheTime();
}
@ -123,7 +127,7 @
return pluginStatic_->m_cachedPass;
}
-void CryptographyPlugin::setCachedPass ( const QByteArray& p )
+void CryptographyPlugin::setCachedPass ( const QString& p )
{
if ( pluginStatic_->mCachePassPhrase == CryptographyConfig::Never )
return;
@ -136,11 +140,6 @
pluginStatic_->m_cachedPass=p;
}
-bool CryptographyPlugin::passphraseHandling()
-{
- return !pluginStatic_->mAskPassPhrase;
-}
-
void CryptographyPlugin::slotIncomingMessage ( Kopete::Message& msg )
{
QString body = msg.plainBody();
@ -221,6 +220,13 @
}
}
+class MyColumnStrategy : public Kleo::KeyListView::ColumnStrategy
+{
+ public:
+ QString title () { return "Select Key"; }
+
+};
+
void CryptographyPlugin::slotSelectContactKey()
{
Kopete::MetaContact
*m=Kopete::ContactList::self()->selectedMetaContacts().first();
@ -239,10 +245,20 @
void CryptographyPlugin::slotForgetCachedPass()
{
- m_cachedPass=QByteArray();
+ m_cachedPass=QString();
m_cachedPass_timer->stop();
}
+void CryptographyPlugin::slotAskPassphraseOnStartup()
+{
+ if (mAskPassPhraseOnStartup && !mPrivateKeyID.isEmpty() ){
+ KPasswordDialog dialog ( Kopete::UI::Global::mainWidget() );
+ dialog.setPrompt ( i18n ("Enter password for GPG private key")
);
+ dialog.exec ();
+ setCachedPass( dialog.password() );
+ }
+}
+
void CryptographyPlugin::slotNewKMM ( Kopete::ChatSession *KMM )
{
connect ( this , SIGNAL ( destroyed ( QObject* ) ) ,
--- trunk/KDE/kdenetwork/kopete/plugins/cryptography/cryptographyplugin.h
#689242:689243
@ -20,8 +20,7 @
#include "kopeteplugin.h"
-//Added by qt3to4:
-#include <QByteArray>
+
#include "cryptographyconfig.h"
class QStringList;
@ -48,8 +47,7 @
public:
static CryptographyPlugin *plugin();
static QString cachedPass();
- static void setCachedPass(const QByteArray &pass);
- static bool passphraseHandling();
+ static void setCachedPass(const QString &pass);
static const QRegExp isHTML;
CryptographyPlugin( QObject *parent, const QStringList &args );
@ -61,7 +59,8 @
void slotOutgoingMessage( Kopete::Message& msg );
private slots:
-
+ // implemented as a slot so it can be hooked to a timer
+ void slotAskPassphraseOnStartup ();
void slotSelectContactKey();
void slotForgetCachedPass();
void loadSettings();
@ -78,7 +77,7 @
//Settings
QString mPrivateKeyID;
unsigned int mCacheTime;
- bool mAskPassPhrase;
+ bool mAskPassPhraseOnStartup;
CryptographyConfig::CacheMode mCachePassPhrase;
};
---
trunk/KDE/kdenetwork/kopete/plugins/cryptography/cryptographypreferences.cpp
#689242:689243
@ -48,22 +48,22 @
QLabel * label = new QLabel ( i18n ("With this plugin you can encrypt
messages so that nobody but your intended recipient can read them, and you can
also sign messages, so that recipients can verify that a given message has
actually come from you. <a
href=\"http://en.wikipedia.org/wiki/Public-key_cryptography\">How this
works</a>.\n\nBefore you can send encrypted messages to someone, you must
select their public key by right-clicking on their name in your contact list,
and choosing \"Select Public Key.\"\n\nNote: All messages become plain text
when used with this plugin"), this );
label->setWordWrap (true);
- mAskPassPhrase = new QCheckBox ( i18n ("Ask for passphrase every time"
), this);
-
+ mAskPassphraseOnStartup = new QCheckBox ( i18n ("Ask for passphrase on
Kopete startup" ), this);
+
mPreferencesDialog = new Ui::CryptographyPrefsUI;
mPreferencesDialog->setupUi ( w );
l->addWidget ( key );
l->addWidget ( label );
- l->addWidget ( mAskPassPhrase );
+ l->addWidget ( mAskPassphraseOnStartup );
l->addWidget ( w );
l->addStretch ();
- connect ( mAskPassPhrase, SIGNAL ( toggled ( bool ) ), this, SLOT (
slotAskPressed ( bool ) ) );
+ connect ( mAskPassphraseOnStartup, SIGNAL ( toggled ( bool ) ), this,
SLOT ( slotAskOnStartupPressed ( bool ) ) );
connect ( key->dialogButton(), SIGNAL ( clicked() ), this, SLOT (
slotModified() ) );
connect ( key->eraseButton(), SIGNAL ( clicked() ), this, SLOT (
slotModified() ) );
- connect ( mAskPassPhrase, SIGNAL ( toggled ( bool ) ), this, SLOT (
slotModified() ) );
+ connect ( mAskPassphraseOnStartup, SIGNAL ( toggled ( bool ) ), this,
SLOT ( slotModified() ) );
connect ( mPreferencesDialog->onClose, SIGNAL ( toggled ( bool ) ),
this, SLOT ( slotModified() ) );
connect ( mPreferencesDialog->time, SIGNAL ( toggled ( bool ) ), this,
SLOT ( slotModified() ) );
connect ( mPreferencesDialog->never, SIGNAL ( toggled ( bool ) ), this,
SLOT ( slotModified() ) );
@ -83,7 +83,7 @
mConfig->load();
key->setFingerprint ( mConfig->fingerprint() );
- mAskPassPhrase->setChecked ( mConfig->askPassPhrase() );
+ mAskPassphraseOnStartup->setChecked ( mConfig->askPassphraseOnStartup()
);
mPreferencesDialog->cacheTime->setValue ( mConfig->cacheTime() );
if ( mConfig->cacheTime() == CryptographyConfig::Close )
@ -101,7 +101,7 @
void CryptographyPreferences::save()
{
mConfig->setFingerprint ( key->fingerprint() );
- mConfig->setAskPassPhrase ( mAskPassPhrase->isChecked() );
+ mConfig->setAskPassphraseOnStartup (
mAskPassphraseOnStartup->isChecked() );
mConfig->setCacheTime ( mPreferencesDialog->cacheTime->value() );
if ( mPreferencesDialog->onClose->isChecked() )
@ -120,15 +120,17 @
void CryptographyPreferences::defaults()
{
key->eraseButton()->click();
- mAskPassPhrase->setChecked ( false );
+ mAskPassphraseOnStartup->setChecked ( false );
mPreferencesDialog->onClose->setChecked ( true );
mPreferencesDialog->cacheTime->setValue ( 15 );
slotModified();
}
-void CryptographyPreferences::slotAskPressed ( bool b )
+void CryptographyPreferences::slotAskOnStartupPressed ( bool b )
{
- mPreferencesDialog->cacheBehavior->setEnabled ( !b );
+ mPreferencesDialog->never->setEnabled (!b);
+ if (b)
+ mPreferencesDialog->onClose->setChecked (true);
}
void CryptographyPreferences::slotModified()
--- trunk/KDE/kdenetwork/kopete/plugins/cryptography/cryptographypreferences.h
#689242:689243
@ -46,13 +46,13 @
private:
Kleo::EncryptionKeyRequester * key;
- QCheckBox * mAskPassPhrase;
+ QCheckBox * mAskPassphraseOnStartup;
Ui::CryptographyPrefsUI *mPreferencesDialog;
CryptographyConfig *mConfig;
private slots:
void slotModified();
- void slotAskPressed (bool b);
+ void slotAskOnStartupPressed (bool b);
};
#endif
--- trunk/KDE/kdenetwork/kopete/plugins/cryptography/gpginterface.cpp
#689242:689243
@ -57,7 +57,8 @
{
counter++;
password = getPassword ( password, privateKey, counter
);
- gpgcmd = "gpg --no-secmem-warning --no-tty " +
options.toLocal8Bit() + " -e " + dests.toLocal8Bit(); gpgcmd += " --passphrase
" + password + " -s ";
+ gpgcmd = "gpg --no-secmem-warning --no-tty " + options
+ " -e " + dests;
+ gpgcmd += " --passphrase " + password + " -s ";
QProcess fp;
fp.start ( gpgcmd, QIODevice::ReadWrite );
@ -72,7 +73,7 @
}
else
{
- gpgcmd = "gpg --no-secmem-warning --no-tty " +
options.toLocal8Bit() + " -e " + dests.toLocal8Bit();
+ gpgcmd = "gpg --no-secmem-warning --no-tty " + options + " -e "
+ dests;
QProcess fp;
fp.start ( gpgcmd, QIODevice::ReadWrite );
fp.waitForStarted();
@ -193,22 +194,20 @
{
Q_OBJECT
public:
- CryptographyPasswordDialog ( QWidget *parent=0L, const
KPasswordDialogFlags &flags=0, const KDialog::ButtonCodes otherButtons=0 ) :
KPasswordDialog ( parent, flags, otherButtons ) {}};
+ CryptographyPasswordDialog ( QWidget *parent=0L, const
KPasswordDialogFlags &flags=0, const KDialog::ButtonCodes otherButtons=0 ) :
KPasswordDialog ( parent, flags, otherButtons ) {}
+};
QString GpgInterface::getPassword ( QString password, QString userID, int
counter )
{
if ( !password.isEmpty() && counter <= 1 )
return password;
- bool passphraseHandling = CryptographyPlugin::passphraseHandling();
- QString passdlg=i18n ( "Enter passphrase for secret key %1:", "0x" +
userID.right ( 8 ) );
- if ( counter>1 )
- passdlg.prepend ( i18n ( "<b>Bad passphrase</b><br> You have %1
tries left.<br>", 4-counter ) );
+
+ QString passdlg=i18n ( "Enter passphrase for secret key %1:\nYou have
%2 tries left.", "0x" + userID.right ( 8 ), 4 - counter );
CryptographyPasswordDialog dlg ( Kopete::UI::Global::mainWidget(),
KPasswordDialog::NoFlags );
dlg.setPrompt ( passdlg );
if ( !dlg.exec() )
return QString(); //the user canceled
- if ( passphraseHandling )
- CryptographyPlugin::setCachedPass (
dlg.password().toLocal8Bit() );
+ CryptographyPlugin::setCachedPass ( dlg.password() );
// if there is already a password dialog open, get password and send it
to that
QList<CryptographyPasswordDialog*> otherDialogs =
Kopete::UI::Global::mainWidget()->findChildren <CryptographyPasswordDialog *>
();
--- trunk/KDE/kdenetwork/kopete/plugins/cryptography/gpginterface.h
#689242:689243
@ -63,7 +63,6 @
static QString checkForUtf8 ( QString s );
- private:
static QString getPassword (QString password, QString userID,
int counter);
};
_______________________________________________
kopete-devel mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kopete-devel