summaryrefslogtreecommitdiffstats
path: root/libkdenetwork/gpgmepp/context.h
diff options
context:
space:
mode:
Diffstat (limited to 'libkdenetwork/gpgmepp/context.h')
-rw-r--r--libkdenetwork/gpgmepp/context.h317
1 files changed, 317 insertions, 0 deletions
diff --git a/libkdenetwork/gpgmepp/context.h b/libkdenetwork/gpgmepp/context.h
new file mode 100644
index 000000000..aae69f86a
--- /dev/null
+++ b/libkdenetwork/gpgmepp/context.h
@@ -0,0 +1,317 @@
+/* context.h - wraps a gpgme key context
+ Copyright (C) 2003 Klarälvdalens Datakonsult AB
+
+ This file is part of GPGME++.
+
+ GPGME++ is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ GPGME++ is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GPGME++; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
+
+// -*- c++ -*-
+#ifndef __GPGMEPP_CONTEXT_H__
+#define __GPGMEPP_CONTEXT_H__
+
+#include <gpgmepp/gpgmefw.h>
+
+#include <vector>
+#include <utility>
+#include <kdepimmacros.h>
+
+namespace GpgME {
+
+ class Key;
+ class Data;
+ class TrustItem;
+ class ProgressProvider;
+ class PassphraseProvider;
+ class EventLoopInteractor;
+
+ class KeyListResult;
+ class KeyGenerationResult;
+ class ImportResult;
+ class DecryptionResult;
+ class VerificationResult;
+ class SigningResult;
+ class EncryptionResult;
+
+ class EngineInfo;
+
+ class KDE_EXPORT Error {
+ public:
+ Error( int e=0 ) : mErr( e ) {}
+
+ const char * source() const;
+ const char * asString() const;
+
+ int code() const;
+ int sourceID() const;
+
+ bool isCanceled() const;
+
+ operator int() const { return mErr; }
+ operator bool() const { return mErr && !isCanceled(); }
+ private:
+ int mErr;
+ };
+
+ class KDE_EXPORT Context {
+ Context( gpgme_ctx_t );
+ public:
+ enum Protocol { OpenPGP, CMS, Unknown };
+
+ //
+ // Creation and destruction:
+ //
+
+ static Context * createForProtocol( Protocol proto );
+ virtual ~Context();
+
+ //
+ // Context Attributes
+ //
+
+ Protocol protocol() const;
+
+ void setArmor( bool useArmor );
+ bool armor() const;
+
+ void setTextMode( bool useTextMode );
+ bool textMode() const;
+
+ enum CertificateInclusion {
+ DefaultCertificates = -256,
+ AllCertificatesExceptRoot = -2,
+ AllCertificates = -1,
+ NoCertificates = 0,
+ OnlySenderCertificate = 1
+ };
+ void setIncludeCertificates( int which );
+ int includeCertificates() const;
+
+ enum KeyListMode {
+ Local = 0x1,
+ Extern = 0x2,
+ Signatures = 0x4,
+ Validate = 0x10
+ };
+ void setKeyListMode( unsigned int keyListMode );
+ void addKeyListMode( unsigned int keyListMode );
+ unsigned int keyListMode() const;
+
+ void setPassphraseProvider( PassphraseProvider * provider );
+ PassphraseProvider * passphraseProvider() const;
+
+ void setProgressProvider( ProgressProvider * provider );
+ ProgressProvider * progressProvider() const;
+
+ void setManagedByEventLoopInteractor( bool managed );
+ bool managedByEventLoopInteractor() const;
+
+ GpgME::Error setLocale( int category, const char * value );
+
+ private:
+ friend class EventLoopInteractor;
+ void installIOCallbacks( gpgme_io_cbs * iocbs );
+ void uninstallIOCallbacks();
+
+ public:
+ //
+ //
+ // Key Management
+ //
+ //
+
+ //
+ // Key Listing
+ //
+
+ GpgME::Error startKeyListing( const char * pattern=0, bool secretOnly=false );
+ GpgME::Error startKeyListing( const char * patterns[], bool secretOnly=false );
+
+ Key nextKey( GpgME::Error & e );
+
+ KeyListResult endKeyListing();
+ KeyListResult keyListResult() const;
+
+ Key key( const char * fingerprint, GpgME::Error & e, bool secret=false );
+
+ //
+ // Key Generation
+ //
+
+ KeyGenerationResult generateKey( const char * parameters, Data & pubKey );
+ GpgME::Error startKeyGeneration( const char * parameters, Data & pubkey );
+ KeyGenerationResult keyGenerationResult() const;
+
+ //
+ // Key Export
+ //
+
+ GpgME::Error exportPublicKeys( const char * pattern, Data & keyData );
+ GpgME::Error exportPublicKeys( const char * pattern[], Data & keyData );
+ GpgME::Error startPublicKeyExport( const char * pattern, Data & keyData );
+ GpgME::Error startPublicKeyExport( const char * pattern[], Data & keyData );
+
+ //
+ // Key Import
+ //
+
+ ImportResult importKeys( const Data & data );
+ GpgME::Error startKeyImport( const Data & data );
+ ImportResult importResult() const;
+
+ //
+ // Key Deletion
+ //
+
+ GpgME::Error deleteKey( const Key & key, bool allowSecretKeyDeletion=false );
+ GpgME::Error startKeyDeletion( const Key & key, bool allowSecretKeyDeletion=false );
+
+ //
+ // Trust Item Management
+ //
+
+ GpgME::Error startTrustItemListing( const char * pattern, int maxLevel );
+ TrustItem nextTrustItem( GpgME::Error & e );
+ GpgME::Error endTrustItemListing();
+
+ //
+ //
+ // Crypto Operations
+ //
+ //
+
+ //
+ // Decryption
+ //
+
+ DecryptionResult decrypt( const Data & cipherText, Data & plainText );
+ GpgME::Error startDecryption( const Data & cipherText, Data & plainText );
+ DecryptionResult decryptionResult() const;
+
+ //
+ // Signature Verification
+ //
+
+ VerificationResult verifyDetachedSignature( const Data & signature, const Data & signedText );
+ VerificationResult verifyOpaqueSignature( const Data & signedData, Data & plainText );
+ GpgME::Error startDetachedSignatureVerification( const Data & signature, const Data & signedText );
+ GpgME::Error startOpaqueSignatureVerification( const Data & signedData, Data & plainText );
+ VerificationResult verificationResult() const;
+
+ //
+ // Combined Decryption and Signature Verification
+ //
+
+ std::pair<DecryptionResult,VerificationResult> decryptAndVerify( const Data & cipherText, Data & plainText );
+ GpgME::Error startCombinedDecryptionAndVerification( const Data & cipherText, Data & plainText );
+ // use verificationResult() and decryptionResult() to retrieve the result objects...
+
+ //
+ // Signing
+ //
+
+ void clearSigningKeys();
+ GpgME::Error addSigningKey( const Key & signer );
+ Key signingKey( unsigned int index ) const;
+
+ enum SignatureMode { Normal, Detached, Clearsigned };
+ SigningResult sign( const Data & plainText, Data & signature, SignatureMode mode );
+ GpgME::Error startSigning( const Data & plainText, Data & signature, SignatureMode mode );
+ SigningResult signingResult() const;
+
+ //
+ // Encryption
+ //
+
+ enum EncryptionFlags { None=0, AlwaysTrust=1 };
+ EncryptionResult encrypt( const std::vector<Key> & recipients, const Data & plainText, Data & cipherText, EncryptionFlags flags );
+ GpgME::Error encryptSymmetrically( const Data & plainText, Data & cipherText );
+ GpgME::Error startEncryption( const std::vector<Key> & recipients, const Data & plainText, Data & cipherText, EncryptionFlags flags );
+ EncryptionResult encryptionResult() const;
+
+ //
+ // Combined Signing and Encryption
+ //
+
+ std::pair<SigningResult,EncryptionResult> signAndEncrypt( const std::vector<Key> & recipients, const Data & plainText, Data & cipherText, EncryptionFlags flags );
+ GpgME::Error startCombinedSigningAndEncryption( const std::vector<Key> & recipients, const Data & plainText, Data & cipherText, EncryptionFlags flags );
+ // use encryptionResult() and signingResult() to retrieve the result objects...
+
+ //
+ //
+ // Audit Log
+ //
+ //
+ enum AuditLogFlags {
+ HtmlAuditLog = 1,
+ AuditLogWithHelp = 128
+ };
+ GpgME::Error startGetAuditLog( Data & output, unsigned int flags=0 );
+ GpgME::Error getAuditLog( Data & output, unsigned int flags=0 );
+
+ //
+ //
+ // Run Control
+ //
+ //
+
+ bool poll();
+ GpgME::Error wait();
+ GpgME::Error lastError() const;
+ GpgME::Error cancelPendingOperation();
+
+ class Private;
+ Private * impl() const { return d; }
+ private:
+ Private * d;
+
+ private: // disable...
+ Context( const Context & );
+ const Context & operator=( const Context & );
+ };
+
+ //
+ //
+ // Globals
+ //
+ //
+
+ KDE_EXPORT void initializeLibrary();
+
+ KDE_EXPORT GpgME::Error setDefaultLocale( int category, const char * value );
+
+ KDE_EXPORT Context * wait( GpgME::Error & e, bool hang=true );
+ typedef void (*IdleFunction)(void);
+ KDE_EXPORT IdleFunction registerIdleFunction( IdleFunction idleFunction );
+
+ typedef void (*IOCallback)( void * data, int fd );
+
+ KDE_EXPORT EngineInfo engineInfo( Context::Protocol proto );
+
+ KDE_EXPORT GpgME::Error checkEngine( Context::Protocol proto );
+
+ enum Feature {
+ ValidatingKeylistModeFeature = 0x00000001,
+ CancelOperationFeature = 0x00000002,
+ WrongKeyUsageFeature = 0x00000004,
+
+ AuditLogFeature = 0x00001000,
+
+ FeatureMaxValue = 0x80000000
+ };
+ KDE_EXPORT bool hasFeature( unsigned long feature );
+
+} // namespace GpgME
+
+#endif // __GPGMEPP_CONTEXT_H__