[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdenetwork/kopete/plugins/cryptography
From:       Charles Connell <charles () connells ! org>
Date:       2007-07-17 23:33:36
Message-ID: 1184715216.513653.18405.nullmailer () svn ! kde ! org
[Download RAW message or body]

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);
 };
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic