cryptobackend.h
00001 /* 00002 kleo/cryptobackend.h 00003 00004 This file is part of libkleopatra, the KDE keymanagement library 00005 Copyright (c) 2004,2005 Klar�lvdalens Datakonsult AB 00006 00007 Libkleopatra is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU General Public License as 00009 published by the Free Software Foundation; either version 2 of the 00010 License, or (at your option) any later version. 00011 00012 Libkleopatra is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program; if not, write to the Free Software 00019 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00020 00021 In addition, as a special exception, the copyright holders give 00022 permission to link the code of this program with any edition of 00023 the TQt library by Trolltech AS, Norway (or with modified versions 00024 of TQt that use the same license as TQt), and distribute linked 00025 combinations including the two. You must obey the GNU General 00026 Public License in all respects for all of the code used other than 00027 TQt. If you modify this file, you may extend this exception to 00028 your version of the file, but you are not obligated to do so. If 00029 you do not wish to do so, delete this exception statement from 00030 your version. 00031 */ 00032 00033 #ifndef __KLEO_CRYPTOBACKEND_H__ 00034 #define __KLEO_CRYPTOBACKEND_H__ 00035 00036 #include <tqstring.h> 00037 #include <tqvariant.h> 00038 00039 namespace Kleo { 00040 class CryptoConfig; 00041 class KeyListJob; 00042 class KeyGenerationJob; 00043 class ImportJob; 00044 class ExportJob; 00045 class DownloadJob; 00046 class DeleteJob; 00047 class EncryptJob; 00048 class DecryptJob; 00049 class SignJob; 00050 class VerifyDetachedJob; 00051 class VerifyOpaqueJob; 00052 class SignEncryptJob; 00053 class DecryptVerifyJob; 00054 class RefreshKeysJob; 00055 class SpecialJob; 00056 } 00057 00058 namespace Kleo { 00059 00060 class CryptoBackend { 00061 public: 00062 class Protocol; 00063 00064 static const char OpenPGP[]; 00065 static const char SMIME[]; 00066 00067 virtual ~CryptoBackend() {} 00068 00069 virtual TQString name() const = 0; 00070 virtual TQString displayName() const = 0; 00071 00072 virtual bool checkForOpenPGP( TQString * reason=0 ) const = 0; 00073 virtual bool checkForSMIME( TQString * reason=0 ) const = 0; 00074 virtual bool checkForProtocol( const char * name, TQString * reason=0 ) const = 0; 00075 00076 virtual bool supportsOpenPGP() const = 0; 00077 virtual bool supportsSMIME() const = 0; 00078 virtual bool supportsProtocol( const char * name ) const = 0; 00079 00080 virtual CryptoConfig * config() const = 0; 00081 00082 virtual Protocol * openpgp() const = 0; 00083 virtual Protocol * smime() const = 0; 00084 virtual Protocol * protocol( const char * name ) const = 0; 00085 00086 virtual const char * enumerateProtocols( int i ) const = 0; 00087 }; 00088 00089 class CryptoBackend::Protocol { 00090 public: 00091 virtual ~Protocol() {} 00092 00093 virtual TQString name() const = 0; 00094 00095 virtual TQString displayName() const = 0; 00096 00097 virtual KeyListJob * keyListJob( bool remote=false, bool includeSigs=false, bool validate=false ) const = 0; 00098 virtual EncryptJob * encryptJob( bool armor=false, bool textmode=false ) const = 0; 00099 virtual DecryptJob * decryptJob() const = 0; 00100 virtual SignJob * signJob( bool armor=false, bool textMode=false ) const = 0; 00101 virtual VerifyDetachedJob * verifyDetachedJob( bool textmode=false) const = 0; 00102 virtual VerifyOpaqueJob * verifyOpaqueJob( bool textmode=false ) const = 0; 00103 virtual KeyGenerationJob * keyGenerationJob() const = 0; 00104 virtual ImportJob * importJob() const = 0; 00105 virtual ExportJob * publicKeyExportJob( bool armor=false ) const = 0; 00106 // @param charset the encoding of the passphrase in the exported file 00107 virtual ExportJob * secretKeyExportJob( bool armor=false, const TQString& charset = TQString() ) const = 0; 00108 virtual DownloadJob * downloadJob( bool armor=false ) const = 0; 00109 virtual DeleteJob * deleteJob() const = 0; 00110 virtual SignEncryptJob * signEncryptJob( bool armor=false, bool textMode=false ) const = 0; 00111 virtual DecryptVerifyJob * decryptVerifyJob( bool textmode=false ) const = 0; 00112 virtual RefreshKeysJob * refreshKeysJob() const = 0; 00113 00114 virtual SpecialJob * specialJob( const char * type, const TQStringVariantMap & args ) const = 0; 00115 }; 00116 00117 } 00118 00119 #endif // __KLEO_CRYPTOBACKEND_H__
