• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

libkleo

  • sources
  • kde-4.12
  • kdepim
  • libkleo
  • backends
  • qgpgme
qgpgmebackend.cpp
Go to the documentation of this file.
1 /* -*- mode: C++; c-file-style: "gnu" -*-
2  qgpgmebackend.cpp
3 
4  This file is part of libkleopatra, the KDE keymanagement library
5  Copyright (c) 2004,2005 Klarälvdalens Datakonsult AB
6 
7  Libkleopatra is free software; you can redistribute it and/or
8  modify it under the terms of the GNU General Public License as
9  published by the Free Software Foundation; either version 2 of the
10  License, or (at your option) any later version.
11 
12  Libkleopatra is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 
21  In addition, as a special exception, the copyright holders give
22  permission to link the code of this program with any edition of
23  the Qt library by Trolltech AS, Norway (or with modified versions
24  of Qt that use the same license as Qt), and distribute linked
25  combinations including the two. You must obey the GNU General
26  Public License in all respects for all of the code used other than
27  Qt. If you modify this file, you may extend this exception to
28  your version of the file, but you are not obligated to do so. If
29  you do not wish to do so, delete this exception statement from
30  your version.
31 */
32 
33 #include "qgpgmebackend.h"
34 
35 #include "qgpgmecryptoconfig.h"
36 #include "qgpgmenewcryptoconfig.h"
37 
38 #include "qgpgmekeygenerationjob.h"
39 #include "qgpgmekeylistjob.h"
40 #include "qgpgmelistallkeysjob.h"
41 #include "qgpgmedecryptjob.h"
42 #include "qgpgmedecryptverifyjob.h"
43 #include "qgpgmerefreshkeysjob.h"
44 #include "qgpgmedeletejob.h"
45 #include "qgpgmesecretkeyexportjob.h"
46 #include "qgpgmedownloadjob.h"
47 #include "qgpgmesignencryptjob.h"
48 #include "qgpgmeencryptjob.h"
49 #include "qgpgmesignjob.h"
50 #include "qgpgmesignkeyjob.h"
51 #include "qgpgmeexportjob.h"
52 #include "qgpgmeverifydetachedjob.h"
53 #include "qgpgmeimportjob.h"
54 #include "qgpgmeimportfromkeyserverjob.h"
55 #include "qgpgmeverifyopaquejob.h"
56 #include "qgpgmechangeexpiryjob.h"
57 #include "qgpgmechangeownertrustjob.h"
58 #include "qgpgmechangepasswdjob.h"
59 #include "qgpgmeadduseridjob.h"
60 
61 #include <gpgme++/error.h>
62 #include <gpgme++/engineinfo.h>
63 
64 #include <klocale.h>
65 #include <kstandarddirs.h>
66 
67 #include <QFile>
68 #include <QString>
69 
70 namespace {
71 
72  class Protocol : public Kleo::CryptoBackend::Protocol {
73  GpgME::Protocol mProtocol;
74  public:
75  explicit Protocol( GpgME::Protocol proto ) : mProtocol( proto ) {}
76 
77  QString name() const {
78  switch ( mProtocol ) {
79  case GpgME::OpenPGP: return QLatin1String("OpenPGP");
80  case GpgME::CMS: return QLatin1String("SMIME");
81  default: return QString();
82  }
83  }
84 
85  QString displayName() const {
86  switch ( mProtocol ) {
87  case GpgME::OpenPGP: return QLatin1String("gpg");
88  case GpgME::CMS: return QLatin1String("gpgsm");
89  default: return i18n("unknown");
90  }
91  }
92 
93  Kleo::SpecialJob * specialJob( const char *, const QMap<QString,QVariant> & ) const { return 0; }
94 
95  Kleo::KeyListJob * keyListJob( bool remote, bool includeSigs, bool validate ) const {
96  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
97  if ( !context )
98  return 0;
99 
100  unsigned int mode = context->keyListMode();
101  if ( remote ) {
102  mode |= GpgME::Extern;
103  mode &= ~GpgME::Local;
104  } else {
105  mode |= GpgME::Local;
106  mode &= ~GpgME::Extern;
107  }
108  if ( includeSigs ) mode |= GpgME::Signatures;
109  if ( validate ) mode |= GpgME::Validate;
110  context->setKeyListMode( mode );
111  return new Kleo::QGpgMEKeyListJob( context );
112  }
113 
114  Kleo::ListAllKeysJob * listAllKeysJob( bool includeSigs, bool validate ) const {
115  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
116  if ( !context )
117  return 0;
118 
119  unsigned int mode = context->keyListMode();
120  mode |= GpgME::Local;
121  mode &= ~GpgME::Extern;
122  if ( includeSigs ) mode |= GpgME::Signatures;
123  if ( validate ) mode |= GpgME::Validate;
124  context->setKeyListMode( mode );
125  return new Kleo::QGpgMEListAllKeysJob( context );
126  }
127 
128  Kleo::EncryptJob * encryptJob( bool armor, bool textmode ) const {
129  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
130  if ( !context )
131  return 0;
132 
133  context->setArmor( armor );
134  context->setTextMode( textmode );
135  return new Kleo::QGpgMEEncryptJob( context );
136  }
137 
138  Kleo::DecryptJob * decryptJob() const {
139  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
140  if ( !context )
141  return 0;
142  return new Kleo::QGpgMEDecryptJob( context );
143  }
144 
145  Kleo::SignJob * signJob( bool armor, bool textMode ) const {
146  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
147  if ( !context )
148  return 0;
149 
150  context->setArmor( armor );
151  context->setTextMode( textMode );
152  return new Kleo::QGpgMESignJob( context );
153  }
154 
155  Kleo::VerifyDetachedJob * verifyDetachedJob( bool textMode ) const {
156  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
157  if ( !context )
158  return 0;
159 
160  context->setTextMode( textMode );
161  return new Kleo::QGpgMEVerifyDetachedJob( context );
162  }
163 
164  Kleo::VerifyOpaqueJob * verifyOpaqueJob( bool textMode ) const {
165  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
166  if ( !context )
167  return 0;
168 
169  context->setTextMode( textMode );
170  return new Kleo::QGpgMEVerifyOpaqueJob( context );
171  }
172 
173  Kleo::KeyGenerationJob * keyGenerationJob() const {
174  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
175  if ( !context )
176  return 0;
177  return new Kleo::QGpgMEKeyGenerationJob( context );
178  }
179 
180  Kleo::ImportJob * importJob() const {
181  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
182  if ( !context )
183  return 0;
184  return new Kleo::QGpgMEImportJob( context );
185  }
186 
187  Kleo::ImportFromKeyserverJob * importFromKeyserverJob() const {
188  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
189  if ( !context )
190  return 0;
191  return new Kleo::QGpgMEImportFromKeyserverJob( context );
192  }
193 
194  Kleo::ExportJob * publicKeyExportJob( bool armor ) const {
195  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
196  if ( !context )
197  return 0;
198 
199  context->setArmor( armor );
200  return new Kleo::QGpgMEExportJob( context );
201  }
202 
203  Kleo::ExportJob * secretKeyExportJob( bool armor, const QString& charset ) const {
204  if ( mProtocol != GpgME::CMS ) // fixme: add support for gpg, too
205  return 0;
206 
207  // this operation is not supported by gpgme, so we have to call gpgsm ourselves:
208  return new Kleo::QGpgMESecretKeyExportJob( armor, charset );
209  }
210 
211  Kleo::RefreshKeysJob * refreshKeysJob() const {
212  if ( mProtocol != GpgME::CMS ) // fixme: add support for gpg, too
213  return 0;
214 
215  // this operation is not supported by gpgme, so we have to call gpgsm ourselves:
216  return new Kleo::QGpgMERefreshKeysJob();
217  }
218 
219  Kleo::DownloadJob * downloadJob( bool armor ) const {
220  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
221  if ( !context )
222  return 0;
223 
224  context->setArmor( armor );
225  // this is the hackish interface for downloading from keyserers currently:
226  context->setKeyListMode( GpgME::Extern );
227  return new Kleo::QGpgMEDownloadJob( context );
228  }
229 
230  Kleo::DeleteJob * deleteJob() const {
231  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
232  if ( !context )
233  return 0;
234  return new Kleo::QGpgMEDeleteJob( context );
235  }
236 
237  Kleo::SignEncryptJob * signEncryptJob( bool armor, bool textMode ) const {
238  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
239  if ( !context )
240  return 0;
241 
242  context->setArmor( armor );
243  context->setTextMode( textMode );
244  return new Kleo::QGpgMESignEncryptJob( context );
245  }
246 
247  Kleo::DecryptVerifyJob * decryptVerifyJob( bool textMode ) const {
248  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
249  if ( !context )
250  return 0;
251 
252  context->setTextMode( textMode );
253  return new Kleo::QGpgMEDecryptVerifyJob( context );
254  }
255 
256  Kleo::ChangeExpiryJob * changeExpiryJob() const {
257  if ( mProtocol != GpgME::OpenPGP )
258  return 0; // only supported by gpg
259 
260  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
261  if ( !context )
262  return 0;
263  return new Kleo::QGpgMEChangeExpiryJob( context );
264  }
265 
266  Kleo::ChangePasswdJob * changePasswdJob() const {
267  if ( !GpgME::hasFeature( GpgME::PasswdFeature, 0 ) )
268  return 0;
269  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
270  if ( !context )
271  return 0;
272  return new Kleo::QGpgMEChangePasswdJob( context );
273  }
274 
275  Kleo::SignKeyJob * signKeyJob() const {
276  if ( mProtocol != GpgME::OpenPGP )
277  return 0; // only supported by gpg
278 
279  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
280  if ( !context )
281  return 0;
282  return new Kleo::QGpgMESignKeyJob( context );
283  }
284 
285 
286  Kleo::ChangeOwnerTrustJob * changeOwnerTrustJob() const {
287  if ( mProtocol != GpgME::OpenPGP )
288  return 0; // only supported by gpg
289 
290  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
291  if ( !context )
292  return 0;
293  return new Kleo::QGpgMEChangeOwnerTrustJob( context );
294  }
295 
296  Kleo::AddUserIDJob * addUserIDJob() const {
297  if ( mProtocol != GpgME::OpenPGP )
298  return 0; // only supported by gpg
299 
300  GpgME::Context * context = GpgME::Context::createForProtocol( mProtocol );
301  if ( !context )
302  return 0;
303  return new Kleo::QGpgMEAddUserIDJob( context );
304  }
305 
306  };
307 
308 }
309 
310 Kleo::QGpgMEBackend::QGpgMEBackend()
311  : Kleo::CryptoBackend(),
312  mCryptoConfig( 0 ),
313  mOpenPGPProtocol( 0 ),
314  mSMIMEProtocol( 0 )
315 {
316  GpgME::initializeLibrary();
317 }
318 
319 Kleo::QGpgMEBackend::~QGpgMEBackend() {
320  delete mCryptoConfig; mCryptoConfig = 0;
321  delete mOpenPGPProtocol; mOpenPGPProtocol = 0;
322  delete mSMIMEProtocol; mSMIMEProtocol = 0;
323 }
324 
325 QString Kleo::QGpgMEBackend::name() const {
326  return QLatin1String("gpgme");
327 }
328 
329 QString Kleo::QGpgMEBackend::displayName() const {
330  return i18n( "GpgME" );
331 }
332 
333 Kleo::CryptoConfig * Kleo::QGpgMEBackend::config() const {
334  if ( !mCryptoConfig ) {
335 #ifdef _WIN32_WCE // for now...
336  if ( GpgME::hasFeature( GpgME::GpgConfEngineFeature, 0 ) )
337  mCryptoConfig = new QGpgMENewCryptoConfig;
338  else
339 #endif
340  if ( !QGpgMECryptoConfig::gpgConfPath().isEmpty() )
341  mCryptoConfig = new QGpgMECryptoConfig();
342  }
343  return mCryptoConfig;
344 }
345 
346 static bool check( GpgME::Protocol proto, QString * reason ) {
347  if ( !GpgME::checkEngine( proto ) )
348  return true;
349  if ( !reason )
350  return false;
351  // error, check why:
352  const GpgME::EngineInfo ei = GpgME::engineInfo( proto );
353  if ( ei.isNull() )
354  *reason = i18n("GPGME was compiled without support for %1.", proto == GpgME::CMS ? QLatin1String("S/MIME") : QLatin1String("OpenPGP") );
355  else if ( ei.fileName() && !ei.version() )
356  *reason = i18n("Engine %1 is not installed properly.", QFile::decodeName( ei.fileName() ) );
357  else if ( ei.fileName() && ei.version() && ei.requiredVersion() )
358  *reason = i18n("Engine %1 version %2 installed, "
359  "but at least version %3 is required.",
360  QFile::decodeName( ei.fileName() ), QLatin1String(ei.version()), QLatin1String(ei.requiredVersion()) );
361  else
362  *reason = i18n("Unknown problem with engine for protocol %1.", proto == GpgME::CMS ? QLatin1String("S/MIME") : QLatin1String("OpenPGP") );
363  return false;
364 }
365 
366 bool Kleo::QGpgMEBackend::checkForOpenPGP( QString * reason ) const {
367  return check( GpgME::OpenPGP, reason );
368 }
369 
370 bool Kleo::QGpgMEBackend::checkForSMIME( QString * reason ) const {
371  return check( GpgME::CMS, reason );
372 }
373 
374 bool Kleo::QGpgMEBackend::checkForProtocol( const char * name, QString * reason ) const {
375  if ( qstricmp( name, OpenPGP ) == 0 )
376  return check( GpgME::OpenPGP, reason );
377  if ( qstricmp( name, SMIME ) == 0 )
378  return check( GpgME::CMS, reason );
379  if ( reason )
380  *reason = i18n( "Unsupported protocol \"%1\"", QLatin1String(name) );
381  return false;
382 }
383 
384 Kleo::CryptoBackend::Protocol * Kleo::QGpgMEBackend::openpgp() const {
385  if ( !mOpenPGPProtocol )
386  if ( checkForOpenPGP() )
387  mOpenPGPProtocol = new ::Protocol( GpgME::OpenPGP );
388  return mOpenPGPProtocol;
389 }
390 
391 Kleo::CryptoBackend::Protocol * Kleo::QGpgMEBackend::smime() const {
392  if ( !mSMIMEProtocol )
393  if ( checkForSMIME() )
394  mSMIMEProtocol = new ::Protocol( GpgME::CMS );
395  return mSMIMEProtocol;
396 }
397 
398 Kleo::CryptoBackend::Protocol * Kleo::QGpgMEBackend::protocol( const char * name ) const {
399  if ( qstricmp( name, OpenPGP ) == 0 )
400  return openpgp();
401  if ( qstricmp( name, SMIME ) == 0 )
402  return smime();
403  return 0;
404 }
405 
406 bool Kleo::QGpgMEBackend::supportsProtocol( const char * name ) const {
407  return qstricmp( name, OpenPGP ) == 0 || qstricmp( name, SMIME ) == 0;
408 }
409 
410 const char * Kleo::QGpgMEBackend::enumerateProtocols( int i ) const {
411  switch ( i ) {
412  case 0: return OpenPGP;
413  case 1: return SMIME;
414  default: return 0;
415  }
416 }
Kleo::DecryptJob
An abstract base class for asynchronous decrypters.
Definition: decryptjob.h:64
Kleo::QGpgMEBackend::checkForSMIME
bool checkForSMIME(QString *reason=0) const
Definition: qgpgmebackend.cpp:370
Kleo::RefreshKeysJob
An abstract base class for asynchronous key refreshers.
Definition: refreshkeysjob.h:62
Kleo::ChangePasswdJob
An abstract base class to change a key's passphrase asynchronously.
Definition: changepasswdjob.h:58
Kleo::QGpgMEChangeExpiryJob
Definition: qgpgmechangeexpiryjob.h:42
name
const char * name
Definition: kconfigbasedkeyfilter.cpp:124
Kleo::QGpgMEVerifyDetachedJob
Definition: qgpgmeverifydetachedjob.h:44
qgpgmechangeownertrustjob.h
qgpgmekeylistjob.h
qgpgmedecryptverifyjob.h
Kleo::QGpgMEDecryptVerifyJob
Definition: qgpgmedecryptverifyjob.h:45
QGpgMENewCryptoConfig
CryptoConfig implementation around the gpgconf command-line tool For method docu, see kleo/cryptoconf...
Definition: qgpgmenewcryptoconfig.h:157
Kleo::QGpgMEBackend::QGpgMEBackend
QGpgMEBackend()
Definition: qgpgmebackend.cpp:310
Kleo::VerifyOpaqueJob
An abstract base class for asynchronous verification of opaque signatures.
Definition: verifyopaquejob.h:64
Kleo::QGpgMEDecryptJob
Definition: qgpgmedecryptjob.h:44
Kleo::QGpgMEEncryptJob
Definition: qgpgmeencryptjob.h:45
Kleo::QGpgMEBackend::displayName
QString displayName() const
Definition: qgpgmebackend.cpp:329
Kleo::CryptoBackend::Protocol::verifyDetachedJob
virtual VerifyDetachedJob * verifyDetachedJob(bool textmode=false) const =0
Kleo::QGpgMEKeyListJob
Definition: qgpgmekeylistjob.h:45
Kleo::QGpgMEExportJob
Definition: qgpgmeexportjob.h:42
Kleo::QGpgMESignEncryptJob
Definition: qgpgmesignencryptjob.h:48
Kleo::SpecialJob
An abstract base class for protocol-specific jobs.
Definition: specialjob.h:65
Kleo::QGpgMEKeyGenerationJob
Definition: qgpgmekeygenerationjob.h:44
Kleo::ImportFromKeyserverJob
An abstract base class for asynchronous keyserver-importers.
Definition: importfromkeyserverjob.h:61
Kleo::QGpgMEBackend::supportsProtocol
bool supportsProtocol(const char *name) const
Definition: qgpgmebackend.cpp:406
Kleo::CryptoBackend::Protocol::keyGenerationJob
virtual KeyGenerationJob * keyGenerationJob() const =0
QString
Kleo::CryptoBackend::Protocol::displayName
virtual QString displayName() const =0
Kleo::CryptoBackend
Definition: cryptobackend.h:70
qgpgmekeygenerationjob.h
Kleo::QGpgMEImportJob
Definition: qgpgmeimportjob.h:44
qgpgmesignencryptjob.h
Kleo::CryptoBackend::Protocol::deleteJob
virtual DeleteJob * deleteJob() const =0
Kleo::CryptoBackend::Protocol::importJob
virtual ImportJob * importJob() const =0
Kleo::ChangeOwnerTrustJob
An abstract base class to change owner trust asynchronously.
Definition: changeownertrustjob.h:56
Kleo::CryptoBackend::Protocol::refreshKeysJob
virtual RefreshKeysJob * refreshKeysJob() const =0
Kleo::QGpgMEBackend::smime
Protocol * smime() const
Definition: qgpgmebackend.cpp:391
Kleo::CryptoBackend::Protocol::changePasswdJob
virtual ChangePasswdJob * changePasswdJob() const
Definition: cryptobackend.cpp:40
qgpgmeverifyopaquejob.h
Kleo::QGpgMESignKeyJob
Definition: qgpgmesignkeyjob.h:44
Kleo::CryptoBackend::Protocol::decryptJob
virtual DecryptJob * decryptJob() const =0
qgpgmedecryptjob.h
Kleo::QGpgMEBackend::checkForOpenPGP
bool checkForOpenPGP(QString *reason=0) const
Definition: qgpgmebackend.cpp:366
qgpgmeimportjob.h
Kleo::ListAllKeysJob
An abstract base class for asynchronously listing all keys.
Definition: listallkeysjob.h:67
qgpgmelistallkeysjob.h
Kleo::QGpgMEAddUserIDJob
Definition: qgpgmeadduseridjob.h:42
qgpgmeencryptjob.h
Kleo::QGpgMEDeleteJob
Definition: qgpgmedeletejob.h:46
qgpgmechangeexpiryjob.h
Kleo::QGpgMEVerifyOpaqueJob
Definition: qgpgmeverifyopaquejob.h:44
Kleo::ImportJob
An abstract base class for asynchronous importers.
Definition: importjob.h:61
Kleo::CryptoBackend::Protocol::verifyOpaqueJob
virtual VerifyOpaqueJob * verifyOpaqueJob(bool textmode=false) const =0
qgpgmeverifydetachedjob.h
Kleo::CryptoBackend::Protocol::signJob
virtual SignJob * signJob(bool armor=false, bool textMode=false) const =0
Kleo::QGpgMEDownloadJob
Definition: qgpgmedownloadjob.h:42
Kleo::CryptoBackend::Protocol::importFromKeyserverJob
virtual ImportFromKeyserverJob * importFromKeyserverJob() const =0
Kleo::QGpgMEChangeOwnerTrustJob
Definition: qgpgmechangeownertrustjob.h:42
Kleo::AddUserIDJob
An abstract base class to asynchronously add UIDs to OpenPGP keys.
Definition: adduseridjob.h:60
Kleo::QGpgMEBackend::protocol
Protocol * protocol(const char *name) const
Definition: qgpgmebackend.cpp:398
Kleo::CryptoBackend::Protocol::specialJob
virtual SpecialJob * specialJob(const char *type, const QMap< QString, QVariant > &args) const =0
Kleo::CryptoBackend::Protocol::publicKeyExportJob
virtual ExportJob * publicKeyExportJob(bool armor=false) const =0
qgpgmesignjob.h
qgpgmenewcryptoconfig.h
Kleo::CryptoBackend::Protocol::signKeyJob
virtual SignKeyJob * signKeyJob() const
Definition: cryptobackend.cpp:41
Kleo::CryptoBackend::Protocol::signEncryptJob
virtual SignEncryptJob * signEncryptJob(bool armor=false, bool textMode=false) const =0
Kleo::ChangeExpiryJob
An abstract base class to change expiry asynchronously.
Definition: changeexpiryjob.h:60
Kleo::QGpgMEBackend::checkForProtocol
bool checkForProtocol(const char *name, QString *reason) const
Definition: qgpgmebackend.cpp:374
Kleo::KeyListJob
An abstract base class for asynchronous key listers.
Definition: keylistjob.h:66
QGpgMECryptoConfig
CryptoConfig implementation around the gpgconf command-line tool For method docu, see kleo/cryptoconf...
Definition: qgpgmecryptoconfig.h:54
Kleo::SignJob
An abstract base class for asynchronous signing.
Definition: signjob.h:69
qgpgmeexportjob.h
Kleo::SignKeyJob
An abstract base class to sign keys asynchronously.
Definition: signkeyjob.h:60
Kleo::QGpgMESignJob
Definition: qgpgmesignjob.h:46
Kleo::QGpgMEListAllKeysJob
Definition: qgpgmelistallkeysjob.h:45
Kleo::QGpgMEBackend::openpgp
Protocol * openpgp() const
Definition: qgpgmebackend.cpp:384
Kleo::CryptoBackend::Protocol::addUserIDJob
virtual AddUserIDJob * addUserIDJob() const
Definition: cryptobackend.cpp:42
Kleo::CryptoBackend::Protocol::downloadJob
virtual DownloadJob * downloadJob(bool armor=false) const =0
QGpgMECryptoConfig::gpgConfPath
static QString gpgConfPath()
Definition: qgpgmecryptoconfig.cpp:69
Kleo::QGpgMEBackend::~QGpgMEBackend
~QGpgMEBackend()
Definition: qgpgmebackend.cpp:319
Kleo::CryptoBackend::Protocol::decryptVerifyJob
virtual DecryptVerifyJob * decryptVerifyJob(bool textmode=false) const =0
Kleo::CryptoBackend::Protocol::changeOwnerTrustJob
virtual ChangeOwnerTrustJob * changeOwnerTrustJob() const
Definition: cryptobackend.cpp:39
Kleo::QGpgMEImportFromKeyserverJob
Definition: qgpgmeimportfromkeyserverjob.h:44
Kleo::ExportJob
An abstract base class for asynchronous exporters.
Definition: exportjob.h:61
Kleo::CryptoBackend::Protocol::secretKeyExportJob
virtual ExportJob * secretKeyExportJob(bool armor=false, const QString &charset=QString()) const =0
Kleo::SignEncryptJob
An abstract base class for asynchronous combined signing and encrypting.
Definition: signencryptjob.h:71
qgpgmedownloadjob.h
Kleo::CryptoBackend::Protocol::name
virtual QString name() const =0
Kleo::QGpgMEBackend::config
CryptoConfig * config() const
Definition: qgpgmebackend.cpp:333
Kleo::QGpgMESecretKeyExportJob
Definition: qgpgmesecretkeyexportjob.h:51
Kleo::DecryptVerifyJob
An abstract base class for asynchronous combined decrypters and verifiers.
Definition: decryptverifyjob.h:65
Kleo::QGpgMERefreshKeysJob
Definition: qgpgmerefreshkeysjob.h:48
Kleo::CryptoBackend::Protocol::keyListJob
virtual KeyListJob * keyListJob(bool remote=false, bool includeSigs=false, bool validate=false) const =0
Kleo::QGpgMEBackend::enumerateProtocols
const char * enumerateProtocols(int i) const
Definition: qgpgmebackend.cpp:410
check
static bool check(GpgME::Protocol proto, QString *reason)
Definition: qgpgmebackend.cpp:346
qgpgmeadduseridjob.h
qgpgmebackend.h
Kleo::CryptoBackend::Protocol::changeExpiryJob
virtual ChangeExpiryJob * changeExpiryJob() const
Definition: cryptobackend.cpp:38
qgpgmedeletejob.h
Kleo::QGpgMEBackend::name
QString name() const
Definition: qgpgmebackend.cpp:325
qgpgmechangepasswdjob.h
qgpgmeimportfromkeyserverjob.h
Kleo::DownloadJob
An abstract base class for asynchronous downloaders.
Definition: downloadjob.h:67
Kleo::KeyGenerationJob
An abstract base class for asynchronous key generation.
Definition: keygenerationjob.h:61
Kleo::DeleteJob
An abstract base class for asynchronous deleters.
Definition: deletejob.h:58
Kleo::QGpgMEChangePasswdJob
Definition: qgpgmechangepasswdjob.h:42
Kleo::CryptoBackend::Protocol
Definition: cryptobackend.h:99
Kleo::CryptoBackend::Protocol::encryptJob
virtual EncryptJob * encryptJob(bool armor=false, bool textmode=false) const =0
Kleo::VerifyDetachedJob
An abstract base class for asynchronous verification of detached signatures.
Definition: verifydetachedjob.h:64
Kleo::CryptoBackend::Protocol::listAllKeysJob
virtual ListAllKeysJob * listAllKeysJob(bool includeSigs=false, bool validate=false) const =0
QMap
Definition: cryptobackend.h:66
Kleo::EncryptJob
An abstract base class for asynchronous encrypters.
Definition: encryptjob.h:67
qgpgmerefreshkeysjob.h
qgpgmecryptoconfig.h
qgpgmesignkeyjob.h
qgpgmesecretkeyexportjob.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:57:48 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

libkleo

Skip menu "libkleo"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal