|
Packit |
d7e8d0 |
/*
|
|
Packit |
d7e8d0 |
context.h - wraps a gpgme key context
|
|
Packit |
d7e8d0 |
Copyright (C) 2003, 2007 Klarälvdalens Datakonsult AB
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
This file is part of GPGME++.
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GPGME++ is free software; you can redistribute it and/or
|
|
Packit |
d7e8d0 |
modify it under the terms of the GNU Library General Public
|
|
Packit |
d7e8d0 |
License as published by the Free Software Foundation; either
|
|
Packit |
d7e8d0 |
version 2 of the License, or (at your option) any later version.
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GPGME++ is distributed in the hope that it will be useful,
|
|
Packit |
d7e8d0 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
d7e8d0 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
d7e8d0 |
GNU Library General Public License for more details.
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
You should have received a copy of the GNU Library General Public License
|
|
Packit |
d7e8d0 |
along with GPGME++; see the file COPYING.LIB. If not, write to the
|
|
Packit |
d7e8d0 |
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Packit |
d7e8d0 |
Boston, MA 02110-1301, USA.
|
|
Packit |
d7e8d0 |
*/
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
// -*- c++ -*-
|
|
Packit |
d7e8d0 |
#ifndef __GPGMEPP_CONTEXT_H__
|
|
Packit |
d7e8d0 |
#define __GPGMEPP_CONTEXT_H__
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
#include "global.h"
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
#include "error.h"
|
|
Packit |
d7e8d0 |
#include "verificationresult.h" // for Signature::Notation
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
#include <memory>
|
|
Packit |
d7e8d0 |
#include <vector>
|
|
Packit |
d7e8d0 |
#include <utility>
|
|
Packit |
d7e8d0 |
#include <iosfwd>
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
namespace GpgME
|
|
Packit |
d7e8d0 |
{
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
class Key;
|
|
Packit |
d7e8d0 |
class Data;
|
|
Packit |
d7e8d0 |
class TrustItem;
|
|
Packit |
d7e8d0 |
class ProgressProvider;
|
|
Packit |
d7e8d0 |
class PassphraseProvider;
|
|
Packit |
d7e8d0 |
class EventLoopInteractor;
|
|
Packit |
d7e8d0 |
class EditInteractor;
|
|
Packit |
d7e8d0 |
class AssuanTransaction;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
class KeyListResult;
|
|
Packit |
d7e8d0 |
class KeyGenerationResult;
|
|
Packit |
d7e8d0 |
class ImportResult;
|
|
Packit |
d7e8d0 |
class DecryptionResult;
|
|
Packit |
d7e8d0 |
class VerificationResult;
|
|
Packit |
d7e8d0 |
class SigningResult;
|
|
Packit |
d7e8d0 |
class EncryptionResult;
|
|
Packit |
d7e8d0 |
class VfsMountResult;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
class EngineInfo;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
class GPGMEPP_EXPORT Context
|
|
Packit |
d7e8d0 |
{
|
|
Packit |
d7e8d0 |
explicit Context(gpgme_ctx_t);
|
|
Packit |
d7e8d0 |
public:
|
|
Packit |
d7e8d0 |
//using GpgME::Protocol;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Creation and destruction:
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
static Context *createForProtocol(Protocol proto);
|
|
Packit Service |
30b792 |
/** Same as above but returning a unique ptr. */
|
|
Packit Service |
30b792 |
static std::unique_ptr<Context> create(Protocol proto);
|
|
Packit Service |
30b792 |
static std::unique_ptr<Context> createForEngine(Engine engine, Error *err = nullptr);
|
|
Packit |
d7e8d0 |
virtual ~Context();
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Context Attributes
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
Protocol protocol() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
void setArmor(bool useArmor);
|
|
Packit |
d7e8d0 |
bool armor() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
void setTextMode(bool useTextMode);
|
|
Packit |
d7e8d0 |
bool textMode() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
void setOffline(bool useOfflineMode);
|
|
Packit |
d7e8d0 |
bool offline() const;
|
|
Packit |
d7e8d0 |
|
|
Packit Service |
30b792 |
const char *getFlag(const char *name) const;
|
|
Packit Service |
30b792 |
Error setFlag(const char *name, const char *value);
|
|
Packit Service |
30b792 |
|
|
Packit |
d7e8d0 |
enum CertificateInclusion {
|
|
Packit |
d7e8d0 |
DefaultCertificates = -256,
|
|
Packit |
d7e8d0 |
AllCertificatesExceptRoot = -2,
|
|
Packit |
d7e8d0 |
AllCertificates = -1,
|
|
Packit |
d7e8d0 |
NoCertificates = 0,
|
|
Packit |
d7e8d0 |
OnlySenderCertificate = 1
|
|
Packit |
d7e8d0 |
};
|
|
Packit |
d7e8d0 |
void setIncludeCertificates(int which);
|
|
Packit |
d7e8d0 |
int includeCertificates() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//using GpgME::KeyListMode;
|
|
Packit |
d7e8d0 |
void setKeyListMode(unsigned int keyListMode);
|
|
Packit |
d7e8d0 |
void addKeyListMode(unsigned int keyListMode);
|
|
Packit |
d7e8d0 |
unsigned int keyListMode() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
/** Set the passphrase provider
|
|
Packit |
d7e8d0 |
*
|
|
Packit |
d7e8d0 |
* To avoid problems where a class using a context registers
|
|
Packit |
d7e8d0 |
* itself as the provider the Context does not take ownership
|
|
Packit |
d7e8d0 |
* of the provider and the caller must ensure that the provider
|
|
Packit |
d7e8d0 |
* is deleted if it is no longer needed.
|
|
Packit |
d7e8d0 |
*/
|
|
Packit |
d7e8d0 |
void setPassphraseProvider(PassphraseProvider *provider);
|
|
Packit |
d7e8d0 |
PassphraseProvider *passphraseProvider() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
/** Set the progress provider
|
|
Packit |
d7e8d0 |
*
|
|
Packit |
d7e8d0 |
* To avoid problems where a class using a context registers
|
|
Packit |
d7e8d0 |
* itself as the provider the Context does not take ownership
|
|
Packit |
d7e8d0 |
* of the provider and the caller must ensure that the provider
|
|
Packit |
d7e8d0 |
* is deleted if it is no longer needed.
|
|
Packit |
d7e8d0 |
*/
|
|
Packit |
d7e8d0 |
void setProgressProvider(ProgressProvider *provider);
|
|
Packit |
d7e8d0 |
ProgressProvider *progressProvider() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
void setManagedByEventLoopInteractor(bool managed);
|
|
Packit |
d7e8d0 |
bool managedByEventLoopInteractor() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GpgME::Error setLocale(int category, const char *value);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
EngineInfo engineInfo() const;
|
|
Packit |
d7e8d0 |
GpgME::Error setEngineFileName(const char *filename);
|
|
Packit |
d7e8d0 |
GpgME::Error setEngineHomeDirectory(const char *filename);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
enum PinentryMode{
|
|
Packit |
d7e8d0 |
PinentryDefault = 0,
|
|
Packit |
d7e8d0 |
PinentryAsk = 1,
|
|
Packit |
d7e8d0 |
PinentryCancel = 2,
|
|
Packit |
d7e8d0 |
PinentryError = 3,
|
|
Packit |
d7e8d0 |
PinentryLoopback = 4
|
|
Packit |
d7e8d0 |
};
|
|
Packit |
d7e8d0 |
GpgME::Error setPinentryMode(PinentryMode which);
|
|
Packit |
d7e8d0 |
PinentryMode pinentryMode() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
private:
|
|
Packit |
d7e8d0 |
friend class ::GpgME::EventLoopInteractor;
|
|
Packit |
d7e8d0 |
void installIOCallbacks(gpgme_io_cbs *iocbs);
|
|
Packit |
d7e8d0 |
void uninstallIOCallbacks();
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
public:
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Key Management
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Key Listing
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit Service |
30b792 |
GpgME::Error startKeyListing(const char *pattern = nullptr, bool secretOnly = false);
|
|
Packit |
d7e8d0 |
GpgME::Error startKeyListing(const char *patterns[], bool secretOnly = false);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
Key nextKey(GpgME::Error &e);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
KeyListResult endKeyListing();
|
|
Packit |
d7e8d0 |
KeyListResult keyListResult() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
Key key(const char *fingerprint, GpgME::Error &e, bool secret = false);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Key Generation
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
KeyGenerationResult generateKey(const char *parameters, Data &pubKey);
|
|
Packit |
d7e8d0 |
GpgME::Error startKeyGeneration(const char *parameters, Data &pubkey);
|
|
Packit |
d7e8d0 |
KeyGenerationResult keyGenerationResult() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Key Export
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GpgME::Error exportPublicKeys(const char *pattern, Data &keyData);
|
|
Packit |
d7e8d0 |
GpgME::Error exportPublicKeys(const char *pattern[], Data &keyData);
|
|
Packit |
d7e8d0 |
GpgME::Error startPublicKeyExport(const char *pattern, Data &keyData);
|
|
Packit |
d7e8d0 |
GpgME::Error startPublicKeyExport(const char *pattern[], Data &keyData);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Key Import
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
ImportResult importKeys(const Data &data);
|
|
Packit |
d7e8d0 |
ImportResult importKeys(const std::vector<Key> &keys);
|
|
Packit |
d7e8d0 |
GpgME::Error startKeyImport(const Data &data);
|
|
Packit |
d7e8d0 |
GpgME::Error startKeyImport(const std::vector<Key> &keys);
|
|
Packit |
d7e8d0 |
ImportResult importResult() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Key Deletion
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GpgME::Error deleteKey(const Key &key, bool allowSecretKeyDeletion = false);
|
|
Packit |
d7e8d0 |
GpgME::Error startKeyDeletion(const Key &key, bool allowSecretKeyDeletion = false);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Passphrase changing
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GpgME::Error passwd(const Key &key);
|
|
Packit |
d7e8d0 |
GpgME::Error startPasswd(const Key &key);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Key Editing
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GpgME::Error edit(const Key &key, std::unique_ptr<EditInteractor> function, Data &out;;
|
|
Packit |
d7e8d0 |
GpgME::Error startEditing(const Key &key, std::unique_ptr<EditInteractor> function, Data &out;;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Modern Interface actions. Require 2.1.x
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
Error startCreateKey (const char *userid,
|
|
Packit |
d7e8d0 |
const char *algo,
|
|
Packit |
d7e8d0 |
unsigned long reserved,
|
|
Packit |
d7e8d0 |
unsigned long expires,
|
|
Packit |
d7e8d0 |
const Key &certkey,
|
|
Packit |
d7e8d0 |
unsigned int flags);
|
|
Packit |
d7e8d0 |
Error createKey (const char *userid,
|
|
Packit |
d7e8d0 |
const char *algo,
|
|
Packit |
d7e8d0 |
unsigned long reserved,
|
|
Packit |
d7e8d0 |
unsigned long expires,
|
|
Packit |
d7e8d0 |
const Key &certkey,
|
|
Packit |
d7e8d0 |
unsigned int flags);
|
|
Packit |
d7e8d0 |
|
|
Packit Service |
30b792 |
// Same as create key but returning a result
|
|
Packit Service |
30b792 |
GpgME::KeyGenerationResult createKeyEx (const char *userid,
|
|
Packit Service |
30b792 |
const char *algo,
|
|
Packit Service |
30b792 |
unsigned long reserved,
|
|
Packit Service |
30b792 |
unsigned long expires,
|
|
Packit Service |
30b792 |
const Key &certkey,
|
|
Packit Service |
30b792 |
unsigned int flags);
|
|
Packit Service |
30b792 |
|
|
Packit |
d7e8d0 |
Error addUid(const Key &key, const char *userid);
|
|
Packit |
d7e8d0 |
Error startAddUid(const Key &key, const char *userid);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
Error revUid(const Key &key, const char *userid);
|
|
Packit |
d7e8d0 |
Error startRevUid(const Key &key, const char *userid);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
Error createSubkey(const Key &key, const char *algo,
|
|
Packit |
d7e8d0 |
unsigned long reserved = 0,
|
|
Packit |
d7e8d0 |
unsigned long expires = 0,
|
|
Packit |
d7e8d0 |
unsigned int flags = 0);
|
|
Packit |
d7e8d0 |
Error startCreateSubkey(const Key &key, const char *algo,
|
|
Packit |
d7e8d0 |
unsigned long reserved = 0,
|
|
Packit |
d7e8d0 |
unsigned long expires = 0,
|
|
Packit |
d7e8d0 |
unsigned int flags = 0);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
// using TofuInfo::Policy
|
|
Packit |
d7e8d0 |
Error setTofuPolicy(const Key &k, unsigned int policy);
|
|
Packit |
d7e8d0 |
Error setTofuPolicyStart(const Key &k, unsigned int policy);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
EditInteractor *lastEditInteractor() const;
|
|
Packit |
d7e8d0 |
std::unique_ptr<EditInteractor> takeLastEditInteractor();
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// SmartCard Editing
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GpgME::Error cardEdit(const Key &key, std::unique_ptr<EditInteractor> function, Data &out;;
|
|
Packit |
d7e8d0 |
GpgME::Error startCardEditing(const Key &key, std::unique_ptr<EditInteractor> function, Data &out;;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
EditInteractor *lastCardEditInteractor() const;
|
|
Packit |
d7e8d0 |
std::unique_ptr<EditInteractor> takeLastCardEditInteractor();
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Trust Item Management
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GpgME::Error startTrustItemListing(const char *pattern, int maxLevel);
|
|
Packit |
d7e8d0 |
TrustItem nextTrustItem(GpgME::Error &e);
|
|
Packit |
d7e8d0 |
GpgME::Error endTrustItemListing();
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Assuan Transactions
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GpgME::Error assuanTransact(const char *command, std::unique_ptr<AssuanTransaction> transaction);
|
|
Packit |
d7e8d0 |
GpgME::Error assuanTransact(const char *command);
|
|
Packit |
d7e8d0 |
GpgME::Error startAssuanTransaction(const char *command, std::unique_ptr<AssuanTransaction> transaction);
|
|
Packit |
d7e8d0 |
GpgME::Error startAssuanTransaction(const char *command);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
AssuanTransaction *lastAssuanTransaction() const;
|
|
Packit |
d7e8d0 |
std::unique_ptr<AssuanTransaction> takeLastAssuanTransaction();
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Crypto Operations
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
enum DecryptionFlags {
|
|
Packit |
d7e8d0 |
// Keep in line with core's flags
|
|
Packit |
d7e8d0 |
DecryptNone = 0,
|
|
Packit |
d7e8d0 |
DecryptVerify = 1,
|
|
Packit |
d7e8d0 |
DecryptUnwrap = 128,
|
|
Packit |
d7e8d0 |
DecryptMaxValue = 0x80000000
|
|
Packit |
d7e8d0 |
};
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Decryption
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
// Alternative way to set decryption flags as they were added only in
|
|
Packit |
d7e8d0 |
// 1.9.0 and so other API can still be used but with 1.9.0 additionally
|
|
Packit |
d7e8d0 |
// flags can be set.
|
|
Packit |
d7e8d0 |
void setDecryptionFlags (const DecryptionFlags flags);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
DecryptionResult decrypt(const Data &cipherText, Data &plainText);
|
|
Packit |
d7e8d0 |
GpgME::Error startDecryption(const Data &cipherText, Data &plainText);
|
|
Packit |
d7e8d0 |
DecryptionResult decrypt(const Data &cipherText, Data &plainText, const DecryptionFlags flags);
|
|
Packit |
d7e8d0 |
GpgME::Error startDecryption(const Data &cipherText, Data &plainText, const DecryptionFlags flags);
|
|
Packit |
d7e8d0 |
DecryptionResult decryptionResult() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Signature Verification
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
VerificationResult verifyDetachedSignature(const Data &signature, const Data &signedText);
|
|
Packit |
d7e8d0 |
VerificationResult verifyOpaqueSignature(const Data &signedData, Data &plainText);
|
|
Packit |
d7e8d0 |
GpgME::Error startDetachedSignatureVerification(const Data &signature, const Data &signedText);
|
|
Packit |
d7e8d0 |
GpgME::Error startOpaqueSignatureVerification(const Data &signedData, Data &plainText);
|
|
Packit |
d7e8d0 |
VerificationResult verificationResult() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Combined Decryption and Signature Verification
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
std::pair<DecryptionResult, VerificationResult> decryptAndVerify(const Data &cipherText, Data &plainText);
|
|
Packit |
d7e8d0 |
std::pair<DecryptionResult, VerificationResult> decryptAndVerify(const Data &cipherText, Data &plainText, const DecryptionFlags flags);
|
|
Packit |
d7e8d0 |
GpgME::Error startCombinedDecryptionAndVerification(const Data &cipherText, Data &plainText);
|
|
Packit |
d7e8d0 |
GpgME::Error startCombinedDecryptionAndVerification(const Data &cipherText, Data &plainText, const DecryptionFlags flags);
|
|
Packit |
d7e8d0 |
// use verificationResult() and decryptionResult() to retrieve the result objects...
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Signing
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
void clearSigningKeys();
|
|
Packit |
d7e8d0 |
GpgME::Error addSigningKey(const Key &signer);
|
|
Packit |
d7e8d0 |
Key signingKey(unsigned int index) const;
|
|
Packit |
d7e8d0 |
std::vector<Key> signingKeys() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
void clearSignatureNotations();
|
|
Packit |
d7e8d0 |
GpgME::Error addSignatureNotation(const char *name, const char *value, unsigned int flags = 0);
|
|
Packit |
d7e8d0 |
GpgME::Error addSignaturePolicyURL(const char *url, bool critical = false);
|
|
Packit |
d7e8d0 |
const char *signaturePolicyURL() const;
|
|
Packit |
d7e8d0 |
Notation signatureNotation(unsigned int index) const;
|
|
Packit |
d7e8d0 |
std::vector<Notation> signatureNotations() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//using GpgME::SignatureMode;
|
|
Packit |
d7e8d0 |
SigningResult sign(const Data &plainText, Data &signature, SignatureMode mode);
|
|
Packit |
d7e8d0 |
GpgME::Error startSigning(const Data &plainText, Data &signature, SignatureMode mode);
|
|
Packit |
d7e8d0 |
SigningResult signingResult() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
// wrapper for gpgme_set_sender
|
|
Packit |
d7e8d0 |
const char *getSender();
|
|
Packit |
d7e8d0 |
GpgME::Error setSender(const char *sender);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Encryption
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
enum EncryptionFlags {
|
|
Packit |
d7e8d0 |
None = 0,
|
|
Packit |
d7e8d0 |
AlwaysTrust = 1,
|
|
Packit |
d7e8d0 |
NoEncryptTo = 2,
|
|
Packit |
d7e8d0 |
Prepare = 4,
|
|
Packit |
d7e8d0 |
ExpectSign = 8,
|
|
Packit |
d7e8d0 |
NoCompress = 16,
|
|
Packit |
d7e8d0 |
Symmetric = 32,
|
|
Packit |
d7e8d0 |
ThrowKeyIds = 64,
|
|
Packit |
d7e8d0 |
EncryptWrap = 128
|
|
Packit |
d7e8d0 |
};
|
|
Packit |
d7e8d0 |
EncryptionResult encrypt(const std::vector<Key> &recipients, const Data &plainText, Data &cipherText, EncryptionFlags flags);
|
|
Packit |
d7e8d0 |
GpgME::Error encryptSymmetrically(const Data &plainText, Data &cipherText);
|
|
Packit |
d7e8d0 |
GpgME::Error startEncryption(const std::vector<Key> &recipients, const Data &plainText, Data &cipherText, EncryptionFlags flags);
|
|
Packit |
d7e8d0 |
EncryptionResult encryptionResult() const;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Combined Signing and Encryption
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
std::pair<SigningResult, EncryptionResult> signAndEncrypt(const std::vector<Key> &recipients, const Data &plainText, Data &cipherText, EncryptionFlags flags);
|
|
Packit |
d7e8d0 |
GpgME::Error startCombinedSigningAndEncryption(const std::vector<Key> &recipients, const Data &plainText, Data &cipherText, EncryptionFlags flags);
|
|
Packit |
d7e8d0 |
// use encryptionResult() and signingResult() to retrieve the result objects...
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Audit Log
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
enum AuditLogFlags {
|
|
Packit Service |
30b792 |
DefaultAuditLog = 0,
|
|
Packit |
d7e8d0 |
HtmlAuditLog = 1,
|
|
Packit Service |
30b792 |
DiagnosticAuditLog = 2,
|
|
Packit |
d7e8d0 |
AuditLogWithHelp = 128
|
|
Packit |
d7e8d0 |
};
|
|
Packit |
d7e8d0 |
GpgME::Error startGetAuditLog(Data &output, unsigned int flags = 0);
|
|
Packit |
d7e8d0 |
GpgME::Error getAuditLog(Data &output, unsigned int flags = 0);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// G13 crypto container operations
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
GpgME::Error createVFS(const char *containerFile, const std::vector<Key> &recipients);
|
|
Packit |
d7e8d0 |
VfsMountResult mountVFS(const char *containerFile, const char *mountDir);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
// Spawn Engine
|
|
Packit |
d7e8d0 |
enum SpawnFlags {
|
|
Packit |
d7e8d0 |
SpawnNone = 0,
|
|
Packit |
d7e8d0 |
SpawnDetached = 1,
|
|
Packit Service |
30b792 |
SpawnAllowSetFg = 2,
|
|
Packit Service |
30b792 |
SpawnShowWindow = 4
|
|
Packit |
d7e8d0 |
};
|
|
Packit |
d7e8d0 |
/** Spwan the process \a file with arguments \a argv.
|
|
Packit |
d7e8d0 |
*
|
|
Packit |
d7e8d0 |
* If a data parameter is null the /dev/null will be
|
|
Packit |
d7e8d0 |
* used. (Or other platform stuff).
|
|
Packit |
d7e8d0 |
*
|
|
Packit |
d7e8d0 |
* @param file The executable to start.
|
|
Packit |
d7e8d0 |
* @param argv list of arguments file should be argv[0].
|
|
Packit |
d7e8d0 |
* @param input The data to be sent through stdin.
|
|
Packit |
d7e8d0 |
* @param output The data to be receive the stdout.
|
|
Packit |
d7e8d0 |
* @param err The data to receive stderr.
|
|
Packit |
d7e8d0 |
* @param flags Additional flags.
|
|
Packit |
d7e8d0 |
*
|
|
Packit |
d7e8d0 |
* @returns An error or empty error.
|
|
Packit |
d7e8d0 |
*/
|
|
Packit |
d7e8d0 |
GpgME::Error spawn(const char *file, const char *argv[],
|
|
Packit |
d7e8d0 |
Data &input, Data &output, Data &err,
|
|
Packit |
d7e8d0 |
SpawnFlags flags);
|
|
Packit |
d7e8d0 |
/** Async variant of spawn. Immediately returns after starting the
|
|
Packit |
d7e8d0 |
* process. */
|
|
Packit |
d7e8d0 |
GpgME::Error spawnAsync(const char *file, const char *argv[],
|
|
Packit |
d7e8d0 |
Data &input, Data &output,
|
|
Packit |
d7e8d0 |
Data &err, SpawnFlags flags);
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
// Run Control
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
//
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
bool poll();
|
|
Packit |
d7e8d0 |
GpgME::Error wait();
|
|
Packit |
d7e8d0 |
GpgME::Error lastError() const;
|
|
Packit |
d7e8d0 |
GpgME::Error cancelPendingOperation();
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
class Private;
|
|
Packit |
d7e8d0 |
const Private *impl() const
|
|
Packit |
d7e8d0 |
{
|
|
Packit |
d7e8d0 |
return d;
|
|
Packit |
d7e8d0 |
}
|
|
Packit |
d7e8d0 |
Private *impl()
|
|
Packit |
d7e8d0 |
{
|
|
Packit |
d7e8d0 |
return d;
|
|
Packit |
d7e8d0 |
}
|
|
Packit Service |
30b792 |
|
|
Packit |
d7e8d0 |
private:
|
|
Packit |
d7e8d0 |
// Helper functions that need to be context because they rely
|
|
Packit |
d7e8d0 |
// on the "Friendlyness" of context to access the gpgme types.
|
|
Packit |
d7e8d0 |
gpgme_key_t *getKeysFromRecipients(const std::vector<Key> &recipients);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
private:
|
|
Packit |
d7e8d0 |
Private *const d;
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
private: // disable...
|
|
Packit |
d7e8d0 |
Context(const Context &);
|
|
Packit |
d7e8d0 |
const Context &operator=(const Context &);
|
|
Packit |
d7e8d0 |
};
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
GPGMEPP_EXPORT std::ostream &operator<<(std::ostream &os, Context::CertificateInclusion incl);
|
|
Packit |
d7e8d0 |
GPGMEPP_EXPORT std::ostream &operator<<(std::ostream &os, Context::EncryptionFlags flags);
|
|
Packit |
d7e8d0 |
GPGMEPP_EXPORT std::ostream &operator<<(std::ostream &os, Context::AuditLogFlags flags);
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
} // namespace GpgME
|
|
Packit |
d7e8d0 |
|
|
Packit |
d7e8d0 |
#endif // __GPGMEPP_CONTEXT_H__
|