2003-09-17 01:02:09 +00:00
|
|
|
/*
|
|
|
|
* qcaprovider.h - QCA Plugin API
|
2005-01-01 02:44:28 +00:00
|
|
|
* Copyright (C) 2003-2005 Justin Karneges <justin@affinix.com>
|
|
|
|
* Copyright (C) 2004,2005 Brad Hards <bradh@frogmouth.net>
|
2003-09-17 01:02:09 +00:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library 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
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
2007-01-02 05:10:11 +00:00
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
2003-09-17 01:02:09 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2003-07-02 03:34:11 +00:00
|
|
|
#ifndef QCAPROVIDER_H
|
|
|
|
#define QCAPROVIDER_H
|
|
|
|
|
2005-01-01 02:44:28 +00:00
|
|
|
#include "qca_core.h"
|
|
|
|
#include "qca_basic.h"
|
2005-03-03 21:56:23 +00:00
|
|
|
#include "qca_publickey.h"
|
2005-01-25 13:01:45 +00:00
|
|
|
#include "qca_cert.h"
|
2005-04-09 07:43:15 +00:00
|
|
|
#include "qca_keystore.h"
|
2005-04-22 12:46:55 +00:00
|
|
|
#include "qca_securelayer.h"
|
|
|
|
#include "qca_securemessage.h"
|
2003-07-02 03:34:11 +00:00
|
|
|
|
2004-11-09 08:02:13 +00:00
|
|
|
#include <limits>
|
|
|
|
|
2007-04-13 00:42:19 +00:00
|
|
|
class QCA_EXPORT QCAPlugin
|
2005-02-28 02:28:23 +00:00
|
|
|
{
|
|
|
|
public:
|
2007-04-13 00:42:19 +00:00
|
|
|
virtual ~QCAPlugin() {}
|
2005-02-28 02:28:23 +00:00
|
|
|
virtual QCA::Provider *createProvider() = 0;
|
|
|
|
};
|
|
|
|
|
2006-02-24 08:08:43 +00:00
|
|
|
Q_DECLARE_INTERFACE(QCAPlugin, "com.affinix.qca.Plugin/1.0")
|
|
|
|
|
2004-10-28 04:28:20 +00:00
|
|
|
namespace QCA {
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT RandomContext : public BasicContext
|
2004-10-28 04:28:20 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2004-10-28 04:28:20 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
RandomContext(Provider *p) : BasicContext(p, "random") {}
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual SecureArray nextBytes(int size) = 0;
|
2004-10-28 04:28:20 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT HashContext : public BasicContext
|
2004-10-28 04:28:20 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2004-10-28 04:28:20 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
HashContext(Provider *p, const QString &type) : BasicContext(p, type) {}
|
2004-10-28 04:28:20 +00:00
|
|
|
virtual void clear() = 0;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual void update(const SecureArray &a) = 0;
|
|
|
|
virtual SecureArray final() = 0;
|
2004-10-28 04:28:20 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT CipherContext : public BasicContext
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
CipherContext(Provider *p, const QString &type) : BasicContext(p, type) {}
|
2005-03-02 08:04:56 +00:00
|
|
|
virtual void setup(Direction dir, const SymmetricKey &key, const InitializationVector &iv) = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
virtual KeyLength keyLength() const = 0;
|
2004-11-28 11:13:05 +00:00
|
|
|
virtual unsigned int blockSize() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual bool update(const SecureArray &in, SecureArray *out) = 0;
|
|
|
|
virtual bool final(SecureArray *out) = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT MACContext : public BasicContext
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
MACContext(Provider *p, const QString &type) : BasicContext(p, type) {}
|
2004-10-29 22:51:30 +00:00
|
|
|
virtual void setup(const SymmetricKey &key) = 0;
|
|
|
|
virtual KeyLength keyLength() const = 0;
|
|
|
|
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual void update(const SecureArray &in) = 0;
|
|
|
|
virtual void final(SecureArray *out) = 0;
|
2005-03-01 10:21:21 +00:00
|
|
|
|
2004-11-09 08:02:13 +00:00
|
|
|
protected:
|
|
|
|
KeyLength anyKeyLength() const
|
|
|
|
{
|
|
|
|
// this is used instead of a default implementation to make sure that
|
|
|
|
// provider authors think about it, at least a bit.
|
|
|
|
// See Meyers, Effective C++, Effective C++ (2nd Ed), Item 36
|
2005-07-06 21:37:45 +00:00
|
|
|
return KeyLength( 0, INT_MAX, 1 );
|
2004-11-09 08:02:13 +00:00
|
|
|
}
|
2005-03-01 10:21:21 +00:00
|
|
|
};
|
2004-11-09 08:02:13 +00:00
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT KDFContext : public BasicContext
|
2005-03-01 10:21:21 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2005-03-01 10:21:21 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
KDFContext(Provider *p, const QString &type) : BasicContext(p, type) {}
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual SymmetricKey makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount) = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT DLGroupContext : public Provider::Context
|
2005-03-07 10:23:45 +00:00
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
DLGroupContext(Provider *p) : Provider::Context(p, "dlgroup") {}
|
|
|
|
virtual QList<DLGroupSet> supportedGroupSets() const = 0;
|
|
|
|
virtual bool isNull() const = 0;
|
|
|
|
virtual void fetchGroup(DLGroupSet set, bool block) = 0;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual void getResult(BigInteger *p, BigInteger *q, BigInteger *g) const = 0;
|
2005-03-07 10:23:45 +00:00
|
|
|
|
2007-04-03 11:03:38 +00:00
|
|
|
Q_SIGNALS:
|
2005-03-07 10:23:45 +00:00
|
|
|
void finished();
|
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT PKeyBase : public BasicContext
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2005-03-03 21:56:23 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
2005-07-28 12:17:09 +00:00
|
|
|
PKeyBase(Provider *p, const QString &type);
|
2004-10-29 22:51:30 +00:00
|
|
|
virtual bool isNull() const = 0;
|
2005-04-12 10:25:35 +00:00
|
|
|
virtual PKey::Type type() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
virtual bool isPrivate() const = 0;
|
2005-04-12 10:25:35 +00:00
|
|
|
virtual bool canExport() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
virtual void convertToPublic() = 0;
|
2005-04-04 00:34:13 +00:00
|
|
|
virtual int bits() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
|
|
|
|
// encrypt/decrypt
|
2005-03-03 21:56:23 +00:00
|
|
|
virtual int maximumEncryptSize(EncryptionAlgorithm alg) const;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual SecureArray encrypt(const SecureArray &in, EncryptionAlgorithm alg);
|
|
|
|
virtual bool decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg);
|
2004-10-29 22:51:30 +00:00
|
|
|
|
|
|
|
// sign / verify
|
2005-03-05 20:50:49 +00:00
|
|
|
virtual void startSign(SignatureAlgorithm alg, SignatureFormat format);
|
|
|
|
virtual void startVerify(SignatureAlgorithm alg, SignatureFormat format);
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual void update(const SecureArray &in);
|
|
|
|
virtual SecureArray endSign();
|
|
|
|
virtual bool endVerify(const SecureArray &sig);
|
2004-10-29 22:51:30 +00:00
|
|
|
|
|
|
|
// key agreement
|
2006-03-31 09:13:50 +00:00
|
|
|
virtual SymmetricKey deriveKey(const PKeyBase &theirs);
|
2005-03-03 21:56:23 +00:00
|
|
|
|
2007-04-03 11:03:38 +00:00
|
|
|
Q_SIGNALS:
|
2005-03-03 21:56:23 +00:00
|
|
|
void finished();
|
2004-10-29 22:51:30 +00:00
|
|
|
};
|
|
|
|
|
2005-06-25 02:48:53 +00:00
|
|
|
class QCA_EXPORT RSAContext : public PKeyBase
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2005-03-03 21:56:23 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
|
|
|
RSAContext(Provider *p) : PKeyBase(p, "rsa") {}
|
2005-03-03 21:56:23 +00:00
|
|
|
virtual void createPrivate(int bits, int exp, bool block) = 0;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual void createPrivate(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d) = 0;
|
|
|
|
virtual void createPublic(const BigInteger &n, const BigInteger &e) = 0;
|
|
|
|
virtual BigInteger n() const = 0;
|
|
|
|
virtual BigInteger e() const = 0;
|
|
|
|
virtual BigInteger p() const = 0;
|
|
|
|
virtual BigInteger q() const = 0;
|
|
|
|
virtual BigInteger d() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
};
|
|
|
|
|
2005-06-25 02:48:53 +00:00
|
|
|
class QCA_EXPORT DSAContext : public PKeyBase
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2005-03-03 21:56:23 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
|
|
|
DSAContext(Provider *p) : PKeyBase(p, "dsa") {}
|
2005-03-07 10:23:45 +00:00
|
|
|
virtual void createPrivate(const DLGroup &domain, bool block) = 0;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual void createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x) = 0;
|
|
|
|
virtual void createPublic(const DLGroup &domain, const BigInteger &y) = 0;
|
2005-03-07 10:23:45 +00:00
|
|
|
virtual DLGroup domain() const = 0;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual BigInteger y() const = 0;
|
|
|
|
virtual BigInteger x() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
};
|
|
|
|
|
2005-06-25 02:48:53 +00:00
|
|
|
class QCA_EXPORT DHContext : public PKeyBase
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2005-03-03 21:56:23 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
|
|
|
DHContext(Provider *p) : PKeyBase(p, "dh") {}
|
2005-03-07 10:23:45 +00:00
|
|
|
virtual void createPrivate(const DLGroup &domain, bool block) = 0;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual void createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x) = 0;
|
|
|
|
virtual void createPublic(const DLGroup &domain, const BigInteger &y) = 0;
|
2005-03-07 10:23:45 +00:00
|
|
|
virtual DLGroup domain() const = 0;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual BigInteger y() const = 0;
|
|
|
|
virtual BigInteger x() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT PKeyContext : public BasicContext
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
PKeyContext(Provider *p) : BasicContext(p, "pkey") {}
|
2004-10-29 22:51:30 +00:00
|
|
|
|
2005-03-03 21:56:23 +00:00
|
|
|
virtual QList<PKey::Type> supportedTypes() const = 0;
|
2005-03-08 03:17:37 +00:00
|
|
|
virtual QList<PKey::Type> supportedIOTypes() const = 0;
|
2005-03-03 21:56:23 +00:00
|
|
|
virtual QList<PBEAlgorithm> supportedPBEAlgorithms() const = 0;
|
|
|
|
|
|
|
|
virtual PKeyBase *key() = 0;
|
|
|
|
virtual const PKeyBase *key() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
virtual void setKey(PKeyBase *key) = 0;
|
2005-04-12 10:25:35 +00:00
|
|
|
virtual bool importKey(const PKeyBase *key) = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
|
|
|
|
// import / export
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual SecureArray publicToDER() const;
|
2006-11-13 01:44:41 +00:00
|
|
|
virtual QString publicToPEM() const;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual ConvertResult publicFromDER(const SecureArray &a);
|
2006-11-13 01:44:41 +00:00
|
|
|
virtual ConvertResult publicFromPEM(const QString &s);
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual SecureArray privateToDER(const SecureArray &passphrase, PBEAlgorithm pbe) const;
|
|
|
|
virtual QString privateToPEM(const SecureArray &passphrase, PBEAlgorithm pbe) const;
|
|
|
|
virtual ConvertResult privateFromDER(const SecureArray &a, const SecureArray &passphrase);
|
|
|
|
virtual ConvertResult privateFromPEM(const QString &s, const SecureArray &passphrase);
|
2004-10-29 22:51:30 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT CertBase : public BasicContext
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
CertBase(Provider *p, const QString &type) : BasicContext(p, type) {}
|
2004-10-29 22:51:30 +00:00
|
|
|
|
|
|
|
// import / export
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual SecureArray toDER() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
virtual QString toPEM() const = 0;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual ConvertResult fromDER(const SecureArray &a) = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
virtual ConvertResult fromPEM(const QString &s) = 0;
|
|
|
|
};
|
|
|
|
|
2005-06-25 02:48:53 +00:00
|
|
|
class QCA_EXPORT CertContextProps
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
|
|
|
public:
|
2005-03-05 04:18:05 +00:00
|
|
|
int version; // cert only
|
2005-03-04 21:50:57 +00:00
|
|
|
QDateTime start, end; // cert only
|
2006-11-15 05:21:41 +00:00
|
|
|
CertificateInfoOrdered subject;
|
|
|
|
CertificateInfoOrdered issuer; // cert only
|
2005-03-04 21:50:57 +00:00
|
|
|
Constraints constraints;
|
|
|
|
QStringList policies;
|
2007-04-25 19:39:34 +00:00
|
|
|
QStringList crlLocations; // cert only
|
2007-04-13 19:04:16 +00:00
|
|
|
BigInteger serial; // cert only
|
2005-03-04 21:50:57 +00:00
|
|
|
bool isCA;
|
|
|
|
bool isSelfSigned; // cert only
|
|
|
|
int pathLimit;
|
2007-04-13 19:04:16 +00:00
|
|
|
SecureArray sig;
|
2005-03-04 21:50:57 +00:00
|
|
|
SignatureAlgorithm sigalgo;
|
2005-04-04 03:20:20 +00:00
|
|
|
QByteArray subjectId, issuerId; // cert only
|
2005-03-04 21:50:57 +00:00
|
|
|
QString challenge; // csr only
|
|
|
|
CertificateRequestFormat format; // csr only
|
|
|
|
};
|
2004-10-29 22:51:30 +00:00
|
|
|
|
2005-06-25 02:48:53 +00:00
|
|
|
class QCA_EXPORT CRLContextProps
|
2005-03-04 21:50:57 +00:00
|
|
|
{
|
|
|
|
public:
|
2006-11-15 05:21:41 +00:00
|
|
|
CertificateInfoOrdered issuer;
|
2005-03-04 21:50:57 +00:00
|
|
|
int number;
|
|
|
|
QDateTime thisUpdate, nextUpdate;
|
|
|
|
QList<CRLEntry> revoked;
|
2007-04-13 19:04:16 +00:00
|
|
|
SecureArray sig;
|
2005-03-04 21:50:57 +00:00
|
|
|
SignatureAlgorithm sigalgo;
|
2005-04-04 03:20:20 +00:00
|
|
|
QByteArray issuerId;
|
2005-03-04 21:50:57 +00:00
|
|
|
};
|
|
|
|
|
2005-03-28 07:11:58 +00:00
|
|
|
class CRLContext;
|
|
|
|
|
2005-06-25 02:48:53 +00:00
|
|
|
class QCA_EXPORT CertContext : public CertBase
|
2005-03-04 21:50:57 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2005-03-04 21:50:57 +00:00
|
|
|
public:
|
|
|
|
CertContext(Provider *p) : CertBase(p, "cert") {}
|
|
|
|
|
|
|
|
virtual bool createSelfSigned(const CertificateOptions &opts, const PKeyContext &priv) = 0;
|
|
|
|
virtual const CertContextProps *props() const = 0;
|
2005-03-05 01:10:14 +00:00
|
|
|
virtual PKeyContext *subjectPublicKey() const = 0; // caller must delete
|
2006-03-30 07:25:14 +00:00
|
|
|
virtual bool isIssuerOf(const CertContext *other) const = 0;
|
2005-03-28 07:11:58 +00:00
|
|
|
|
|
|
|
// ownership of items IS NOT passed
|
2006-03-30 07:25:14 +00:00
|
|
|
virtual Validity validate(const QList<CertContext*> &trusted, const QList<CertContext*> &untrusted, const QList<CRLContext*> &crls, UsageMode u) const = 0;
|
|
|
|
virtual Validity validate_chain(const QList<CertContext*> &chain, const QList<CertContext*> &trusted, const QList<CRLContext*> &crls, UsageMode u) const = 0;
|
2005-03-04 21:50:57 +00:00
|
|
|
};
|
|
|
|
|
2005-06-25 02:48:53 +00:00
|
|
|
class QCA_EXPORT CSRContext : public CertBase
|
2005-03-04 21:50:57 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2005-03-04 21:50:57 +00:00
|
|
|
public:
|
|
|
|
CSRContext(Provider *p) : CertBase(p, "csr") {}
|
|
|
|
|
|
|
|
virtual bool canUseFormat(CertificateRequestFormat f) const = 0;
|
|
|
|
virtual bool createRequest(const CertificateOptions &opts, const PKeyContext &priv) = 0;
|
|
|
|
virtual const CertContextProps *props() const = 0;
|
2005-03-05 01:10:14 +00:00
|
|
|
virtual PKeyContext *subjectPublicKey() const = 0; // caller must delete
|
2005-03-04 21:50:57 +00:00
|
|
|
virtual QString toSPKAC() const = 0;
|
|
|
|
virtual ConvertResult fromSPKAC(const QString &s) = 0;
|
|
|
|
};
|
|
|
|
|
2005-06-25 02:48:53 +00:00
|
|
|
class QCA_EXPORT CRLContext : public CertBase
|
2005-03-04 21:50:57 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2005-03-04 21:50:57 +00:00
|
|
|
public:
|
|
|
|
CRLContext(Provider *p) : CertBase(p, "crl") {}
|
|
|
|
|
|
|
|
virtual const CRLContextProps *props() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT CertCollectionContext : public BasicContext
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
CertCollectionContext(Provider *p) : BasicContext(p, "certcollection") {}
|
2004-10-29 22:51:30 +00:00
|
|
|
|
2005-03-28 07:11:58 +00:00
|
|
|
// ownership of items IS NOT passed
|
|
|
|
virtual QByteArray toPKCS7(const QList<CertContext*> &certs, const QList<CRLContext*> &crls) const = 0;
|
2005-03-04 23:54:03 +00:00
|
|
|
|
2005-03-28 07:11:58 +00:00
|
|
|
// ownership of items IS passed
|
|
|
|
virtual ConvertResult fromPKCS7(const QByteArray &a, QList<CertContext*> *certs, QList<CRLContext*> *crls) const = 0;
|
2004-10-31 10:04:44 +00:00
|
|
|
};
|
2004-10-29 22:51:30 +00:00
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT CAContext : public BasicContext
|
2005-03-05 01:10:14 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2005-03-05 01:10:14 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
CAContext(Provider *p) : BasicContext(p, "ca") {}
|
2005-03-05 01:10:14 +00:00
|
|
|
|
|
|
|
virtual void setup(const CertContext &cert, const PKeyContext &priv) = 0;
|
|
|
|
|
|
|
|
// caller must delete all return values here
|
|
|
|
virtual CertContext *certificate() const = 0;
|
|
|
|
virtual CertContext *signRequest(const CSRContext &req, const QDateTime ¬ValidAfter) const = 0;
|
|
|
|
virtual CertContext *createCertificate(const PKeyContext &pub, const CertificateOptions &opts) const = 0;
|
|
|
|
virtual CRLContext *createCRL(const QDateTime &nextUpdate) const = 0;
|
|
|
|
virtual CRLContext *updateCRL(const CRLContext &crl, const QList<CRLEntry> &entries, const QDateTime &nextUpdate) const = 0;
|
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT PKCS12Context : public BasicContext
|
2005-03-05 01:10:14 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2005-03-05 01:10:14 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
PKCS12Context(Provider *p) : BasicContext(p, "pkcs12") {}
|
2005-03-05 01:10:14 +00:00
|
|
|
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual QByteArray toPKCS12(const QString &name, const QList<const CertContext*> &chain, const PKeyContext &priv, const SecureArray &passphrase) const = 0;
|
2005-03-05 01:10:14 +00:00
|
|
|
|
|
|
|
// caller must delete
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual ConvertResult fromPKCS12(const QByteArray &in, const SecureArray &passphrase, QString *name, QList<CertContext*> *chain, PKeyContext **priv) const = 0;
|
2005-03-05 01:10:14 +00:00
|
|
|
};
|
|
|
|
|
2005-07-06 22:27:02 +00:00
|
|
|
class QCA_EXPORT PGPKeyContextProps
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
QString keyId;
|
|
|
|
QStringList userIds;
|
|
|
|
bool isSecret;
|
|
|
|
QDateTime creationDate, expirationDate;
|
2007-03-24 16:39:09 +00:00
|
|
|
QString fingerprint; // all lowercase, no spaces
|
2005-07-06 22:27:02 +00:00
|
|
|
bool inKeyring;
|
|
|
|
bool isTrusted;
|
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT PGPKeyContext : public BasicContext
|
2005-06-25 02:48:53 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2005-06-25 02:48:53 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
PGPKeyContext(Provider *p) : BasicContext(p, "pgpkey") {}
|
2005-06-25 02:48:53 +00:00
|
|
|
|
2005-07-06 22:27:02 +00:00
|
|
|
virtual const PGPKeyContextProps *props() const = 0;
|
|
|
|
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual SecureArray toBinary() const = 0;
|
2005-07-06 22:27:02 +00:00
|
|
|
virtual QString toAscii() const = 0;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual ConvertResult fromBinary(const SecureArray &a) = 0;
|
2005-07-06 22:27:02 +00:00
|
|
|
virtual ConvertResult fromAscii(const QString &s) = 0;
|
2005-06-25 02:48:53 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT KeyStoreEntryContext : public BasicContext
|
2005-03-28 07:11:58 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2005-04-09 07:43:15 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
KeyStoreEntryContext(Provider *p) : BasicContext(p, "keystoreentry") {}
|
2005-04-09 07:43:15 +00:00
|
|
|
|
|
|
|
virtual KeyStoreEntry::Type type() const = 0;
|
|
|
|
virtual QString id() const = 0;
|
2005-07-28 12:17:09 +00:00
|
|
|
virtual QString name() const = 0;
|
2006-03-21 07:55:54 +00:00
|
|
|
virtual QString storeId() const = 0;
|
|
|
|
virtual QString storeName() const = 0;
|
2007-04-13 06:32:02 +00:00
|
|
|
virtual QString serialize() const = 0;
|
2005-04-09 07:43:15 +00:00
|
|
|
|
|
|
|
virtual KeyBundle keyBundle() const;
|
|
|
|
virtual Certificate certificate() const;
|
|
|
|
virtual CRL crl() const;
|
|
|
|
virtual PGPKey pgpSecretKey() const;
|
|
|
|
virtual PGPKey pgpPublicKey() const;
|
2006-03-30 09:11:00 +00:00
|
|
|
|
|
|
|
virtual bool ensureAccess();
|
2005-04-09 07:43:15 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT KeyStoreListContext : public Provider::Context
|
2005-04-09 07:43:15 +00:00
|
|
|
{
|
|
|
|
Q_OBJECT
|
2005-03-28 07:11:58 +00:00
|
|
|
public:
|
2005-07-28 12:17:09 +00:00
|
|
|
KeyStoreListContext(Provider *p) : Provider::Context(p, "keystorelist") {}
|
2005-04-09 07:43:15 +00:00
|
|
|
|
2006-03-30 09:11:00 +00:00
|
|
|
virtual void start();
|
|
|
|
|
2006-03-21 07:55:54 +00:00
|
|
|
// enable/disable update events
|
2006-03-30 09:11:00 +00:00
|
|
|
virtual void setUpdatesEnabled(bool enabled);
|
2005-04-09 07:43:15 +00:00
|
|
|
|
2005-07-28 12:17:09 +00:00
|
|
|
// returns a list of integer context ids (for keystores)
|
2006-03-30 09:11:00 +00:00
|
|
|
virtual QList<int> keyStores() = 0;
|
2005-04-09 07:43:15 +00:00
|
|
|
|
2005-07-28 12:17:09 +00:00
|
|
|
// null/empty return values mean the context id is gone
|
2005-04-09 07:43:15 +00:00
|
|
|
|
2005-07-28 12:17:09 +00:00
|
|
|
virtual KeyStore::Type type(int id) const = 0;
|
|
|
|
virtual QString storeId(int id) const = 0;
|
|
|
|
virtual QString name(int id) const = 0;
|
|
|
|
virtual bool isReadOnly(int id) const;
|
2005-04-09 07:43:15 +00:00
|
|
|
|
2005-07-28 12:17:09 +00:00
|
|
|
virtual QList<KeyStoreEntry::Type> entryTypes(int id) const = 0;
|
2005-04-09 07:43:15 +00:00
|
|
|
|
2006-03-21 07:55:54 +00:00
|
|
|
// caller must delete any returned KeyStoreEntryContexts
|
|
|
|
|
2006-03-30 09:11:00 +00:00
|
|
|
virtual QList<KeyStoreEntryContext*> entryList(int id) = 0;
|
2005-03-28 07:11:58 +00:00
|
|
|
|
2006-03-21 07:55:54 +00:00
|
|
|
// return 0 if no such entry
|
2006-03-30 09:11:00 +00:00
|
|
|
virtual KeyStoreEntryContext *entry(int id, const QString &entryId);
|
2006-03-21 07:55:54 +00:00
|
|
|
|
2007-04-13 06:32:02 +00:00
|
|
|
// return 0 if the provider doesn't handle or understand the string
|
|
|
|
virtual KeyStoreEntryContext *entryPassive(const QString &serialized);
|
2006-03-21 07:55:54 +00:00
|
|
|
|
2007-04-13 06:32:02 +00:00
|
|
|
virtual QString writeEntry(int id, const KeyBundle &kb);
|
|
|
|
virtual QString writeEntry(int id, const Certificate &cert);
|
|
|
|
virtual QString writeEntry(int id, const CRL &crl);
|
|
|
|
virtual QString writeEntry(int id, const PGPKey &key);
|
2005-07-28 12:17:09 +00:00
|
|
|
virtual bool removeEntry(int id, const QString &entryId);
|
2005-04-09 07:43:15 +00:00
|
|
|
|
2007-04-03 11:03:38 +00:00
|
|
|
Q_SIGNALS:
|
2005-07-28 12:17:09 +00:00
|
|
|
// note: busyStart is assumed after calling start(), no need to emit
|
|
|
|
void busyStart();
|
|
|
|
void busyEnd();
|
|
|
|
|
2005-07-31 05:12:42 +00:00
|
|
|
void updated();
|
|
|
|
void diagnosticText(const QString &str);
|
|
|
|
void storeUpdated(int id);
|
2005-03-28 07:11:58 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT TLSContext : public Provider::Context
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2005-07-28 12:17:09 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
2005-04-22 12:46:55 +00:00
|
|
|
class SessionInfo
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
bool isCompressed;
|
|
|
|
TLS::Version version;
|
|
|
|
QString cipherSuite;
|
|
|
|
int cipherBits, cipherMaxBits;
|
|
|
|
};
|
|
|
|
|
|
|
|
enum Result
|
|
|
|
{
|
|
|
|
Success,
|
|
|
|
Error,
|
|
|
|
Continue
|
|
|
|
};
|
|
|
|
|
2005-07-31 01:27:27 +00:00
|
|
|
TLSContext(Provider *p, const QString &type) : Provider::Context(p, type) {}
|
2004-10-29 22:51:30 +00:00
|
|
|
|
|
|
|
virtual void reset() = 0;
|
|
|
|
|
2006-03-17 11:16:23 +00:00
|
|
|
virtual QStringList supportedCipherSuites(const TLS::Version &version) const = 0;
|
2005-04-22 12:46:55 +00:00
|
|
|
virtual bool canCompress() const = 0;
|
2007-04-11 02:13:20 +00:00
|
|
|
virtual bool canSetHostName() const = 0;
|
2005-04-24 19:09:06 +00:00
|
|
|
virtual int maxSSF() const = 0;
|
2005-04-22 12:46:55 +00:00
|
|
|
|
|
|
|
virtual void setConstraints(int minSSF, int maxSSF) = 0;
|
|
|
|
virtual void setConstraints(const QStringList &cipherSuiteList) = 0;
|
2006-11-13 06:08:30 +00:00
|
|
|
virtual void setup(const CertificateCollection &trusted,
|
2007-04-11 02:13:20 +00:00
|
|
|
bool serverMode,
|
|
|
|
const QList<CertificateInfoOrdered> &issuerList,
|
|
|
|
const QString &hostName, bool compress) = 0;
|
|
|
|
virtual void setCertificate(const CertificateChain &cert, const PrivateKey &key) = 0;
|
2005-04-22 12:46:55 +00:00
|
|
|
|
2005-07-30 09:16:05 +00:00
|
|
|
virtual void shutdown() = 0; // flag for shutdown, call update next
|
|
|
|
virtual void setMTU(int size); // for dtls
|
|
|
|
|
|
|
|
// start() results:
|
|
|
|
// result (Success or Error)
|
|
|
|
virtual void start() = 0;
|
|
|
|
|
|
|
|
// update() results:
|
|
|
|
// during handshake:
|
|
|
|
// result
|
|
|
|
// to_net
|
|
|
|
// during shutdown:
|
|
|
|
// result
|
|
|
|
// to_net
|
|
|
|
// else
|
|
|
|
// result (Success or Error)
|
|
|
|
// to_net
|
|
|
|
// encoded
|
|
|
|
// to_app
|
|
|
|
// eof
|
|
|
|
// note: for dtls, this function only operates with single
|
|
|
|
// packets. perform the operation repeatedly to send/recv
|
|
|
|
// multiple packets.
|
|
|
|
virtual void update(const QByteArray &from_net, const QByteArray &from_app) = 0;
|
2005-07-28 12:17:09 +00:00
|
|
|
|
2005-07-31 01:27:27 +00:00
|
|
|
virtual void waitForResultsReady(int msecs) = 0; // -1 means wait forever
|
2005-04-22 12:46:55 +00:00
|
|
|
|
2005-07-28 12:17:09 +00:00
|
|
|
// results
|
2005-07-30 09:16:05 +00:00
|
|
|
virtual Result result() const = 0;
|
|
|
|
virtual QByteArray to_net() = 0;
|
|
|
|
virtual int encoded() const = 0;
|
|
|
|
virtual QByteArray to_app() = 0;
|
|
|
|
virtual bool eof() const = 0;
|
2005-07-28 12:17:09 +00:00
|
|
|
|
2007-04-11 02:13:20 +00:00
|
|
|
// call after handshake continue, but before success
|
|
|
|
virtual bool serverHelloReceived() const = 0;
|
|
|
|
virtual QList<CertificateInfoOrdered> issuerList() const = 0;
|
|
|
|
|
2005-07-30 09:16:05 +00:00
|
|
|
// call after successful handshake
|
2005-07-28 12:17:09 +00:00
|
|
|
virtual Validity peerCertificateValidity() const = 0;
|
|
|
|
virtual CertificateChain peerCertificateChain() const = 0;
|
2005-04-22 12:46:55 +00:00
|
|
|
virtual SessionInfo sessionInfo() const = 0;
|
2005-07-30 09:16:05 +00:00
|
|
|
|
|
|
|
// call after shutdown
|
2005-04-24 19:09:06 +00:00
|
|
|
virtual QByteArray unprocessed() = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
|
2007-04-03 11:03:38 +00:00
|
|
|
Q_SIGNALS:
|
2005-07-28 12:17:09 +00:00
|
|
|
void resultsReady();
|
2005-07-30 09:16:05 +00:00
|
|
|
void dtlsTimeout(); // call update, even with empty args
|
2004-10-29 22:51:30 +00:00
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT SASLContext : public Provider::Context
|
2004-10-29 22:51:30 +00:00
|
|
|
{
|
2005-07-31 01:27:27 +00:00
|
|
|
Q_OBJECT
|
2004-10-29 22:51:30 +00:00
|
|
|
public:
|
2005-04-22 12:46:55 +00:00
|
|
|
class HostPort
|
2004-10-31 10:04:44 +00:00
|
|
|
{
|
2005-04-22 12:46:55 +00:00
|
|
|
public:
|
|
|
|
QString addr;
|
|
|
|
quint16 port;
|
2004-10-31 10:04:44 +00:00
|
|
|
};
|
2005-04-22 12:46:55 +00:00
|
|
|
|
2004-10-31 10:04:44 +00:00
|
|
|
enum Result
|
|
|
|
{
|
|
|
|
Success,
|
|
|
|
Error,
|
|
|
|
NeedParams,
|
|
|
|
AuthCheck,
|
|
|
|
Continue
|
|
|
|
};
|
2005-04-22 12:46:55 +00:00
|
|
|
|
2004-10-31 10:04:44 +00:00
|
|
|
SASLContext(Provider *p) : Provider::Context(p, "sasl") {}
|
2004-10-29 22:51:30 +00:00
|
|
|
|
|
|
|
virtual void reset() = 0;
|
|
|
|
|
2005-07-31 01:27:27 +00:00
|
|
|
virtual void setConstraints(SASL::AuthFlags f, int minSSF, int maxSSF) = 0;
|
|
|
|
virtual void setup(const QString &service, const QString &host, const HostPort *local, const HostPort *remote, const QString &ext_id, int ext_ssf) = 0;
|
|
|
|
|
|
|
|
// startClient() results:
|
|
|
|
// result
|
|
|
|
// mech
|
|
|
|
// haveClientInit
|
|
|
|
// stepData
|
|
|
|
virtual void startClient(const QStringList &mechlist, bool allowClientSendFirst) = 0;
|
|
|
|
|
|
|
|
// startServer() results:
|
|
|
|
// result (Success or Error)
|
|
|
|
// mechlist
|
|
|
|
virtual void startServer(const QString &realm, bool disableServerSendLast) = 0;
|
|
|
|
|
|
|
|
// serverFirstStep() results:
|
|
|
|
// result
|
|
|
|
// stepData
|
|
|
|
virtual void serverFirstStep(const QString &mech, const QByteArray *clientInit) = 0;
|
|
|
|
|
|
|
|
// nextStep() results:
|
|
|
|
// result
|
|
|
|
// stepData
|
|
|
|
virtual void nextStep(const QByteArray &from_net) = 0;
|
|
|
|
|
|
|
|
// tryAgain() results:
|
|
|
|
// result
|
|
|
|
// stepData
|
|
|
|
virtual void tryAgain() = 0;
|
|
|
|
|
|
|
|
// update() results:
|
|
|
|
// result (Success or Error)
|
|
|
|
// to_net
|
|
|
|
// encoded
|
|
|
|
// to_app
|
|
|
|
virtual void update(const QByteArray &from_net, const QByteArray &from_app) = 0;
|
|
|
|
|
|
|
|
virtual void waitForResultsReady(int msecs) = 0; // -1 means wait forever
|
2004-10-29 22:51:30 +00:00
|
|
|
|
|
|
|
// results
|
2005-07-31 01:27:27 +00:00
|
|
|
virtual Result result() const = 0;
|
|
|
|
virtual QString mechlist() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
virtual QString mech() const = 0;
|
2005-07-31 01:27:27 +00:00
|
|
|
virtual bool haveClientInit() const = 0;
|
|
|
|
virtual QByteArray stepData() const = 0;
|
2006-11-13 01:44:41 +00:00
|
|
|
virtual QByteArray to_net() = 0;
|
2005-07-31 01:27:27 +00:00
|
|
|
virtual int encoded() const = 0;
|
2006-11-13 01:44:41 +00:00
|
|
|
virtual QByteArray to_app() = 0;
|
2005-07-31 01:27:27 +00:00
|
|
|
|
|
|
|
// call after auth success
|
|
|
|
virtual int ssf() const = 0;
|
2004-10-29 22:51:30 +00:00
|
|
|
|
2005-07-31 01:27:27 +00:00
|
|
|
// call after auth fail
|
|
|
|
virtual SASL::AuthCondition authCondition() const = 0;
|
|
|
|
|
|
|
|
// call after NeedParams
|
|
|
|
virtual SASL::Params clientParamsNeeded() const = 0;
|
2007-04-13 19:04:16 +00:00
|
|
|
virtual void setClientParams(const QString *user, const QString *authzid, const SecureArray *pass, const QString *realm) = 0;
|
2005-07-31 01:27:27 +00:00
|
|
|
|
|
|
|
// call after AuthCheck
|
|
|
|
virtual QString username() const = 0;
|
|
|
|
virtual QString authzid() const = 0;
|
|
|
|
|
2007-04-03 11:03:38 +00:00
|
|
|
Q_SIGNALS:
|
2005-07-31 01:27:27 +00:00
|
|
|
void resultsReady();
|
2004-10-31 10:04:44 +00:00
|
|
|
};
|
2004-10-29 22:51:30 +00:00
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT MessageContext : public Provider::Context
|
2005-05-06 07:13:23 +00:00
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
enum Operation
|
|
|
|
{
|
|
|
|
Encrypt,
|
|
|
|
Decrypt,
|
|
|
|
Sign,
|
|
|
|
Verify,
|
2005-05-10 07:04:41 +00:00
|
|
|
SignAndEncrypt
|
2005-05-06 07:13:23 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
MessageContext(Provider *p, const QString &type) : Provider::Context(p, type) {}
|
|
|
|
|
2005-05-10 07:04:41 +00:00
|
|
|
virtual bool canSignMultiple() const = 0;
|
|
|
|
|
2005-05-06 07:13:23 +00:00
|
|
|
virtual SecureMessage::Type type() const = 0;
|
|
|
|
|
|
|
|
virtual void reset() = 0;
|
|
|
|
virtual void setupEncrypt(const SecureMessageKeyList &keys) = 0;
|
2005-05-10 07:04:41 +00:00
|
|
|
virtual void setupSign(const SecureMessageKeyList &keys, SecureMessage::SignMode m, bool bundleSigner, bool smime) = 0;
|
2005-06-24 23:41:25 +00:00
|
|
|
virtual void setupVerify(const QByteArray &detachedSig) = 0;
|
2005-05-06 07:13:23 +00:00
|
|
|
|
|
|
|
virtual void start(SecureMessage::Format f, Operation op) = 0;
|
2005-06-24 23:41:25 +00:00
|
|
|
virtual void update(const QByteArray &in) = 0;
|
|
|
|
virtual QByteArray read() = 0;
|
2005-05-06 07:13:23 +00:00
|
|
|
virtual void end() = 0;
|
|
|
|
|
2005-05-10 07:04:41 +00:00
|
|
|
virtual bool finished() const = 0;
|
2005-05-07 02:00:45 +00:00
|
|
|
virtual void waitForFinished(int msecs) = 0; // -1 means wait forever
|
2005-05-06 07:13:23 +00:00
|
|
|
|
2005-05-10 07:04:41 +00:00
|
|
|
virtual bool success() const = 0;
|
|
|
|
virtual SecureMessage::Error errorCode() const = 0;
|
2005-06-24 23:41:25 +00:00
|
|
|
virtual QByteArray signature() const = 0;
|
2005-05-10 07:04:41 +00:00
|
|
|
virtual QString hashName() const = 0;
|
|
|
|
virtual SecureMessageSignatureList signers() const = 0;
|
2005-05-06 07:13:23 +00:00
|
|
|
|
2007-04-03 11:03:38 +00:00
|
|
|
Q_SIGNALS:
|
2005-05-06 07:13:23 +00:00
|
|
|
void updated();
|
|
|
|
};
|
|
|
|
|
2006-11-13 00:47:46 +00:00
|
|
|
class QCA_EXPORT SMSContext : public BasicContext
|
2005-05-06 07:13:23 +00:00
|
|
|
{
|
2006-11-13 00:47:46 +00:00
|
|
|
Q_OBJECT
|
2005-05-06 07:13:23 +00:00
|
|
|
public:
|
2006-11-13 00:47:46 +00:00
|
|
|
SMSContext(Provider *p, const QString &type) : BasicContext(p, type) {}
|
2005-05-06 07:13:23 +00:00
|
|
|
|
|
|
|
virtual void setTrustedCertificates(const CertificateCollection &trusted);
|
2007-05-14 23:16:31 +00:00
|
|
|
virtual void setUntrustedCertificates(const CertificateCollection &untrusted);
|
2005-06-25 20:25:52 +00:00
|
|
|
virtual void setPrivateKeys(const QList<SecureMessageKey> &keys);
|
|
|
|
virtual MessageContext *createMessage() = 0;
|
2005-05-06 07:13:23 +00:00
|
|
|
};
|
|
|
|
|
2004-10-28 04:28:20 +00:00
|
|
|
}
|
|
|
|
|
2003-07-02 03:34:11 +00:00
|
|
|
#endif
|